Code: Select all
(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=Legrad
Title=ZonaDVD(ES)
Description=
Site=www.zonadvd.com
Language=ES
Version=1.1
Requires=3.5.0
Comments=
License=
GetInfo=1
[Options]
***************************************************)
program ZonaDVD;
uses
StringUtils7552;
const
BaseURL1 = '';
var
MovieName: string;
MovieURL: string;
//-----------------------------------------------------------------------
function DeleteTags(var S: string): string;
var
n,len, tag: Integer;
c: char;
t: String;
begin
tag := 0;
t := '';
len := length(s);
for n :=1 to len do
begin
c := Copy(s,n,1);
if c = #9 then
c := ' ';
if(tag=1) then
begin
if(c='>') then tag := 0;
continue;
end
else
begin
if(c='<') then
begin
tag := 1;
continue;
end;
t := t + c;
end;
end
s := t;
result := t;
end;
//------------------------------------------------------------------------------------
procedure AnalyzePage(Address: string);
var
strPage, MovieAddr, MovieTitle, MovieDate, MovieID: string;
BeginPos, EndPos: Integer;
begin
strPage := GetPage(Address);
BeginPos := Pos('en el dominio', strPage);
if(BeginPos > -1)then
begin
PickTreeClear;
//PickTreeAdd('Resultados para: ' + MovieName, '');
Delete(strPage, 1, BeginPos);
BeginPos := Pos('47"><a href="/modules.php?name=News&file=article&sid=', strPage);
EndPos := 1;
while ((BeginPos > 0) and (EndPos > 0)) do
begin
Delete(strPage, 1, BeginPos);
EndPos := Pos('"><img', strPage);
MovieId := Copy(strPage, +61, EndPos -61);
MovieAddr := 'http://www.zonadvd.com/modules.php?name=News&file=article&sid=' + MovieId;
BeginPos := Pos('caratula/mini', strPage);
EndPos := Pos('width="', strPage);
MovieTitle := Copy(strPage, BeginPos, EndPos - BeginPos);
MovieTitle := TextBetween (MovieTitle, 'alt="', '"');
MovieTitle := StringReplace(MovieTitle , 'DVD', '');
MovieTitle := StringReplace(MovieTitle , ')', ')');
DeleteTags(MovieTitle);
PickTreeAdd(MovieTitle, MovieAddr);
PickTreeSort;
BeginPos := Pos('47"><a href="/modules.php?name=News&file=article&sid=', strPage);
if(Pos('</body>', strPage) < BeginPos) then
BeginPos := -1;
end;
end;
PickTreeExec(Address)
AnalyzeMoviePage(Address);
end;
//------------------------------------------------------------------------------
procedure AnalyzeMoviePage(Address: string);
var
Page: TStringList;
LineNr: Integer;
Line: string;
Item: string;
Comments: string;
Actors: string;
Directors: string;
Description: string;
begin
Description := '';
// URL
SetField(fieldURL, Address);
Page := TStringList.Create;
Page.Text := GetPage(Address);
// Titulo Original
LineNr := FindLine('Título original:</STRONG>', Page, 0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
Item := TextBetween (Line, 'Título original:</STRONG>', '</LI><LI>');
HTMLDecode(Item);
SetField(fieldOriginalTitle, Trim (Item));
end;
// Titulo traducido
LineNr := FindLine('<title>', Page, 0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
Item := TextBetween (Line, '<title>', '-');
Item := StringReplace(Item , 'DVD', '');
HTMLDecode(Item);
SetField(fieldTranslatedTitle, Trim (Item));
end;
// Genero
LineNr := FindLine('<strong>Género: </strong>', Page, 0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
Item := TextBetween (Line, '<strong>Género: </strong>', '</li>');
Item := StringReplace(Item , 'Documentales / ', '');
HTMLDecode(Item);
SetField(fieldCategory, Trim (Item));
end;
// Nacionalidad
LineNr := FindLine('Country Of Origin :', Page, 0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
Item := TextBetween (Line, 'Country Of Origin :', '<br>');
Item := StringReplace(Item , 'United States', 'USA');
Item := StringReplace(Item , 'EEUU', 'USA');
Item := StringReplace(Item , 'EE.UU', 'USA');
Item := StringReplace(Item , 'EEUU.', 'USA');
Item := StringReplace(Item , 'Gran Bretaña', 'Reino Unido');
HTMLDecode(Item);
SetField(fieldCountry, Trim (Item));
end;
// Duracion
LineNr := FindLine('–Length: ', Page, 0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
Item := TextBetween (Line, '–Length: ', 'minutes');
HTMLDecode(Item);
SetField(fieldLength, Trim (Item));
end;
// Año
LineNr := FindLine('<STRONG>Año:</STRONG>', Page, 0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
Item := TextBetween (Line, '<STRONG>Año:</STRONG>', '</LI>');
HTMLDecode(Item);
SetField(fieldYear, Trim (Item));
end;
// Director
LineNr := FindLine('campo=director">', Page, 0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
Item := TextBetween (Line, 'campo=director">', '</a>');
HTMLDecode(Item);
SetField(fieldDirector, Trim (Item));
end;
// Productora
LineNr := FindLine('<font color="#98B99D">DVD</font> - ', Page, 0);
if LineNr <> -1 then
begin
Item := copy(Page.Text, pos('<font color="#98B99D">DVD</font> - ',Page.Text), length(Page.Text));
Item := TextBetween (Item, '<font color="#98B99D">DVD</font> - ', '<div style="');
Item := StringReplace(Item , #13#10, '');
Item := StringReplace(Item , ' ', '');
Item := Trim(Item );
DeleteTags(Item);
Item := AnsiUpFirstLetter(Item );
SetField(fieldProducer, Trim (Item));
end;
// Argumento
LineNr := FindLine('<div style="padding: 2px 12px 0px 6px;">', Page, 0);
if LineNr <> -1 then
begin
Item := copy(Page.Text, pos('<div style="padding: 2px 12px 0px 6px;">',Page.Text), length(Page.Text));
Item := TextBetween (Item, '<div style="padding: 2px 12px 0px 6px;">', '<P align=center>');
Item := StringReplace(Item , #13#10, '');
Item := StringReplace(Item , ' ', '');
Item := Trim(Item );
DeleteTags(Item);
Item := AnsiUpFirstLetter(Item );
HTMLDecode(Item);
SetField(fieldDescription, Trim (Item));
end;
// Actor
LineNr := FindLine('</a></LI><LI><STRONG>Actores:</STRONG>', Page, 0);
if LineNr <> -1 then
begin
Item := copy(Page.Text, pos('</a></LI><LI><STRONG>Actores:</STRONG>',Page.Text), length(Page.Text));
Item := TextBetween (Item, 'campo=actor">', '</a></LI>');
Item := StringReplace(Item , #13#10, '');
Item := StringReplace(Item , ' ', '');
Item := StringReplace(Item , '+', ' ');
Item := StringReplace(Item , '%ED', 'í');
Item := StringReplace(Item , '%E9', 'é');
Item := StringReplace(Item , '%E1', 'á');
Item := StringReplace(Item , '%E8', 'é');
DeleteTags(Item);
Item := Trim(Item );
HTMLDecode(Item);
SetField(fieldActors, Trim (Item));
end;
// Caratula
LineNr := FindLine('src="http://www.zonadvd.com/imagenes/', Page, 0);
if LineNr <> -1 then
begin
Line := Page.GetString(Linenr);
Item := TextBetween (Line, 'src="', '"');
GetPicture (Item);
end;
end;
//------------------------------------------------------------------------------------
begin
if (CheckVersion(3,5,0)=FALSe) then
begin
ShowMessage('Se requiere Ant Movie Catalog versión 3.5 o superior');
exit;
end;
MovieName := GetField(fieldTranslatedTitle);
if MovieName = '' then
MovieName := GetField(fieldOriginalTitle);
Input('www.zonadvd.com', 'Buscar', MovieName);
AnalyzePage('http://www.zonadvd.com/modules.php?name=Busqueda&palabra=' + UrlEncode(MovieName));
end.