Code: Select all
(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=PhG
Title=Up Date Year Filed
Description=UpDate Year Field for Allocine and Cinemotion pages when the URL is already present in the URL Field
Site=Allocine, Cinémotion
Language=FR
Version=1.0
Requires=3.5.1
Comments=Fell Free to add your own sites
License=
GetInfo=0
[Options]
Debug=0|0|1=Mode Débug|0=Mode Normal
***************************************************)
program UpDateYearFiled;
uses
ScorEpioNCommonScript, StringUtils1;
var
AdressWeb, AnneeTrouvee : String;
Allocine: Boolean;
//------------------------------------------------------------------------------
// FONCTIONS
//------------------------------------------------------------------------------
{ **************************
Copie une chaine sur le Disque Dur
Pratique pour "Dumper" le résultat de la récupération d'une page web
DumpPage(Chemin d'accès du fichier, Chaine);
Chemin d'accès du fichier = Chemin complet (ex: 'c:\temp\monfichier.txt')
note: Le répertoire (si il en existe un) doit être crée avant
}
procedure DumpPage(filePath, WholeText: string);
var
page: TStringList;
begin
page := TStringList.Create;
page.Text := WholeText;
page.SaveToFile(filePath);
page.Free;
end;
{ **************************
Recupère l'année en ayant une page Allocine à analyser
}
function anneeFilmCourant(Line : String): String;
var
EndPos : Integer;
begin
if pos(UTF8Encode('Année de production :'), Line) > 0 then
begin
anneeFilmCourant := findInfo(UTF8Encode('Année de production :'), '</a>', Line,'0');
end;
end;
{ **************************
Recupère l'année en ayant une page web à analyser
}
function RecupYear(UnePageWeb : String; PageAllocine : Boolean): string;
var
Line, FilePath, Value : String;
BeginPos, EndPos : Integer;
Begin
//MiseEnPlace de certaines variables
FilePath := 'C:\Page.txt';
Line :=''; // Si ce n'est ni une page Allocine ni une page Cinémotion
// Si c'est une page Allocine
if PageAllocine then
begin
// Récupère le code source de la page Web
Line := GetPage(UnePageWeb);
// Dump le contenu de la variable dans un fichier texte
// Uniquement pour le mode Debug
if GetOption('Debug') = 1 then DumpPage(FilePath, Line);
// récupère l'année
if pos(UTF8Encode('Année de production :'), Line) > 0 then Line := FullTrim(anneeFilmCourant(Line));
end
else
Begin
// Si c'est une page Cinemotion
if Pos('cinemotion',LowerCase(UnePageWeb)) > 0 then
begin
// Récupère le code source de la page Web
Line := GetPage(UnePageWeb);
//première réduction
BeginPos := pos(UTF8Encode('<TR style="height:101;" valign="top">'), Line);
if BeginPos > 0 then delete(Line, 1, BeginPos+length(UTF8Encode('<TR style="height:101;" valign="top">'))-1);
EndPos := pos('<fb:like href=', Line);
Value := copy(Line,0,EndPos-1);
// deuxième réduction
BeginPos := pos(UTF8Encode('<font face="arial" size="2">'), Value);
if BeginPos > 0 then delete(Value, 1, BeginPos+length(UTF8Encode('<font face="arial" size="2">'))-1);
EndPos := pos('</font>', Value);
Value := fulltrim(copy(Value,1,EndPos-1));
// Uniquement pour le mode Debug
if GetOption('Debug') = 1 then DumpPage(FilePath, Value);
// récupère l'année
Line := copy(Value,1,4);
end
end
RecupYear := Line;
End;
//------------------------------------------------------------------------------
// PROGRAMME PRINCIPAL
//------------------------------------------------------------------------------
begin
// MiseEnPlace de certaines Variables
Allocine := False;
if GetField(fieldYear) = '' then
begin
// récupère l'adresse URL
if GetField(fieldURL) <> '' then
begin
AdressWeb := GetField(fieldURL);
if pos('http',AdressWeb) > 0 then
Begin
// Page Allocine ou Cinemotion ?
if Pos('allocine',LowerCase(AdressWeb)) > 0 then Allocine := True;
AnneeTrouvee := RecupYear(AdressWeb, Allocine);
SetField(fieldYear, AnneeTrouvee);
end;
end;
end;
end.