Je ne suis pas du tout expert dans le language Pascal donc mon code ne doit pas être très accadémique. Je me suis inspiré de mes lointain souvenirs et des script déjà présents.
N'hésitez pas à le corriger !!!
Un grand merci bien sûr à Antp pour ce superbe logiciel qui m'a éviter de longues heures de prog.
Voici donc le script (désolé pour la longueur).
Code: Select all
// GETINFO SCRIPTING
// Cinefil (FR) import avec grande Image
(***************************************************
* Script d'importation de film pour : *
* Cinéfil.com , http://www.cinefil.com *
* *
* (c) 2003 Danone-KiD *
* *
* A utiliser avec Ant Movie Catalog 3.4.2 *
* www.ant.be.tf/moviecatalog *
* *
***************************************************)
program cinefil;
var
MovieName: string;
procedure AnalyzePage(Address: string);
var
Page: TStringList;
LineNr: Integer;
Line,page_film,titre_film, realisateur_film, annee_film: string;
BeginPos, EndPos: Integer;
begin
//vide la liste des films
PickTreeClear;
//charge la page
Line := GetPage(Address);
//teste si il y a des films trouvés
BeginPos := Pos('Aucun film trouvé', Line);
if BeginPos <> 0 then
begin
showmessage('Aucun film trouvé !');
exit;
end;
//teste si il n'y a pas qu'un seul film
BeginPos := Pos('FILMS TROUVÉS', Line);
if BeginPos = 0 then
begin
AnalysePageFilm(Address);
exit;
end;
//supprime tout le code avant la liste des films
BeginPos := Pos('<B>ANNÉE</B>', Line);
Delete(Line, 1, BeginPos-1);
repeat
//cherche le lien de la page du film
BeginPos := Pos('HREF=''FicheFilm.cfm?ref=',Line);
Delete(Line, 1, BeginPos+5);
EndPos := Pos(' ',Line);
page_film := 'http://www.cinefil.com/newsiteweb/' + Copy(Line, 1, EndPos-2 );
//cherche le nom du film
BeginPos := Pos('TITLE=''Fiche Film Cinéfil''>',Line);
Delete(Line, 1, BeginPos+26);
EndPos := Pos('</a>',Line)-1;
titre_film := Copy(Line, 1, EndPos );
HTMLdecode(titre_film);
HTMLremovetags(titre_film);
titre_film := StringReplace(titre_film, #13#10, '');
titre_film := StringReplace(titre_film, ' ', '');
titre_film := Trim(titre_film);
titre_film := AnsiLowerCase(titre_film);
titre_film := AnsiUpFirstLetter(titre_film);
//cherche le réalisateur
BeginPos := Pos('size=2>',Line);
Delete(Line, 1, BeginPos+6);
EndPos := Pos('</TD><TD',Line)-1;
realisateur_film := Copy(Line, 1, EndPos );
HTMLdecode(realisateur_film);
HTMLremovetags(realisateur_film);
realisateur_film := StringReplace(realisateur_film, #13#10, '');
realisateur_film := StringReplace(realisateur_film, ' ', '');
realisateur_film := Trim(realisateur_film);
realisateur_film := AnsiLowerCase(realisateur_film);
realisateur_film := AnsiUpFirstLetter(realisateur_film);
//cherche l'année
BeginPos := Pos('size=2>',Line);
Delete(Line, 1, BeginPos+6);
EndPos := Pos('</TD>',Line)-1;
annee_film := Copy(Line, 1, EndPos );
HTMLdecode(annee_film);
HTMLremovetags(annee_film);
annee_film := StringReplace(annee_film, #13#10, '');
annee_film := StringReplace(annee_film, ' ', '');
annee_film := Trim(annee_film);
//ajoute les films
PickTreeAdd(titre_film + ' (' + realisateur_film + '), '+ annee_film , page_film);
//cherche le lien de la page du film
BeginPos := Pos('HREF=''FicheFilm.cfm?ref=',Line);
until BeginPos = 0;
begin
if PickTreeExec(Address)=true then
AnalysePageFilm(Address);
end;
end;
//------------------------------------------------------------------------------
// ANALYSE DE LA PAGE DU FILM
//------------------------------------------------------------------------------
procedure AnalysePageFilm(Address: string);
var
Line,page_film,titre_film,titre_original, categorie_film, realisateur_film, annee_film: string;
pays_film, duree_film, acteurs_film, liste_acteurs, description_film, reference_film,fichier_image:string;
BeginPos, EndPos: Integer;
begin
//charge la page
Line := GetPage(Address);
//cherche le nom du film
BeginPos := Pos('CLASS=titrefilm>', Line);
Delete(Line, 1, BeginPos+15);
EndPos := Pos('</FONT>',Line)-1;
titre_film := Copy(Line, 1, EndPos );
HTMLdecode(titre_film);
titre_film := StringReplace(titre_film, #13#10, '');
titre_film := StringReplace(titre_film, ' ', '');
titre_film := Trim(titre_film);
titre_film := AnsiLowerCase(titre_film);
titre_film := AnsiMixedCase(titre_film, ' ');
titre_film := AnsiMixedCase(titre_film, '-');
//cherche le titre original
BeginPos := Pos('Titre Original : "', Line);
Delete(Line, 1, BeginPos+17);
EndPos := Pos('"</FONT>',Line)-1;
titre_original := Copy(Line, 1, EndPos );
HTMLdecode(titre_original);
titre_original := StringReplace(titre_original, #13#10, '');
titre_original := StringReplace(titre_original, ' ', '');
titre_original := Trim(titre_original);
titre_original := AnsiLowerCase(titre_original);
titre_original := AnsiMixedCase(titre_original, ' ');
titre_original := AnsiMixedCase(titre_original, '-');
//cherche la catégorie
BeginPos := Pos('class=autrefilm> -', Line);
Delete(Line, 1, BeginPos+17);
EndPos := Pos('</font>',Line)-1;
categorie_film := Copy(Line, 1, EndPos );
HTMLdecode(categorie_film);
categorie_film := StringReplace(categorie_film, #13#10, '');
categorie_film := StringReplace(categorie_film, ' ', '');
categorie_film := Trim(categorie_film);
categorie_film := AnsiLowerCase(categorie_film);
categorie_film := AnsiMixedCase(categorie_film, ' ');
categorie_film := AnsiMixedCase(categorie_film, '-');
//cherche le pays
BeginPos := Pos('BORDER=1>', Line);
Delete(Line, 1, BeginPos+8);
EndPos := Pos('</font>',Line)-1;
pays_film := Copy(Line, 1, EndPos );
HTMLdecode(pays_film);
pays_film := StringReplace(pays_film, #13#10, '');
pays_film := StringReplace(pays_film, ' ', '');
pays_film := Trim(pays_film);
HTMLremovetags(pays_film);
pays_film := AnsiLowerCase(pays_film);
pays_film := AnsiMixedCase(pays_film, ' ');
pays_film := AnsiMixedCase(pays_film, '-');
//cherche l'année
BeginPos := Pos('class=autrefilm> -', Line);
Delete(Line, 1, BeginPos+17);
EndPos := Pos('</font>',Line)-1;
annee_film := Copy(Line, 1, EndPos );
HTMLdecode(annee_film);
annee_film := StringReplace(annee_film, #13#10, '');
annee_film := StringReplace(annee_film, ' ', '');
annee_film := Trim(annee_film);
//cherche la durée
BeginPos := Pos('class=autrefilm> -', Line);
Delete(Line, 1, BeginPos+17);
EndPos := Pos('</font>',Line)-1;
duree_film := Copy(Line, 1, EndPos );
HTMLdecode(duree_film);
duree_film := StringReplace(duree_film, #13#10, '');
duree_film := StringReplace(duree_film, ' ', '');
duree_film := StringReplace(duree_film, 'H', '');
duree_film := Trim(duree_film);
duree_film := IntToStr( (StrToInt(copy(duree_film,1,1),0) * 60)+ (StrToInt(copy(duree_film,2,2),0)));
//chargement des jaquettes
//on teste si il y a un grang format
BeginPos := Pos('<A HREF="AfficheGF.cfm?ref=', Line);
if BeginPos <> 0 then
begin
Delete(Line, 1, BeginPos+26);
EndPos := Pos('" target="_blank" TITLE="ZOOM">',Line)-1;
fichier_image := 'http://www.cinefil.com/ImagesCinefil/AfficheGrandFormat/a' + Copy(Line, 1, EndPos )+'.jpeg';
GetPicture(fichier_image, false);
end;
if BeginPos = 0 then
begin
//sinon on teste si il y a un petit format
BeginPos := Pos('AffichePetitFormat/', Line);
if BeginPos <> 0 then
Begin
Delete(Line,1, BeginPos +18);
EndPos := Pos(' border=1 ALIGN=left hspace=10 >',Line)-1;
fichier_image := 'http://www.cinefil.com/ImagesCinefil/AffichePetitFormat/' + Copy(Line, 1, EndPos );
GetPicture(fichier_image, false);
end;
end;
//cherche le réalisateur
BeginPos := Pos('TITLE=''Fiche Personnalité Cinéfil''><b>', Line);
Delete(Line, 1, BeginPos+37);
EndPos := Pos('</b></A>',Line)-1;
realisateur_film := Copy(Line, 1, EndPos );
HTMLdecode(realisateur_film);
realisateur_film := StringReplace(realisateur_film, #13#10, '');
realisateur_film := StringReplace(realisateur_film, ' ', '');
realisateur_film := Trim(realisateur_film);
realisateur_film := AnsiLowerCase(realisateur_film);
realisateur_film := AnsiMixedCase(realisateur_film, ' ');
realisateur_film := AnsiMixedCase(realisateur_film, '-');
repeat
//cherche les acteurs
BeginPos := Pos('TITLE=''Fiche Personnalité Cinéfil''><b>', Line);
Delete(Line, 1, BeginPos+37);
EndPos := Pos('</b></A>',Line)-1;
acteurs_film := Copy(Line, 1, EndPos );
HTMLdecode(acteurs_film);
acteurs_film := StringReplace(acteurs_film, #13#10, '');
acteurs_film := StringReplace(acteurs_film, ' ', '');
acteurs_film := Trim(acteurs_film);
acteurs_film := AnsiLowerCase(acteurs_film);
acteurs_film := AnsiMixedCase(acteurs_film, ' ');
acteurs_film := AnsiMixedCase(acteurs_film, '-');
BeginPos := Pos('TITLE=''Fiche Personnalité Cinéfil''><b>', Line);
if BeginPos = 0 then liste_acteurs := liste_acteurs + acteurs_film;
if BeginPos <> 0 then liste_acteurs := liste_acteurs + acteurs_film + ', ';
until BeginPos = 0;
//cherche la description
BeginPos := Pos('CLEAR="all"><font>', Line);
Delete(Line, 1, BeginPos+17);
EndPos := Pos('</font>',Line)-1;
description_film := Copy(Line, 1, EndPos );
HTMLdecode(description_film);
description_film := StringReplace(description_film, #13#10, '');
description_film := StringReplace(description_film, ' ', '');
//charge les résultats dans la fenêtre
SetField( fieldTranslatedTitle,titre_film);
SetField( fieldOriginalTitle,titre_original);
if titre_original = '' then
begin
SetField( fieldOriginalTitle,titre_film);
end;
SetField( fieldCategory,categorie_film );
SetField( fieldDirector,realisateur_film);
SetField( fieldYear,annee_film);
SetField( fieldCountry,pays_film);
SetField( fieldLength,duree_film);
SetField( fieldActors,liste_acteurs);
SetField( fieldDescription,description_film);
SetField( fieldURL,address);
DisplayResults;
end;
begin
if CheckVersion(3,4,0) then
begin
MovieName := GetField(fieldOriginalTitle);
if MovieName = '' then
MovieName := GetField(fieldTranslatedTitle);
if Input('cinefile.com Import avec image', 'Entrez le titre du film :', MovieName) then
begin
//remplace les caractères accentués
MovieName:= AnsiLowerCase(MovieName);
MovieName:= StringReplace(MovieName, 'é', 'e');
MovieName:= StringReplace(MovieName, 'è', 'e');
MovieName:= StringReplace(MovieName, 'à', 'a');
MovieName:= StringReplace(MovieName, 'ç', 'c');
MovieName:= StringReplace(MovieName, 'ù', 'u');
MovieName := 'http://www.cinefil.com/newsiteweb/ListeFilms.cfm?titre='+ UrlEncode(MovieName);
AnalyzePage(MovieName);
end;
end else
ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.0)');
end.