[REL] Update Year Field from Allocine and CinEmotion

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
PhGrivel
Posts: 7
Joined: 2011-01-27 15:24:25

[REL] Update Year Field from Allocine and CinEmotion

Post by PhGrivel »

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.
Post Reply