Code: Select all
// GETINFO SCRIPTING
// DVDZone2 (Français)
(***************************************************
* Movie importation script for: *
* DVD Zone 2, http://www.dvdzone2.com *
* *
* Rewritten by Antoine Potten *
* Currently it is only possible to get *
* information in english : cookie or session *
* support is needed to change language *
* *
* For use with Ant Movie Catalog 3.4.0 *
* www.antp.be/software/moviecatalog *
* *
* 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. *
***************************************************)
program DVDZone2_FR;
var
MovieName: 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;
procedure AnalyzePage(Address: string);
var
Line, MovieItem, MovieTitle, MovieAddress: string;
TitlePos, BeginPos, EndPos: Integer;
List: TStringList;
begin
Line := GetPage(Address);
PickTreeClear;
if Pos('</b> : 0 item(s) found<br>', Line) = 0 then
begin
PickTreeAdd('Search results from DVDZone2', '');
BeginPos := Pos('<!-- CENTRAL TABLE -->', Line);
EndPos := Pos('<!-- /CENTRAL TABLE -->', Line);
Line := Copy(Line, BeginPos, EndPos - BeginPos);
List := TStringList.Create;
repeat
TitlePos := Pos('<a href="http://www.dvdzone2.com/dvd/detail.asp', Line);
if TitlePos > 0 then
begin
Delete(Line, 1, TitlePos);
MovieItem := Copy(Line, 1, Pos('add2basket', Line));
BeginPos := Pos('"', MovieItem) + 1;
EndPos := Pos('" class', MovieItem);
MovieAddress := Copy(MovieItem, BeginPos, EndPos - BeginPos);
BeginPos := Pos('">', MovieItem) + 2;
EndPos := Pos('</a>', MovieItem);
MovieTitle := Copy(MovieItem, BeginPos, EndPos - BeginPos);
List.Text := MovieItem;
MovieItem := Trim(List.GetString(3));
if MovieItem <> '' then
MovieTitle := MovieTitle + ' [' + MovieItem + ']';
MovieItem := Trim(List.GetString(9));
if MovieItem <> '' then
MovieTitle := MovieTitle + ' (' + MovieItem + ')';
PickTreeAdd(MovieTitle, MovieAddress);
Delete(Line, 1, 25);
end;
until TitlePos = 0;
List.Free;
end;
if PickTreeExec(Address) then
AnalyzeMoviePage(Address);
end;
procedure AnalyzeMoviePage(Address: string);
var
Line, Value, FullValue: string;
LineNr: Integer;
BeginPos, EndPos: Integer;
Page: TStringList;
begin
Line := GetPage(Address);
BeginPos := Pos('<!-- CENTRAL TABLE -->', Line);
EndPos := Pos('<!-- /CENTRAL TABLE -->', Line);
Line := Copy(Line, BeginPos, EndPos - BeginPos);
// title
BeginPos := Pos('<span class="detail-title">', Line);
Delete(Line, 1, BeginPos);
BeginPos := Pos('>', Line) + 1;
EndPos := Pos('</', Line);
Value := Copy(Line, BeginPos, EndPos - BeginPos);
HTMLDecode(Value);
SetField(fieldTranslatedTitle, Value);
// picture
BeginPos := Pos('http://www.dvdzone2.com/pictures/big/', Line);
if BeginPos > 0 then
begin
Delete(Line, 1, BeginPos - 1);
EndPos := Pos('"', Line);
Value := Copy(Line, 1, EndPos - 1);
GetPicture(Value, False);
end;
// description
BeginPos := Pos('<p>', Line);
Delete(Line, 1, BeginPos + 2);
EndPos := Pos(#13, Line);
Value := StringReplace(Copy(Line, 1, EndPos - 1), '<p>', #13#10#13#10);
HTMLRemoveTags(Value);
HTMLDecode(Value);
SetField(FieldDescription, Value);
// rating
BeginPos := Pos('note globale', Line);
if BeginPos > 0 then
begin
Delete(Line, 1, BeginPos);
BeginPos := Pos('<b>', Line);
if BeginPos > 0 then
begin
BeginPos := BeginPos + 3;
EndPos := Pos(',', Line);
Value := Copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldRating, Value);
end;
end;
Page := TStringList.Create;
BeginPos := Pos('<td height="120" width="50%" class="dvd-detail-border-c" valign="top" align="left">', Line);
Delete(Line, 1, BeginPos);
EndPos := Pos('</table>', Line);
Page.Text := Copy(Line, 1, EndPos);
// titre original
SetField(fieldOriginalTitle, GetInfo('<b>Titre original', Page));
// director
SetField(fieldDirector, GetInfo('<b>Réalisateur(s)', Page));
// actors
SetField(fieldActors, StringReplace(GetInfo('<b>Acteurs', Page), ' - ', ', '));
// country
SetField(fieldCountry, GetInfo('<b>Pays', Page));
// year
SetField(fieldYear, GetInfo('<b>Année', Page));
// studio (producer)
SetField(fieldProducer, GetInfo('<b>Studio', Page));
// category
SetField(fieldCategory, GetInfo('<b>Genres', Page));
// format vidéo
SetField(fieldVideoFormat, GetInfo('<b>Format vidéo', Page));
// length
Value := GetInfo('<b>Durée', Page);
EndPos := Pos('&', Value);
SetField(fieldLength, Copy(Value, 1, EndPos - 1));
// special features (comments)
BeginPos := Pos('<span class="detail-title">Les Bonus</span>', Line);
Delete(Line, 1, BeginPos);
EndPos := Pos('</table>', Line);
Delete(Line, EndPos, Length(Line));
FullValue := '';
repeat
BeginPos := Pos('</tr>', Line);
Delete(Line, 1, BeginPos);
BeginPos := Pos('<tr>', Line);
if BeginPos > 0 then
begin
BeginPos := Pos('<b>', Line);
if BeginPos > 0 then
begin
Value := Copy(Line, BeginPos + 3, Length(Line));
EndPos := Pos(#10, Value);
Value := StringReplace(Copy(Value, 1, EndPos - 1), '<br>', ' ');
HTMLRemoveTags(Value);
HTMLDecode(Value);
FullValue := FullValue + '- ' + Value + #13#10;
end;
end;
until (Pos('<tr>', Line) = 0) or (Pos('<b>', Line) = 0);
if FullValue <> '' then
SetField(fieldComments, 'Bonus:' + #13#10 + FullValue);
Page.Free;
DisplayResults;
end;
function GetInfo(Name: string; Page: TStringList): string;
var
LineNr, BeginPos, EndPos: Integer;
Value, Line: string;
begin
LineNr := FindLine(Name, Page, 0);
if LineNr > 0 then
begin
Line := Page.GetString(LineNr);
BeginPos := Pos(': ', Line) + 7;
EndPos := Pos('<br>', Line);
Value := Copy(Line, BeginPos, EndPos - BeginPos);
HTMLRemoveTags(Value);
HTMLDecode(Value);
Result := Value;
end else
Result := '';
end;
begin
if CheckVersion(3,4,0) then
begin
MovieName := GetField(fieldOriginalTitle);
if MovieName = '' then
MovieName := GetField(fieldTranslatedTitle);
if Input('DVDZone2 (FR) Import', 'Entrer le titre du film:', MovieName) then
begin
GetPage('http://www.dvdzone2.com/language.asp?id=fra&dest=dvd');
AnalyzePage('http://www.dvdzone2.com/dvd/search.asp?t=1&kw=' + UrlEncode(MovieName) + '&kwt=t&pl=all');
end;
end else
ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.0)');
end.