(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=(c) 2007 Andrea Cristaudo chris@html.it * (c) 2004 Stefano Mora stefano.mora@libero.it Title=Yahoo!Cinema Description=Get movie info from yahoo.it Site=http://it.movies.yahoo.com/ Language=IT Version=2.0.0 - 11.04.2007 Requires=3.5.0 Comments=**Changes**|Andrea Cristaudo: nuova versione del sito|Dino Librandi dinolib@libero.it: adapted to v.3.5.0 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 [Options] ***************************************************) program YahooCinema; var MovieName: string; TheMovieAddress: 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; // --- procedure AnalyzePage(Address: string); var Page: TStringList; LineNr: integer; BeginPos: integer; begin Page := TStringList.Create; Page.Text := GetPage(Address); LineNr := FindLine('

Nessun risultato trovato

', Page, 0); if LineNr <> -1 then ShowMessage('Film non trovato') else begin PickTreeClear; AddMoviesTitles(Page); if TheMovieAddress = '' then begin if PickTreeExec(Address) then begin SetField(fieldURL, Address); Page.Text := GetPage(Address); AnalyzeMoviePage(Page); end; end else begin SetField(fieldURL, TheMovieAddress); Page.Text := GetPage(TheMovieAddress); AnalyzeMoviePage(Page); end; end; // Page.Free; end; procedure AddMoviesTitles(Page: TStringList); var Line: string; MovieTitle, MovieAddress: string; BeginPos, EndPos: Integer; begin PickTreeAdd('Risultati ricerca per "' + MovieName + '":', ''); TheMovieAddress := '*'; Line := Page.GetString(FindLine('

Film

',Page,0)); Delete(Line,1,pos('
  • ',Line); MovieAddress := 'http://it.movies.yahoo.com' + copy(Line,BeginPos,EndPos-BeginPos); Delete(Line,1,EndPos + 1); MovieTitle := copy(Line, 1, pos('
  • ', Line)); HTMLRemoveTags(MovieTitle); HTMLDecode(Movietitle); PickTreeAdd(MovieTitle, MovieAddress); if pos('
  • 0 then Delete(Line,1,pos('
  • ', Page, 0); Line := Page.GetString(FirstLineNr); BeginPos := pos('

    ', Line); EndPos := pos(' ', Line); strTmp := copy(Line, BeginPos, EndPos-BeginPos); HTMLRemoveTags(strTmp); HTMLDecode(strTmp); // Setta lo stesso titolo: se l'originale sarą diverso, lo modificherą poi SetField(fieldTranslatedTitle, strTmp); SetField(fieldOriginalTitle, strTmp); // Ricava l'anno (FUNZIONA 2007!) Delete(Line, 1, pos('', Line)-1); HTMLRemoveTags(Line); HTMLDecode(Line); SetField(fieldYear, Line); // Titolo originale (FUNZIONA 2007!) LineNr := FindLine('
    ', Page, FirstLineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr); BeginPos := pos('
    ', Line); Line := copy(Line, BeginPos, EndPos-BeginPos); HTMLDecode(Line); BeginPos := pos('(', Line)+1; EndPos := pos(')', Line); if pos(')', Line) > 0 then begin SetField(fieldTranslatedTitle, copy(Line, 1, BeginPos-2)); SetField(fieldOriginalTitle, copy(Line, BeginPos, EndPos-BeginPos)); end else begin SetField(fieldTranslatedTitle, Line); SetField(fieldOriginalTitle, Line); end; end // Attori (FUNZIONA 2007!) LineNr := FindLine('
    Cast
    ', Page, FirstLineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr); BeginPos := pos('
    ', Line); EndPos := pos('
    ', Line); Line := copy(Line, BeginPos, EndPos-BeginPos); HTMLRemoveTags(Line); SetField(fieldActors, Line); end // Genere (FUNZIONA 2007!) LineNr := FindLine('
    Gener', Page, FirstLineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr); BeginPos := pos('
    Gener', Line) + 18; Delete(Line, 1, BeginPos); EndPos := pos('', Line) - 1; Line := copy(Line, 1, EndPos); if pos(',', Line) > 0 then Line := copy(Line, 0, pos(',', Line)-1) else if pos('/', Line) > 0 then Line := copy(Line, 0, pos('/', Line)-1); HTMLRemoveTags(Line); SetField(fieldCategory, Line); end // Regia (FUNZIONA 2007!) LineNr := FindLine('
    Regia
    ', Page, FirstLineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr); BeginPos := pos('
    ', Line); EndPos := pos('
    ', Line); Line := copy(Line, BeginPos, EndPos-BeginPos); HTMLRemoveTags(Line); SetField(fieldDirector, Line); end // Durata (FUNZIONA 2007!) LineNr := FindLine('
    Durata
    ', Page, FirstLineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr); BeginPos := pos('
    ', Line); EndPos := pos('
    ', Line); Line := copy(Line, BeginPos, EndPos-BeginPos); HTMLRemoveTags(Line); Durata := IntToStr(StrToInt(copy(Line, 0, 2), 1)*60 + StrToInt(copy(Line, 4, 2), 1)); SetField(fieldLength, Durata); end // Descrizione (FUNZIONA 2007!) LineNr := FindLine('Sinossi

    ', Page, FirstLineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr+1); if pos('

    TRAMA BREVE', Line) = 1 then begin showMessage(Line); Delete(Line, 1, 14); end; Delete(Line, 1, 3); if pos('p>', Line) > 0 then Line := copy(Line, 1, pos('p>', Line)+1); HTMLRemoveTags(Line); HTMLDecode(Line); SetField(fieldDescription, Line); end; // Locandina (FUNZIONA 2007!) if FindLine('noimg noposter', Page, FirstLineNr) = -1 then begin LineNr := FindLine('Recensioni

  • ', Page, FirstLineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr); BeginPos := pos('', Line); Line := 'http://it.movies.yahoo.com' + copy(Line, BeginPos, EndPos-BeginPos); setRecensione(Line); end //DisplayResults; Page.Free; end; // --- procedure setLocandina(Address: string; Sostituta: string); var Page: TStringList; LineNr: integer; BeginPos, EndPos: integer; Line: string; begin Page := TStringList.Create; Page.Text := GetPage(Address); LineNr := FindLine('
    ', Page, 1); if LineNr <> -1 then begin Line := Page.GetString(LineNr); BeginPos := pos('Recensione', Page, 1); if LineNr <> -1 then begin Counter := 0; repeat LineNr := LineNr + 1; Line := Page.GetString(LineNr); if pos('
    ', Line) > 0 then begin if pos('

    ', Line) > 0 then BeginPos := pos('

    ', Line)+3 else BeginPos := 0; Line := copy(Line, BeginPos, 5000); end else if pos('"', Line) = 1 then Line := #13#10#13#10 + copy(Line, 6, 5000) else Line := #13#10#13#10 + Line; HTMLDecode(Line); Commento := Commento + Line; Counter := Counter + 1; until (pos('Copyright ©', Line) > 0) OR (Counter > 5); Commento := StringReplace(Commento, '

    ', #13#10#13#10); HTMLRemoveTags(Commento); SetField(fieldComments, Commento); end; // Page.Free; end; // main begin if CheckVersion(3,5,0) then begin MovieName := GetField(fieldOriginalTitle); if MovieName = '' then MovieName := GetField(fieldTranslatedTitle); if Input('Yahoo!Cinema Import', 'Inserire il titolo del film:', MovieName) then AnalyzePage('http://it.movies.yahoo.com/dynamic/textsearch.html?sp=movie&p='+UrlEncode(MovieName)); end else ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)'); end.