(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=Andrea Cristaudo (achris@tiscalinet.it) & folgui (folgui@bigfoot.com) Title=Yahoo!Cinema Spain Description=Movie importation script for Yahoo!Cinema Spain Site=http://es.movies.yahoo.com Language=ES Version=1.3 (23 Sep 2005) Requires=3.5.0 Comments=Updated by folgui for Spanish Database Support and more info importing. Reported/fixed bug by enriquevagu, thanks!| 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] LargePic=1|1|0=Importa la imagen pequeña|1=Importa una imagen mayor ImportarDuracion=0|0|0=No importa la duración de la película|1=Importa la duración de la película ***************************************************) 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; function TextBetween(var S: string; StartTag: string; EndTag: string): string; var InitialPos: Integer; begin InitialPos := Pos(StartTag, S); Delete(S, 1, InitialPos + Length(StartTag) - 1); InitialPos := Pos(EndTag, S); result := copy(S, 1, InitialPos - 1); Delete(S, 1, InitialPos + 1); end; procedure AnalyseLargePicPage(Address: string); var Page: TStringList; LineNr: integer; Line: string; ImageURL: string; begin Page := TStringList.Create; Page.Text := GetPage(Address); LineNr := FindLine('Resultados de búsqueda', 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 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 AnalyzeMoviePage(Page: TStringList); var Fine: Integer; EndActors: Integer; EndProducers: Integer; EndMusics: Integer; EndDirectors: Integer; EndPhotographers: Integer; EndWriters: Integer; EndRating: Integer; strActors: string; strComments: string; strProducers: string; strMusics: string; strDirectors: string; strPhotographers: string; strWriters: string; Line: string; ImageURL: string; strTemp: string; LineNr: Integer; BeginPos, EndPos: Integer; Field: integer; irate: integer; begin Page.Text := StringReplace(Page.Text, ' ', ''); Fine := 0; LineNr := FindLine('', Page, 0); if LineNr > -1 then begin //Translated Title Line := Page.GetString(LineNr); HTMLRemoveTags(Line); Line := StringReplace(Line,'"',''); SetField(fieldTranslatedTitle,Line); repeat LineNr := LineNr + 1; Line := Page.GetString(LineNr); //GetPicture of Movie if GetOption('LargePic') = 0 then // Import Small Picture begin if pos('html">', Line) + 1); GetPicture(Line); end end // Import Large Picture else begin if pos('border=0 alt="Poster de ', Line) <> 0 then begin ImageURL := TextBetween(Line, 'País y año:',Line) <> 0 then begin LineNr := LineNr + 1; Line := Page.GetString(LineNr); SetField(fieldCountry, Line); LineNr := LineNr + 1; Line := Page.GetString(LineNr); SetField(fieldYear, copy(Line, 2, 4)); end //Category and Length else if pos('Género:', Line) <> 0 then begin HTMLRemoveTags(Line); Delete(Line, 1, 7); SetField(fieldCategory, Line); LineNr := LineNr + 1; Line := Page.GetString(LineNr); HTMLRemoveTags(Line); if GetOption('ImportarDuracion') = 1 then begin Delete(Line, 1, 9); SetField(fieldLength, copy(Line, 1, 3)); If GetField(fieldLength) = '' then SetField(fieldLength, copy(Line, 1, 2)); end end //Rating //Yahoo cinema has removed the stars // else if pos('Crítica:', Line) <> 0 then // begin // irate := 0; // LineNr := LineNr + 1; // Line := Page.GetString(LineNr); // EndRating := pos('', Line); // while (EndRating = 0) and (irate < 5) do // begin // irate := irate + 1; // LineNr := LineNr + 1; // Line := Page.GetString(LineNr); // EndRating := pos('', Line); // end // SetField(fieldRating, IntToStr(irate*2)); // end //Description else if pos('Sinopsis:', Line) <> 0 then begin LineNr := LineNr + 2; Line := Page.GetString(LineNr); HtmlRemoveTags(Line); SetField(fieldDescription, Line); end //List of Actors else if pos('Actor / Actriz:', Line) <> 0 then begin strActors := ''; LineNr := LineNr + 2; Line := Page.GetString(LineNr); EndActors := pos('', Line); while EndActors = 0 do begin HtmlRemoveTags(Line); if strActors = '' then strActors := Line else strActors := strActors + ' ' + Line; LineNr := LineNr + 1; Line := Page.GetString(LineNr); EndActors := pos('', Line); end If GetField(fieldActors) = '' then SetField(fieldActors, strActors) else SetField(fieldActors, GetField(fieldActors) + ', ' + strActors); end else if pos('Montador:', Line) <> 0 Then begin LineNr := LineNr + 2; Line := Page.GetString(LineNr); HtmlRemoveTags(Line); strComments := 'Montaje: ' + Line + #13#10; end // Music for Comments else if pos('Musica:', Line) <> 0 then begin strMusics := ''; LineNr := LineNr + 2; Line := Page.GetString(LineNr); EndMusics := pos('', Line); while EndMusics = 0 do begin HtmlRemoveTags(Line); if strMusics = '' then strMusics := Line else strMusics := strMusics + ' ' + Line; LineNr := LineNr + 1; Line := Page.GetString(LineNr); EndMusics := pos('', Line); end strComments := strComments + 'Música: ' + strMusics + #13#10; end // Aditional Music Author for Comments else if pos('Compositor (música adicional):', Line) <> 0 then begin LineNr := LineNr + 2; Line := Page.GetString(LineNr); HtmlRemoveTags(Line); strComments := strComments + 'Compositor: ' + Line + #13#10; end //Director else if pos('Director:', Line) <> 0 then begin strDirectors := ''; LineNr := LineNr + 2; Line := Page.GetString(LineNr); EndDirectors := pos('', Line); while EndDirectors = 0 do begin HtmlRemoveTags(Line); if strDirectors = '' then strDirectors := Line else strDirectors := strDirectors + ' ' + Line; LineNr := LineNr + 1; Line := Page.GetString(LineNr); EndDirectors := pos('', Line); end SetField(fieldDirector, strDirectors); end //Photography for Comments else if pos('Fotografía:', Line) <> 0 then begin strPhotographers := ''; LineNr := LineNr + 2; Line := Page.GetString(LineNr); EndPhotographers := pos('', Line); while EndPhotographers = 0 do begin HtmlRemoveTags(Line); if strPhotographers = '' then strPhotographers := Line else strPhotographers := strPhotographers + ' ' + Line; LineNr := LineNr + 1; Line := Page.GetString(LineNr); EndPhotographers := pos('', Line); end strComments := strComments + 'Fotografía: ' + strPhotographers + #13#10; end //Screenplay Writer for Comments else if (pos('Guionista:', Line) <> 0) Or (pos('Guión', Line) <> 0) then begin strWriters := ''; LineNr := LineNr + 2; Line := Page.GetString(LineNr); EndWriters := pos('', Line); while EndWriters = 0 do begin HtmlRemoveTags(Line); if strWriters = '' then strWriters := Line else strWriters := strWriters + ' ' + Line; LineNr := LineNr + 1; Line := Page.GetString(LineNr); EndWriters := pos('', Line); end strComments := strComments + 'Guionista: ' + strWriters + #13#10; end //Producer else if (pos('Producción:', Line) <> 0) Or (pos('Productor', Line) <> 0) then begin strProducers := ''; LineNr := LineNr + 2; Line := Page.GetString(LineNr); EndProducers := pos('', Line); while EndProducers = 0 do begin HtmlRemoveTags(Line); if strProducers = '' then strProducers := Line else strProducers := strProducers + ' ' + Line; LineNr := LineNr + 1; Line := Page.GetString(LineNr); EndProducers := pos('', Line); end SetField(fieldProducer, strProducers); end // More Comments else if pos('Notas de Producción', Line) <> 0 then begin LineNr := LineNr + 2; Line := Page.GetString(LineNr); strTemp := TextBetween(Line, '', 'Resultado de películas',Page,LineNr); LineNr := LineNr + 3; PickTreeAdd('Resultados encontrados:',''); while LineNr > 2 do begin Line := Page.GetString(LineNr); BeginPos := pos('
  • ',Line); MovieAddress := copy(Line,BeginPos,EndPos-BeginPos); Delete(Line,1,EndPos + 1); BeginPos := 1; EndPos := -1; MovieTitle := Line; HTMLRemoveTags(MovieTitle); HTMLDecode(Movietitle); PickTreeAdd(MovieTitle, MovieAddress); NewLineNr := FindLine('