(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=L. Francisco, Pivello, Zandal, Fulvio53s03, ... Title=FilmUP Description=Get movie info from LeoFilmUP.it Site=http://filmup.leonardo.it Language=IT Version=1.0.5 - 04.11.2008 Requires=3.5.0 Comments=**Changes**|Fulvio53s03: shows years in picklist|Pivello: query URL changed|Zandal: sistemato puntamento a COMMENTS|Pivello: Film site URL selectable instead of FilmUp page URL|dinolib: adapted to v.3.5.0 and little bugfix | ABNormal restarted...|14.04.2005: Fixed infinite loop if description field missing (Pivello)|16.09.2005: Look for new Main Actors data into page; if present select this instead of Cast data (P)|16.09.2005: Added ActorPlusCast option (P)|03.10.2005 ABNormal: Big Posters and Comments again|14.01.2006 ABNormal: Trailer URL License=* The source code of the script can be used in |* another program only if full credits to |* script author and a link to Ant Movie Catalog |* website are given in the About box or in |* the documentation of the program | GetInfo=1 [Options] AlternateURL=0|0|0=Use the FilmUP web site for FieldURL|1=Try to use ufficial movie web site for FieldURL MezzoVoto=1|1|0=Integer Ratings|1=Ratings with ,5 ActorsPlusCast=0|0|0=Get Main Actors data (if present) otherwise get Cast field|1=Get Main Actors data (if present) and Cast data TrailerURL=0|0|0=Normal URL page|1=Trailer URL page (if found) Poster=0|0|1=Download full-res Poster|0=Download tiny Poster ***************************************************) program LeonardoFilmUP; uses StringUtils1; var MovieName: string; TheMovieAddress: string; comm: String; procedure AnalyzePage(Address: string); var Page: TStringList; LineNr: integer; BeginPos: integer; begin Page := TStringList.Create; Page.Text := GetPage(Address); LineNr := FindLine('Ordina risultati per', Page, 0); if LineNr = -1 then begin SetField(fieldURL, Address); AnalyzeMoviePage(Page); end else begin PickTreeClear; AddMoviesTitles(Page); if TheMovieAddress='' then begin if PickTreeExec(Address) then AnalyzePage(Address); end else begin SetField(fieldURL, TheMovieAddress); Page.Text := GetPage(TheMovieAddress); AnalyzeMoviePage(Page); end; end; Page.Free; end; procedure AnalyzeMoviePage(Page: TStringList); var Line, PreviousLine, NomeHtml, sTemp: string; LineNr,PrevLineNr, BeginPos, EndPos, Field: Integer; IsMainActors: boolean; begin IsMainActors := false; sTemp := ''; LineNr := FindLine('', Page, 0); if LineNr > -1 then begin //Translated Title Line := Page.GetString(LineNr); HTMLRemoveTags(Line); SetField(fieldTranslatedTitle, Line); repeat //Look for next info repeat LineNr := LineNr + 1; Line := Page.GetString(LineNr); HTMLRemoveTags(Line); until (Line<>'') or (LineNr > Page.Count); // Test if 'Trama:' missing if ((PreviousLine = 'Data di uscita: ') or (PreviousLine = 'Uscita prevista: ')) and (Line <> 'Trama:') then if (copy(Line,1,6)<>'Trama:') then Line := 'Trama:' + Line; PreviousLine := Line; //Look for type of line if Line = 'Titolo originale: ' then Field := fieldOriginalTitle else if Line = 'Regia: ' then Field := fieldDirector else if Line = 'Produzione: ' then Field := fieldProducer else if Line = 'Nazione: ' then Field := fieldCountry else if Line = 'Genere: ' then Field := fieldCategory else if Line = 'Anno: ' then Field := fieldYear else if Line = 'Durata: ' then Field := fieldLength //Special case: get number only else if Line = 'Sito ufficiale: ' then Field := fieldURL else if Line = 'Attori protagonisti: ' then begin Field := fieldActors; IsMainActors := true; end else if Line = 'Cast: ' then Field := fieldActors else if Line = 'Trama:' then Field := fieldDescription else Field := 0; // I have to add this test, for sometimes the description // is on the same line as the tag 'Trama' if (copy(Line,1,6)='Trama:') and (length(Line)>6) then begin Field := fieldDescription; Delete(Line,1,6); HTMLDecode(Line); end else begin //Get values LineNr := LineNr + 1; Line := Page.GetString(LineNr); HTMLRemoveTags(Line); HTMLDecode(Line); //Special case: Length if Field = fieldLength then Line := copy(Line,1,length(Line)-1); end; //Alternative URL case if (field = fieldURL) then begin if (Length(Line) = 0) or (GetOption('AlternateURL')=0) then // if WEB url missing or explicitly requested... Line := GetField(fieldURL) // ...restore FilmUp URL else Line := 'http://'+Line; end; if Field<>0 then begin if Field = fieldActors then begin if IsMainActors then // Remember Main Actors (if present) begin sTemp := Line; IsMainActors := false; end else begin if ((GetOption('ActorsPlusCast')=1) and (sTemp<>'')) then Line := sTemp + ' Cast: ' + Line else if sTemp <> '' then Line := sTemp; SetField(Field,Line); end; end else SetField(Field,Line); end; until (Field=fieldDescription) or (LineNr > Page.Count); end; PrevLineNr := LineNr; //Trailer if GetOption('TrailerURL')=1 then begin LineNr := FindLine('">Trailer', Page, PrevLineNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); if Pos('size="2"> 0 then Delete(Line,1,pos('size="2"> 0 then Delete(Line,1,pos('DVD',Line)); Delete(Line,1,pos('href="',Line)+5); NomeHtml := Copy(Line,1,pos('"',Line)-1); if (copy(NomeHtml,1,1)<>'/') then begin NomeHtml := '/' + NomeHtml; end; NomeHtml :='http://filmup.leonardo.it' + NomeHtml; comm := textbetween(GetPage(NomeHtml),'Recensione', Page, PrevLineNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); if Pos('Scheda', Line) <> 0 then Delete(Line,1,pos('Scheda',Line)); if Pos('DVD', Line) <> 0 then Delete(Line,1,pos('DVD',Line)); Delete(Line,1,pos('href="',Line)+5); NomeHtml :=Copy(Line,1,pos('"',Line)-1); if (copy(NomeHtml,1,1)<>'/') then begin NomeHtml := '/' + NomeHtml; end; comm := textbetween(GetPage(NomeHtml),'',''); comm := textafter(comm,'
'+#13#10); HTMLRemoveTags(comm); SetField(fieldComments,comm); PrevLineNr := LineNr; end; //Rating LineNr := FindLine('">Opinioni
', Page, PrevLineNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Delete(Line,1,pos('Recensione',Line)); Delete(Line,1,pos('href="',Line)+5); Line := GetLineFromOtherPage(Copy(Line,1,pos('"',Line)-1),'
- 0 then Line := Copy(Line,1,pos('.',Line)-1); SetField(fieldRating,Line); end; PrevLineNr := LineNr; end; //Picture begin LineNr := FindLine(' -1 then begin Line := Page.GetString(LineNr); Delete(Line,1,pos('href="posters/locp/',Line)+5); Line := GetLineFromOtherPage('http://filmup.leonardo.it/'+Copy(Line,1,pos('"',Line)-1),' -1 then result := Page.GetString(LineNr); Page.Free; end; procedure GetComments(address: string); var Page: TStringList; BeginLine: integer; EndLine: integer; i: integer; Line, Comments: string; begin Page := TStringList.Create; Page.Text := GetPage(Address); BeginLine := FindLine('RECENSIONI', Page, 0); BeginLine := FindLine('', Page, BeginLine); EndLine := FindLine('Scrivi la tua recensione!

', Page, BeginLine); for i:= BeginLine+1 to EndLine-1 do begin Line := Page.GetString(i); Line := StringReplace(Line, '
', #13#10); Line := StringReplace(Line, #13#10#32, #13#10); HTMLRemoveTags(Line); HTMLDecode(Line); Comments := Comments + Line; end; SetField(fieldComments, Comments); Page.Free; end; // procedure AddMoviesTitles(Page: TStringList); var LineNr: Integer; Line: string; MovieTitle, MovieAddress, MovieAnno: string; BeginPos, EndPos: Integer; begin LineNr := 0; LineNr := FindLine('FilmUP - Scheda: ',Page,LineNr); while LineNr > -1 do begin MovieAddress := 'http://filmup.leonardo.it/sc_' + TextBetween((Page.GetString(LineNr-1)), '_', '.') + '.htm'; Line := Page.GetString(LineNr); MovieTitle := TextAfter(Page.GetString(LineNr), 'Scheda: '); While pos (' 0 Do begin MovieTitle := TextBefore(MovieTitle, ''); end; While pos (' 0 Do begin MovieTitle := TextBefore(MovieTitle, ''); end; // Inizio Fulvio53s03 LineNr := FindLine('Anno: ',Page,LineNr); Line := Page.GetString(LineNr); // Showmessage ('Line ***' + Line + '***') MovieAnno := TextAfter(Page.GetString(LineNr), 'Anno: '); // Showmessage ('MovieAnno ***' + MovieAnno + '***') If pos ('Anno: ', Line) > 0 then begin; MovieAnno := TextBefore(MovieAnno, ' Genere: ', '') + TextAfter(MovieAnno, 'Anno: '); // showmessage ('Anno***' + MovieAnno + '***'); end else MovieAnno := ' '; // Fine Fulvio53s03 HTMLRemoveTags(MovieTitle); HTMLDecode(Movietitle); LineNr := FindLine('FilmUP - Scheda:',Page,LineNr+1); MovieTitle := MovieTitle + ' [' + MovieAnno + ']'; PickTreeAdd(MovieTitle, MovieAddress); if TheMovieAddress='*' then TheMovieAddress := MovieAddress else TheMovieAddress := ''; end; LineNr := FindLine('Successivo',Page,LineNr); Line := Page.GetString(LineNr); BeginPos := pos('HREF',Line); if BeginPos>0 then begin Delete(Line,1,BeginPos + 5); EndPos := pos('"',Line); MovieAddress := copy(Line,1,EndPos-1); PickTreeMoreLink(MovieAddress); end; if TheMovieAddress='*' then TheMovieAddress := ''; end; // // ----------------------------- // Questo č il main dello script // ----------------------------- begin if CheckVersion(3,5,0) then begin TheMovieAddress := '*'; MovieName := StringReplace(GetField(fieldTranslatedTitle), '.', ' '); if MovieName = '' then MovieName := StringReplace(GetField(fieldOriginalTitle), '.', ' '); While pos ('[', MovieName) > 0 Do begin MovieName := TextBefore(MovieName, '[', '') + TextAfter(MovieName, ']'); end; if Input('FilmUP Import', 'Digita il titolo del film:', MovieName) then begin AnalyzePage('http://filmup.leonardo.it/cgi-bin/search.cgi?q='+UrlEncode(MovieName)+'&ul=%25%2Fsc_%25'); end; end else ShowMessage('Questo script richiede una versione pių nuova di Ant Movie Catalog (almeno la versione 3.5.0)'); end.