e-pipoca

If you made a script you can offer it to the others here, or ask help to improve it. You can also report here bugs & problems with existing scripts.
Post Reply
edumadera
Posts: 2
Joined: 2013-12-20 18:51:20

e-pipoca

Post by edumadera »

Script Site "e-Pipoca" stopped working is there any possibility to be tidy?
Arturo
Posts: 52
Joined: 2013-04-11 16:28:52

Post by Arturo »

Try with this one. I'm nor sure

Code: Select all

(***************************************************

Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/

[Infos]
Authors=Arturo
Title=ePipoca-A
Description=Movie importation script for e-Pipoca
Site=www.epipoca.com.br
Language=BR
Version=0.1
Requires=3.5.1
Comments=Test Version
License=This program is free software; you can redistribute it and/or modify it under the  terms of the GNU General Public License as published by the Free Software Foundation;  either version 2 of the License, or (at your option) any later version. |
GetInfo=1
RequiresMovies=1

[Options]

[Parameters]

***************************************************)

program EPipocaA;

var
  MovieName: string;

function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
var
   i: Integer;
begin
   Result := -1;
   if StartAt < 0 then StartAt := 0;
   for i := StartAt to List.Count-1 do
      if Pos(Pattern, List.GetString(i)) <> 0 then
      begin
         Result := i;
         Break;
      end;
end;


Function XTrim(S: string) : string;
var
   i, lenS,o: Integer;
   c: char;
   Sout: string;
begin
    Sout := '';
    lenS := Length(S);
    for i := 1 to LenS do
    begin
       c := Copy(S, i, 1);
       o:= Ord(c);
       if o < 32 then c := ' ';
       Sout:=Sout+ c;
    end;
    Sout := Trim(Sout);
    Result := Sout;
end;

function ClUTF8(S: string):string;
begin
  S:= UTF8Decode(S);
  S:= StringReplace(S, '¹', '');
  S:= StringReplace(S, 'º', '');
  S:= StringReplace(S, '(1)', '');
  S:= StringReplace(S, '(2)', '');
  S:= StringReplace(S, '(3)', '');
  S:= StringReplace(S, '(4)', '');
  S:= StringReplace(S, '(5)', '');
  S:= StringReplace(S, '(6)', '');
  S:= StringReplace(S, '(7)', '');
  Result := S;
end;

function TextBetween(S: string; StartTag: string; EndTag: string): string;
var
   ini, fin, lenS: Integer;
begin
   Result := '';
   lenS := Length(S);
   ini := Pos(StartTag, S);
   if ini <> 0 then
   begin
      ini := ini + Length(StartTag);
      S:= Copy(S,ini,lenS-ini+1);
      ini:=1;
      fin := Pos(EndTag, S);
      if (fin <> 0) and (fin > ini) then
          Result := Copy(S, ini, fin - ini);
   end;
end;

function TextBetweenPos(S: string; StartTag: string; EndTag: string; PosStr:String): string;
var
   Pini, ini, fin, lenS: Integer;
begin
   Result := '';
   lenS := Length(S);
   ini:= Pos(PosStr,S);
   ini:= ini+Length(PosStr);
   if ini <> 0 then
   begin
      S:= Copy(S,ini,lenS-ini+1);
      lenS := Length(S);
      ini := Pos(StartTag, S);
      if ini <> 0 then
      begin
         S:= Copy(S,ini,lenS-ini+1);
         ini := 1 + Length(StartTag);
         fin := Pos(EndTag, S);
         if (fin <> 0) and (fin > ini) then
            Result := Copy(S, ini, fin - ini);
      end
      else
         Result := '';
   end;
end;


procedure AnalyzePage(Address: string);
var
  Page: TStringList;
  LineNr : Integer;
  Line, MovieUrl: string;
  MovieTitle, MovieOriginalTitle: string;
  Year: string;

begin
  Page := TStringList.Create;
  Page.Text := PostPage(Address, 'buscaTexto='+ UTF8Encode(Moviename)+'&buscaTipo=filmes');
  PickTreeClear;
  LineNr := 0;
  if (pos('<p>Nenhum resultado encontrado', Page.Text) = 0) then
  begin
    while true do
    begin
       //URL
       LineNr := FindLine('href="filmes/ficha', Page, LineNr + 1);
       Line := Page.GetString(LineNr);
       if Line = '' then break;
       MovieUrl:= TextBetween(line, 'href="', '"');
       // Translated Title
       LineNr := FindLine(MovieUrl, Page, LineNr + 1);
       Line := Page.GetString(LineNr);
       MovieTitle := ClUTF8(TextBetweenPos(Line,'>','<',MovieUrl));
       // Original Title
       LineNr := FindLine('<td width="20%">', Page, LineNr + 1);
       Line := Page.GetString(LineNr);
       MovieOriginalTitle := ClUTF8(TextBetweenPos(Line,'>','<',MovieUrl));
       // Year
       LineNr := FindLine('href="busca/filmes/ano', Page, LineNr + 1);
       Line := Page.GetString(LineNr);
       Year :=  TextBetweenPos(Line,'>', '<','href="busca/filmes/ano');
       PickTreeAdd(MovieTitle+ ' ['+MovieOriginalTitle+'] '+' ('+Year+')', 'http://epipoca.com.br/' + MovieUrl);
    end;
    if PickTreeExec(Address) then
      AnalyzeMoviePage(Address);
  end
  else
    showmessage('Filme não encontrado');
  Page.Free;
end;


procedure AnalyzeMoviePage(Address: string);
var
  Page: TStringList;
  Line, valor : string;
  StrActors: string;
  LineNr: Integer;
  lens, FinB: Integer;
  StrWritter: string;
  StrPhotografer: string;
  StrProducers: string;
  StrMusic: string;
  Comments: string;
begin
  // URL
  SetField(fieldURL, Address);
  
  Page := TStringList.Create;
  Page.Text := GetPage(Address);

  // Image
  LineNr := FindLine('images/filmes/poster', Page, 0);
  valor := TextBetween(Page.Text, 'images/filmes/poster/', '"');
  if length(valor) > 0 then
  begin
    valor := 'http://epipoca.com.br/images/filmes/poster/' + valor;
    GetPicture(valor);
  end;

  // Translated Title
  LineNr := FindLine('<div id="filmeTitulo">', Page, 0);
  Line := Page.GetString(LineNr+1);
  valor := TextBetween(Line, '<h1>', '</h1>');
  SetField(fieldTranslatedTitle, ClUTF8(valor));
  
  // Original Title
  Line := Page.GetString(LineNr+2);
  valor := TextBetween(Line, '<h2>(', ',');
  SetField(fieldOriginalTitle, ClUTF8(valor));

  // Country
  valor := TextBetweenPos(Line, '>', '</a>','href="busca/filmes/pais');
  SetField(fieldCountry, ClUTF8(valor));
  
  //Year
  valor := TextBetweenPos(Line, '>', '</a>','href="busca/filmes/ano');
  SetField(fieldYear, valor);

 // Description
  LineNr := FindLine('<p>', Page, LineNr+1);
  Line := Page.GetString(LineNr);
  valor := TextBetween(Line, '<p>', '</p>');
  SetField(fieldDescription,ClUTF8(valor));

   // Rating
  LineNr := FindLine('<p><strong>Cotação:</strong>', Page, LineNr+1);
  Line := Page.GetString(LineNr);
  valor := TextBetween(Line, '<p><strong>Cotação:</strong>', ' (');
  SetField(fieldRating, valor);

  // Category
  LineNr := FindLine('Gênero', Page, LineNr+1);
  Line := Page.GetString(LineNr);
  valor := TextBetweenPos(Line, '>', '</a>','href="busca/filmes/genero');
  SetField(fieldCategory, ClUTF8(valor));

  // Length
  valor := TextBetweenPos(Line, '</strong>', 'min.</p>','Duração');
  valor := XTrim(valor);
  SetField(fieldLength, ClUTF8(valor));

  // Producer Company
  LineNr := FindLine('Produtora(s):', Page, LineNr+1);
  Line := Page.GetString(LineNr);
  valor := TextBetweenPos(Line, '>', '</a>','href="produtora_distribuidora');
  SetField(fieldProducer, ClUTF8(valor));

  // Director
  LineNr := FindLine('<p><h3>Diretor', Page, LineNr+1);
  Line := Page.GetString(LineNr+1);
  valor := TextBetween(Line, '>', '</a>');
  SetField(fieldDirector, ClUTF8(valor));

  // * Writter
  LineNr := FindLine('<h3>Roteirista', Page, LineNr+1);
  Line := Page.GetString(LineNr+1);
  valor := TextBetween(Line, '>', '</a>');
  if (CheckVersion(4,2,0) = true) then
  begin
     SetField(fieldWriter, ClUTF8(valor));
     StrWritter:='';
  end
  else  StrWritter:= ClUTF8(valor);

   // Actors
  LineNr := FindLine('<p><h3>Elenco', Page, LineNr+1);
  LineNr := LineNr+1;
  StrActors :='';
  while true do
  begin
     Line := Page.GetString(LineNr);
     valor := TextBetweenPos(Line, '>', '</a>','gente/ficha');
     if valor = '' then break;
     StrActors := StrActors+ClUTF8(valor);
     LineNr := LineNr+1;
     Line := Page.GetString(LineNr);
     valor := TextBetween(Line, '...... ', '<br/>');
     if valor = '' then
        valor := TextBetween(Line, '...... ', '</span></p>');
     if valor <> '' then
     begin
        valor := XTrim(valor);
        StrActors := StrActors +' ('+ClUTF8(valor)+')';
     end;
     StrActors := StrActors +  #13#10;
     SetField(fieldActors, StrActors);
  end;

  // * Phographer
  LineNr := FindLine('<h3>Fotógrafo', Page, LineNr+1);
  Line := Page.GetString(LineNr+1);
  valor := TextBetween(Line, '>', '</a>');
  StrPhotografer:= ClUTF8(valor);

  // * Producer
  LineNr := FindLine('<h3>Produtor(es)', Page, LineNr+1);
  LineNr := LineNr+1;
  while true do
  begin
     Line := Page.GetString(LineNr);
     valor := TextBetweenPos(Line, '>', '</a>','gente/ficha/');
     if valor = '' then break;
     StrProducers:= StrProducers+ClUTF8(valor)+', ';
     LineNr := LineNr+1;
   end ;
   
   // * Music
   LineNr := FindLine('Compositor(es) /', Page, LineNr+1);
   Line := Page.GetString(LineNr+1);
   valor := TextBetween(Line, '>', '</a>');
   if (CheckVersion(4,2,0) = true) then
   begin
        SetField(fieldComposer, ClUTF8(valor));
        StrMusic:='';
   end
   else  StrMusic:= ClUTF8(valor);

   // Comments
   Comments:= '';
   if StrWritter <>'' then
      Comments:= 'Roteirista: ' +  StrWritter+#13#10;
   if StrPhotografer <> '' then
      Comments:= Comments + 'Cinematographer: '+ StrPhotografer+#13#10;
   if StrProducers <> '' then
      Comments:= Comments + 'Produtor: '+ StrProducers+#13#10;
   if StrMusic <> '' then
      Comments:= Comments + 'Compositor: ' + StrMusic+#13#10;
   SetField(fieldComments, Comments);
   Page.Free;
end;



begin
  if (CheckVersion(3,5,0) = false) then
   begin
      ShowMessage('É necessária uma versão 3.5 ou maior do Ant Movie Catalog');
      exit;
   end;
  MovieName := GetField(fieldOriginalTitle);
  if Length(MovieName) = 0 then
     MovieName := GetField(fieldTranslatedTitle);

  if Input('Importar do e-Pipoca', 'Escreva o nome do filme:', MovieName) then
    AnalyzePage('http://epipoca.com.br/busca');
end.
Post Reply