Page 1 of 1

[REL][ES] AnimeFrozen v1.2.1 update at 2010

Posted: 2010-05-03 17:30:39
by FinderX
Hi!

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.

Posted: 2010-05-06 19:57:44
by antp
Thanks