e-pipoca
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.