[REL] [UPDATE] [ITA] Musicafilm.it
Posted: 2008-08-28 07:16:56
Little Fix in display title and restyling code...
!!!
Code: Select all
(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=Gigibop (luca.marcato@gmail.com)
Title=MusicaFilm
Description=Get movie info from http://www.musicafilm.it
Site=http://www.musicafilm.it
Language=IT
Version=1.0.4 - 28.08.2008
Requires=3.5.0
Comments=Changes|20.01.2008 v. 1.0.1: aggiunto puntatore alla funzione PickTreeMoreLink (Gigibop)|21.01.2008 v. 1.0.2: aggiunti lingue audio e sottotitoli (Gigibop)|22.01.2008 v. 1.0.3: aggiunta la versione del film nella ricerca dei titoli (Gigibop)|28.08.2008 v. 1.0.4: Restyling code and fix Title (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 MusicaFilm;
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('<H3>DVD Film trovati</H3>', 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;
function RemoveHtmlClean(str1: string) :string;
begin
HTMLRemoveTags(str1);
HTMLDecode(str1);
str1 := RemoveTabs(str1);
result := FullTrim(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 ID="InPageTitle">', Page, 0);
if LineNr > -1 then
begin
//Titolo tradotto
LineNr:= LineNr + 1;
Line := Page.GetString(LineNr);
Line := RemoveHtmlClean(Line);
SetField(fieldTranslatedTitle, Line);
//Titolo originale
LineNr:= LineNr + 1;
Line := Page.GetString(LineNr);
Line := RemoveHtmlClean(Line);
SetField(fieldOriginalTitle, Line);
end;
(*Regia *)
LineNr := FindLine('- Regista</LI>', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Line := TextBefore(Line, ' - Regista</LI>', '');
Line := RemoveHtmlClean(Line);
SetField(fieldDirector,Line);
end;
LineNr := 0;
// attori... e qui si balla!!! :-)
While LineNr <> -1 Do
Begin
LineNr := FindLine('<A CLASS="Actor"', Page, LineNr);
If LineNR = -1 Then
begin
Break;
end
else
begin
Line := Page.GetString(LineNr);
Line := RemoveHtmlClean(Line);
Line := StringReplace(Line, '- ', '(') + ')';
Actors:= Actors + ', ' + Line;
end;
LineNr:= LineNr +1;
end;
Actors := Copy(Actors, 3, Length(Actors));
SetField(fieldActors,Actors);
// casa produttrice
LineNr := FindLine('<H3>Etichette</H3>', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr +2);
Line := RemoveHtmlClean(Line);
SetField(fieldProducer,Line);
end;
// genere
LineNr := 0;
While LineNr <> -1 Do
Begin
LineNr := FindLine('<A CLASS="DVDMovieGenre"', Page, LineNr);
If LineNR = -1 Then
begin
Break;
end
else
begin
Line := Page.GetString(LineNr);
Line := RemoveHtmlClean(Line);
Category:= Category + ', ' + Line;
end;
LineNr:= LineNr +1;
end;
Category := Copy(Category, 3, Length(Category));
SetField(fieldCategory,Category);
// anno di uscita
LineNr := FindLine('<LI><SPAN CLASS="Label">Anno di uscita:', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Line := RemoveTabs(Line);
Line := TextAfter(Line, 'Anno di uscita:');
Line := RemoveHtmlClean(Line);
SetField(fieldYear,Line);
end;
// durata
LineNr := FindLine('<LI><SPAN CLASS="Label">Durata:', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Line := RemoveTabs(Line);
Line := TextAfter(Line, 'Durata:');
Line := TextBefore(Line, 'min','');
Line := RemoveHtmlClean(Line);
SetField(fieldLength,Line);
end;
// numero di dischi
LineNr := FindLine('<LI><SPAN CLASS="Label">Numero dischi:', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Line := RemoveTabs(Line);
Line := TextAfter(Line, 'Numero dischi:');
Line := RemoveHtmlClean(Line);
SetField(fieldDisks,Line);
end;
// descrizione
LineNr := FindLine('<DIV ID="Plot">', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Line := RemoveHtmlClean(Line);
SetField(fieldDescription,Line);
end;
// locandina del film
LineNr := FindLine('<DIV ID="ProductPreview">', 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;
// formato video
LineNr := FindLine('<LI><SPAN CLASS="Label">Formati video:', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Line := RemoveTabs(Line);
Line := TextAfter(Line, 'Formati video:');
Line := RemoveHtmlClean(Line);
SetField(fieldVideoFormat,Line);
end;
// tracce audio
LineNr := FindLine('<H3>Tracce audio</H3>', Page, 0);
if LineNr > -1 then
begin
BeginLine := FindLine('<UL>', Page, LineNr);
EndLine := FindLine('</UL>', Page, BeginLine);
for i:= BeginLine+1 to EndLine-1 do
begin
Line := Page.GetString(i);
Line := StringReplace(Line, '<br>', #13#10);
Line := StringReplace(Line, #13#10#32, #13#10);
Line := RemoveHtmlClean(Line);
Languages := Languages + ', ' + Line;
end;
Languages := Copy(Languages, 3, Length(Languages));
SetField(fieldLanguages, Languages);
end
// sottotitoli
Languages :='';
LineNr := FindLine('<H3>Sottotitoli</H3>', Page, 0);
if LineNr > -1 then
begin
BeginLine := FindLine('<UL>', Page, LineNr);
EndLine := FindLine('</UL>', Page, BeginLine);
for i:= BeginLine+1 to EndLine-1 do
begin
Line := Page.GetString(i);
Line := StringReplace(Line, '<br>', #13#10);
Line := StringReplace(Line, #13#10#32, #13#10);
Line := RemoveHtmlClean(Line);
Languages := Languages + ', ' + Line;
end;
Languages := Copy(Languages, 3, Length(Languages));
SetField(fieldSubtitles, Languages);
end;
end;
procedure AddMoviesTitles(Page: TStringList);
var
LineNr: Integer;
Line: string;
MovieTitle, MovieAddress, Description: string;
BeginPos, EndPos: Integer;
begin
LineNr := 0;
LineNr := FindLine('<DIV CLASS="description"><A CLASS="ProductDVDMovie" TITLE="',Page,LineNr);
while LineNr > -1 do
begin
MovieAddress := 'http://www.musicafilm.it/dvd-film/' + TextBetween((Page.GetString(LineNr)), 'HREF="/dvd-film/', '.') + '.html';
Line := Page.GetString(LineNr);
MovieTitle := TextAfter(Page.GetString(LineNr), 'html">');
MovieTitle := TextBefore(MovieTitle, '</A>', '');
Description := TextBefore(Line, '<DEL>', '</A>');
if Description = '' then Description := TextBefore(Line, 'Non disponibile', '</A>');
HTMLRemoveTags(Description);
MovieTitle := MovieTitle + ' (' + Description + ')';
HTMLRemoveTags(MovieTitle);
HTMLDecode(Movietitle);
LineNr := FindLine('<DIV CLASS="description"><A CLASS="ProductDVDMovie" TITLE="',Page,LineNr+1);
PickTreeAdd(MovieTitle, MovieAddress);
if TheMovieAddress='*' then
TheMovieAddress := MovieAddress
else
TheMovieAddress := '';
end;
LineNr := FindLine('Pagine dei risultati:',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('MusicaFilm Importazione Film', 'Digitare il titolo del film:', MovieName) then
begin
AnalyzePage('http://www.musicafilm.it/ricerca/dvd-film/avanzata/?item_title='+UrlEncode(MovieName)+'&producer_name=&producer_surname=&director_name=&director_surname=&actor1_name=&actor1_surname=&actor2_name=&actor2_surname=&actor3_name=&actor3_surname=&character=&genre1=-1&genre2=-1&genre3=-1&audiotrack1=-1&audiotrack2=-1&audiotrack3=-1&series=&production_year=&release_year=&label=');
end;
end
else
ShowMessage('Questo script richiede una versione più nuova di Ant Movie Catalog (almeno la versione 3.5.0)');
end.