This is a update for v1.1 that not longer work.
Here the code:
Code: Select all
(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=Legrad, FinderX
Title=AnimeFrozen(ES)
Description=cine
Site=www.frozen-layer.com
Language=es
Version=1.2.1
Requires=3.5.0
Comments=
License=
GetInfo=1
[Options]
***************************************************)
program AnimeFrozen;
var
MovieName: string;
MovieURL: string;
Cancel: integer;
//-----------------------------------------------
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 TextBetween(Str:string ; StartTag:string ; EndTag:string) : string;
var
initialPos: integer;
begin
initialPos := Pos(StartTag,Str);
if (initialPos = 0) then
result := ''
else begin
Delete(Str,1,initialPos + length(StartTag) - 1);
initialPos := Pos(EndTag,Str);
if initialPos = 0 then
result := Str
else
result := Copy(Str,1,initialPos - 1);
end;
end;
//------------------------------------------------
procedure AnalyzeForVariuosPages(Address:string);
var
lotPos, num: integer;
strPage, nextAddress: string;
nPage: char;
begin
strPage := GetPage(Address);
lotPos := Pos('<div class="pagination">',strPage);
PickTreeClear;
if (lotPos > 0 ) then begin
strPage := TextBetween(strPage,'<div class="pagination">','</div>');
nextAddress := Address;
num := 49;
repeat
AnalyzePage(nextAddress);
num := num + 1;
nPage := Chr(num);
nextAddress := Address + '?page=' + nPage;
lotPos := Pos('?page=' + nPage,strPage);
until (lotPos = 0);
end else
AnalyzePage(Address);
if (PickTreeExec(Address)) then begin
Cancel := 1;
AnalyzeMoviePage(Address);
end else
PickTreeClear;
end;
//------------------------------------------------
procedure AnalyzePage(Address:string);
var
strPage, movieAddr, movieTitle, movieID: string;
titleAlt, tagAlt: string;
titlePos: Integer;
begin
strPage := GetPage(Address);
titlePos := Pos('<a href="/animes/',strPage);
if (titlePos > 0) then begin
Delete(strPage, 1,titlePos - 1);
repeat
movieId := TextBetween(strPage,'<a href="/animes/','">');
movieAddr := 'http://www.frozen-layer.com/animes/' + movieId;
movieTitle := TextBetween(strPage,'<a href="/animes/' + movieId + '">','</a>');
titlePos := Pos('<a href="/animes/' + movieId,strPage);
Delete(strPage,1,titlePos + length('<a href="/animes/' + movieId));
tagAlt := '<a href="/animes/' + movieId + '" class="busqueda_titulo_alt">';
titlePos := Pos(tagAlt,strPage);
//The titles alt. is no use, but if you interested, here's title alt.
//NOTE: If you quit this loop, the title will not appear properly
while (titlePos > 0) do begin
titleAlt := TextBetween(strPage,tagAlt,'</a>');
Delete(strPage,1,titlePos + length(tagAlt));
titlePos := Pos(tagAlt,strPage);
end;
PickTreeAdd(UTF8Decode(movieTitle),movieAddr);
titlePos := Pos('href="/animes/',strPage);
until (titlePos = 0);
end;
end;
//------------------------------------------------
procedure AnalyzeMoviePage(Address:string);
var
page: TStringList;
lineNr, atPos, lastAlt: Integer;
item, user, comment, comments: string;
begin
comments := '';
// URL
SetField(fieldURL,Address);
page := TStringList.Create;
page.Text := GetPage(Address);
// Titulo Original
lineNr := FindLine('<h1 class=''head''>',page,0);
if (lineNr >= 0) then begin
item := page.GetString(lineNr + 1);
SetField(fieldOriginalTitle,UTF8Decode(Trim(item)));
end;
// Titulo Traducido - Titulo Alternativo
lineNr := FindLine('<h2 class=''titulo_alt''>',page,0);
if (lineNr >= 0) then begin
repeat
lastAlt := lineNr;
lineNr := FindLine('<h2 class=''titulo_alt''>',page,lastAlt + 1);
until (lineNr = -1);
item := page.GetString(lastAlt);
item := TextBetween(item,'<h2 class=''titulo_alt''>','</h2>');
SetField(fieldTranslatedTitle,UTF8Decode(Trim(item)));
end;
// Sinopsis - Resumen
lineNr := FindLine('<h3 class=''sinopsis''>Sinopsis</h3>', page, 0);
if (lineNr >= 0) then begin
item := Copy(page.Text,Pos('<h3 class=''sinopsis''>Sinopsis</h3>',page.Text),length(page.Text));
item := TextBetween(item,'<p class=''desc'' id=''sinopsis''>' + #13#10,#13#10 + '</p>');
HTMLRemoveTags(item);
SetField(fieldDescription,UTF8Decode(Trim(item)));
end;
// Picture
lineNr := FindLine('<div id="ani_img"><a href="http://flnimg.frozen-layer.com/images/anime/',page, 0);
if (lineNr >= 0) then begin
item := page.GetString(lineNr);
item := TextBetween(item,'<div id="ani_img"><a href="http://flnimg.frozen-layer.com/images/anime/','" title="');
GetPicture('http://flnimg.frozen-layer.com/images/anime/' + item);
end;
// Año
lineNr := FindLine('<strong>Año:</strong>',page,0);
if (lineNr >= 0) then begin
item := page.GetString(lineNr + 1);
SetField(fieldYear,Trim(item));
end;
// Director - Tipo
lineNr := FindLine('<strong>Tipo:</strong>', page, 0);
if (lineNr >= 0) then begin
item := page.GetString(lineNr + 1);
SetField(fieldDirector,UTF8Decode(Trim(item)));
end;
// Discos - Episodios
lineNr := FindLine('<strong>Numero de episodios:</strong>',page,0);
if (lineNr >= 0) then begin
item := page.GetString(lineNr + 1);
SetField(fieldDisks,Trim(item));
end;
// Productor - Estudio
lineNr := FindLine('<strong>Estudio:</strong>',page,0);
if (lineNr >= 0) then begin
item := page.GetString(lineNr + 1);
HTMLRemoveTags(item);
SetField(fieldProducer,UTF8Decode(Trim(item)));
end;
// Género
lineNr := FindLine('<strong>Genero:</strong>', page, 0);
if (lineNr >= 0) then begin
item := page.GetString(lineNr + 1);
HTMLRemoveTags(item);
SetField(fieldCategory,AnsiMixedCase(UTF8Decode(Trim(item)),' ,-'));
end;
// Comentarios
lineNr := FindLine('<a name=', page, 0);
if (lineNr >= 0) then begin
item := Copy(page.Text,Pos('<a href="/users/',page.Text),length(page.Text));
comments := '';
repeat
user := TextBetween(item,'/lista">','</a>');
comments := comments + user + ': ';
atPos := Pos('<a name=',item);
Delete(item,1,atPos);
comment := TextBetween(item,'<p>','</p>');
HTMLRemoveTags(comment);
comments := comments + comment + #13#10 + #13#10;
atPos := Pos('<a href="/users/',item);
until (atPos = 0);
HTMLDecode(comments);
SetField(fieldcomments,UTF8Decode(Trim(comments)));
end;
page.Free;
end;
//----------------------MAIN-PROGRAM-------------------------
begin
if (CheckVersion(3,5,0)=FALSe) then begin
ShowMessage('Se requiere Ant Movie Catalog versión 3.5 o superior');
exit;
end;
Cancel := 0;
MovieName := GetField(fieldOriginalTitle);
if MovieName = '' then
MovieName := GetField(fieldTranslatedTitle);
repeat
if (Input('AnimeFrozen', 'Buscar:', MovieName)) then
AnalyzeForVariuosPages('http://www.frozen-layer.com/buscar/anime/' + UrlEncode(MovieName))
else
Cancel := 1;
until (Cancel = 1);
end.