Import script for Cineguide.be (Dutch info version)

If you made a script you can offer it to the others here, or ask help to improve it. You can also report here bugs & problems with existing scripts.
Post Reply
Epsilon

Import script for Cineguide.be (Dutch info version)

Post by Epsilon »

Salut Antoine,

Tout d'abord, félicitation pour le programme, il est facile, convivial et bien plus compact que DivxManager. La DB en xml est sans aucun doute un +. :grinking: (surtout avec le proxy qu'il faut mettre manuellement car l'interface ne sauve pas l'adresse). J'attend avec impatience la version 4 pour les champs personalisable et un triage correct.

Etant un "bon belge" et souhaitant avoir les descriptifs en français et en néerlandais, je me suis fait un petit script d'import du seul site assez valable que je connaisse pour cela (je suppose qu'il en a d'autre en NL ... merci de me les passer).

Je te propose donc deux scripts, un import complet + image et un import de la description pour le placer dans le commentaires et avoir ainsi 2 résumés.

Ps: Ne connaissant pas l'Object Pascal, j'ai perdu un peu de temps. Ququ'un peut-il me renseigner un bon "Lexicon" de préférence en format chm = "Windows help" ?


Cineguide_nl.ifs
// GETINFO SCRIPTING
// Cineguide - Dutch (BE) import

(***************************************************
* Movie importation script for: *
* CINEGUIDE DUTCH (BE), http://www.cineguide.be *
* *
* Script by Epsilon based on the scripts of *
* (c) 2002 Antoine Potten antoine@buypin.com *
* *
* For use with Ant Movie Catalog 3.2.1 *
* www.ant.be.tf/moviecatalog ··· www.buypin.com *
***************************************************)

program CINEGUIDE_NL;
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
Page: TStringList;
LineNr: Integer;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
if pos('title=', Page.Text) > 0 then
begin
SetField(fieldURL, Address);
AnalyzeMoviePage(Page)
end else
begin
PickTreeClear;
LineNr := 0;
LineNr := FindLine('Onze film list :', Page, LineNr);
if LineNr > -1 then
begin
PickTreeAdd('Onze film list :', '');
AddMoviesTitles(Page, LineNr);
end;
if PickTreeExec(Address) then
AnalyzePage(Address);
end;
Page.Free;
end;

procedure AnalyzeMoviePage(Page: TStringList);
var
Line, Value, Value2, FullValue: string;
LineNr: Integer;
BeginPos, EndPos: Integer;

begin

// Picture
LineNr := FindLine('/MoviePictures/', Page, 0);
if LineNR > -1 then
begin
Line := Page.GetString(LineNr);
BeginPos := pos('img src="', Line) + 9;
if BeginPos > 0 then
begin
EndPos := pos('" border', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
Value := 'http://www.cineguide.be' + Value;
GetPicture(Value, False);
end;
end;

// Original Title & Category
LineNr := FindLine('title=', Page, 0);
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('<strong>', Line);
if BeginPos > 0 then
BeginPos := BeginPos + 8;
EndPos := pos('</', Line);
if EndPos = 0 then
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
HTMLDecode(Value);
SetField(fieldOriginalTitle, Value);

// Category
Line := Page.GetString(LineNr+2);
BeginPos := pos('<br>', Line) + 4;
if BeginPos > 0 then
begin
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos+1);
HTMLDecode(Value);
SetField(fieldCategory, Value);
end;
end;

// Director
LineNr := FindLine('Regisseur', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr + 3);
BeginPos := pos('">', Line) + 2;
EndPos := pos('</a>', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
HTMLDecode(Value);
SetField(fieldDirector,Value);
end;

// Actors
LineNr := FindLine('Acteurs', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr + 16);
BeginPos := pos('">', Line) + 2;
EndPos := pos('<br>', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
HTMLRemoveTags(Value);
HTMLDecode(Value);
SetField(fieldActors, Value);
end;

//Length
LineNr :=FindLine('Duur', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr + 2);
BeginPos := pos('</b>', Line) + 5;
EndPos := pos(' min', Line);
if EndPos = 0 then
EndPos := Length(Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldLength, Value);
end;

//Country
LineNr := FindLine('Land', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr + 2);
BeginPos := pos('</b>', Line) + 5;
EndPos := pos('<br>', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
HTMLDecode(Value);
SetField(fieldCountry, Value);
end;

//Year
LineNr := FindLine('Jaar', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr + 2);
BeginPos := pos('</b>', Line) + 5;
EndPos := pos('<br>', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
HTMLDecode(Value);
SetField(fieldYear, Value);
end;

//Description
LineNr := FindLine('Samenvatting', Page, 0);
if LineNr > -1 then
begin
LineNr := LineNr + 6;
Line := Page.GetString(LineNr);
BeginPos := pos('JUSTIFY">', Line) + 9;
if BeginPos > 9 then
begin
repeat
EndPos := pos('</div>', Line);
if EndPos < 1 then
begin
LineNr := LineNr + 1;
Line := Line + Page.GetString(LineNr);
end;
until (EndPos > 0);
Value := copy(Line, BeginPos, EndPos - BeginPos);
HTMLRemoveTags(Value);
HTMLDecode(Value);
SetField(fieldDescription, Value);
end;
end;

DisplayResults;
end;

procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
var
Line: string;
MovieTitle, MovieAddress: string;
StartPos: Integer;
LastLine: Integer;
begin
repeat
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
LastLine := Page.count;
StartPos := pos('detail.cfm?', Line);
if StartPos > 0 then
begin
//Startpos := Startpos + 2;
MovieAddress := copy(Line, StartPos, pos('">', Line) - StartPos);
StartPos := pos('">', Line) + 2;
MovieTitle := copy(Line, StartPos, pos('</a>', Line) - StartPos);
HTMLDecode(Movietitle);
PickTreeAdd(MovieTitle, 'http://www.cineguide.be/scriptsred/' + MovieAddress + '&Lang=NL');
end;
until (LineNr > Lastline);
end;

begin
if CheckVersion(3,2,1) then
begin
MovieName := GetField(fieldOriginalTitle);
if MovieName = '' then
MovieName := GetField(fieldTranslatedTitle);
if Input('Cineguide Import', 'Enter the title of the movie:', MovieName) then
begin
AnalyzePage('http://www.cineguide.be/scriptsred/sear ... MovieName));
end;
end else
ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.2.1)');
end.

Cineguide_nl_comments.ifs
// GETINFO SCRIPTING
// Cineguide - Dutch (BE) Summary import to comment field

(***************************************************
* Movie importation script for: *
* CINEGUIDE DUTCH (BE), http://www.cineguide.be *
* *
* Script by Epsilon based on the scripts of *
* (c) 2002 Antoine Potten antoine@buypin.com *
* *
* For use with Ant Movie Catalog 3.2.1 *
* www.ant.be.tf/moviecatalog ··· www.buypin.com *
***************************************************)

program CINEGUIDE_NL;
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
Page: TStringList;
LineNr: Integer;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
if pos('title=', Page.Text) > 0 then
begin
SetField(fieldURL, Address);
AnalyzeMoviePage(Page)
end else
begin
PickTreeClear;
LineNr := 0;
LineNr := FindLine('Onze film list :', Page, LineNr);
if LineNr > -1 then
begin
PickTreeAdd('Onze film list :', '');
AddMoviesTitles(Page, LineNr);
end;
if PickTreeExec(Address) then
AnalyzePage(Address);
end;
Page.Free;
end;

procedure AnalyzeMoviePage(Page: TStringList);
var
Line, Value, Value2, FullValue: string;
LineNr: Integer;
BeginPos, EndPos: Integer;

begin
//Description
LineNr := FindLine('Samenvatting', Page, 0);
if LineNr > -1 then
begin
LineNr := LineNr + 6;
Line := Page.GetString(LineNr);
BeginPos := pos('JUSTIFY">', Line) + 9;
if BeginPos > 9 then
begin
repeat
EndPos := pos('</div>', Line);
if EndPos < 1 then
begin
LineNr := LineNr + 1;
Line := Line + Page.GetString(LineNr);
end;
until (EndPos > 0);
Value := copy(Line, BeginPos, EndPos - BeginPos);
HTMLRemoveTags(Value);
HTMLDecode(Value);
SetField(fieldComments, Value);
end;
end;

DisplayResults;
end;

procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
var
Line: string;
MovieTitle, MovieAddress: string;
StartPos: Integer;
LastLine: Integer;
begin
repeat
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
LastLine := Page.count;
StartPos := pos('detail.cfm?', Line);
if StartPos > 0 then
begin
//Startpos := Startpos + 2;
MovieAddress := copy(Line, StartPos, pos('">', Line) - StartPos);
StartPos := pos('">', Line) + 2;
MovieTitle := copy(Line, StartPos, pos('</a>', Line) - StartPos);
HTMLDecode(Movietitle);
PickTreeAdd(MovieTitle, 'http://www.cineguide.be/scriptsred/' + MovieAddress + '&Lang=NL');
end;
until (LineNr > Lastline);
end;

begin
if CheckVersion(3,2,1) then
begin
MovieName := GetField(fieldOriginalTitle);
if MovieName = '' then
MovieName := GetField(fieldTranslatedTitle);
if Input('Cineguide Import', 'Enter the title of the movie:', MovieName) then
begin
AnalyzePage('http://www.cineguide.be/scriptsred/sear ... MovieName));
end;
end else
ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.2.1)');
end.
antp
Site Admin
Posts: 9651
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Re: Import script for Cineguide.be (Dutch info version)

Post by antp »

Salut

Merci pour les scripts ;)
Je les mettrai dans le setup du programme à la prochaine mise à jour
Epsilon wrote:(surtout avec le proxy qu'il faut mettre manuellement car l'interface ne sauve pas l'adresse)
comment ça :??: normalement c'était arrangé... si ça ne l'est pas faudra que je corrige ça...
Post Reply