As usual, i've tested with a few movie, so if you find bug/errors let me know!!
Code: Select all
(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=Gigibop (luca.marcato@gmail.com)
Title=SediciFilm
Description=Get movie info from http://www.sedicifilm.it
Site=http://www.sedicifilm.it
Language=IT
Version=1.0 - 28.08.2008
Requires=3.5.0
Comments=Changes|28.08.2008 v. 1.0.0: First version (Gigibop)||
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]
***************************************************)
program SediciFilm;
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('<br><h2>Film</h2><br>', 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;
function RemoveTabs(Pattern: string): string;
begin
repeat
Delete(Pattern, 1, 1);
until ord(copy(Pattern, 1, 1)) <> 9;
result := Pattern;
end;
function TranslateSpecial(str1: string) :string;
begin
str1 := StringReplace(str1, '&', '&');
HTMLDecode(str1);
result := Trim(str1);
end;
procedure AnalyzeMoviePage(Page: TStringList);
var
Line, PreviousLine, NomeHtml, Actors,Category, sTemp: string;
LineNr,PrevLineNr, BeginPos, EndPos, Field: Integer;
BeginLine: integer;
EndLine: integer;
i: integer;
Languages: string;
IsMainActors: boolean;
begin
IsMainActors := false;
sTemp := '';
// cerco il titolo tradotto e il titolo originale
LineNr := FindLine('<div class="boxhome">', Page, 0);
if LineNr > -1 then
begin
//Titolo tradotto
LineNr:= LineNr + 1;
Line := Page.GetString(LineNr);
Line := RemoveTabs(Line);
HTMLRemoveTags(Line);
Line := TranslateSpecial(Line);
Line := AnsiLowerCase(Line);
Line := AnsiUpFirstLetter(Line);
SetField(fieldTranslatedTitle, Line);
SetField(fieldOriginalTitle, Line);
end;
//Regia
LineNr := FindLine('<b>Regia:', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr + 2);
Line := RemoveTabs(Line);
HTMLRemoveTags(Line);
Line := TranslateSpecial(Line);
SetField(fieldDirector,Line);
end;
LineNr := 0;
// Cast
LineNr := FindLine('<b>Cast:', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr + 2);
Line := RemoveTabs(Line);
HTMLRemoveTags(Line);
Line := TranslateSpecial(Line);
SetField(fieldActors,Line);
end;
LineNr := 0;
// Genere
LineNr := FindLine('<b>Genere:', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr + 2);
Line := RemoveTabs(Line);
HTMLRemoveTags(Line);
Line := TranslateSpecial(Line);
SetField(fieldCategory,Line);
end;
LineNr := 0;
// anno di uscita
LineNr := FindLine('<b>Anno:', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr + 2);
Line := RemoveTabs(Line);
HTMLRemoveTags(Line);
Line := TranslateSpecial(Line);
SetField(fieldYear,Line);
end;
LineNr := 0;
// durata
LineNr := FindLine('<b>Durata:', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr + 2);
Line := StringReplace(Line, '''', ' ');
Line := RemoveTabs(Line);
HTMLRemoveTags(Line);
Line := TranslateSpecial(Line);
SetField(fieldLength,Line);
end;
// descrizione
Languages := '';
LineNr := FindLine('<b>Trama:', Page, 0);
if LineNr > -1 then
begin
BeginLine := LineNr + 1;
EndLine := FindLine('<b>Genere:', Page, BeginLine) -1 ;
for i:= BeginLine+1 to EndLine-1 do
begin
Line := Page.GetString(i);
HTMLRemoveTags(Line);
Line := Copy(Line,2,Length(Line));
Line := TranslateSpecial(Line);
Languages := Languages + ' ' + Line;
end;
Languages := Trim(Languages);
SetField(fieldDescription, Languages);
end
// locandina del film
LineNr := FindLine('img alt="LOCANDINA:', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Line := RemoveTabs(Line);
Line := TextAfter(Line, 'src="');
Line := TextBefore(Line, '">','');
HTMLRemoveTags(Line);
Line := TranslateSpecial(Line);
GetPicture(Line);
end;
end;
procedure AddMoviesTitles(Page: TStringList);
var
LineNr,EndLine: Integer;
Line: string;
MovieTitle, MovieAddress: string;
BeginPos, EndPos: Integer;
begin
LineNr := 0;
LineNr := FindLine('<tr><td align=''left'' class=corpo colspan=2>',Page,LineNr);
EndLine := FindLine('<br><h2>Videogiochi</h2><br>',Page,0);
if EndLine = -1 then EndLine := 999999;
while ((LineNr > -1) and (LineNr <= EndLine)) do
begin
Line := Page.GetString(LineNr);
MovieAddress := 'http://www.sedicifilm.it/scheda_dvd.php/' + TextBetween(Line, 'scheda_dvd.php/', '/''>') ;
HTMLRemoveTags(Line);
MovieTitle := Line;
HTMLDecode(Movietitle);
Movietitle := AnsiLowerCase(Movietitle);
Movietitle := AnsiUpFirstLetter(Movietitle);
LineNr := FindLine('<tr><td align=''left'' class=corpo colspan=2>',Page,LineNr+1);
PickTreeAdd(MovieTitle, MovieAddress);
if TheMovieAddress='*' then
TheMovieAddress := MovieAddress
else
TheMovieAddress := '';
end;
LineNr := FindLine('?page=1&genere=',Page,LineNr);
Line := Page.GetString(LineNr);
BeginPos := pos('href=',Line);
if BeginPos>0 then
begin
Line := TextBetween(Line, 'a href=''', '>');
Line := Copy(Line,1,Length(Line) -1);
MovieAddress := 'http://www.sedicifilm.it/catalogo.php' + Line;
//Delete(Line,1,BeginPos + 5);
//EndPos := pos('"',Line);
//MovieAddress := copy(Line,1,EndPos-1);
PickTreeMoreLink(MovieAddress);
end;
if TheMovieAddress='*' then TheMovieAddress := '';
end;
// Main 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('SediciFilm Importazione Film', 'Digitare il titolo del film:', MovieName) then
begin
AnalyzePage('http://www.sedicifilm.it/catalogo.php?cat=&q='+UrlEncode(MovieName));
end;
end
else
ShowMessage('Questo script richiede una versione più nuova di Ant Movie Catalog (almeno la versione 3.5.0)');
end.