Page 1 of 1

[FR] Script pour Alapage.com

Posted: 2003-10-16 16:19:03
by Guest
J'ai fait un script pour Alapage.com qui récupère les grandes images. J'ai toutefois un pb à résoudre avant de le mettre à disposition :
Lorsque j'ai fini de récupérer toutes les infos du films le DisplayResults me génère un message 'No Movie Found', alors que mes champs sont bien remplis. De quoi cela peut-il provenir ?
merci.

Posted: 2003-10-16 16:59:28
by antp
À mon avis ça doit venir d'ailleurs... Tu peux publier le script ? (ou me l'envoyer par mail)

Posted: 2003-10-17 18:07:24
by hainaut
Script corrigé grace a Antp. Merci. Ci-dessous le script :

Code: Select all

// GETINFO SCRIPTING
// Alapage (FR) Descriptif et image

(***************************************************
 *  Script d'importation pour :                    *
 *  ALAPAGE FRANCE , http://www.alapage.com        *
 *                                                 *
 *  (c) 2003   Thierry Colier                      *
 *                                                 * 
 *                                                 *
 *                                                 *
 *  A utiliser avec Ant Movie Catalog 3.4.0        *
 *  www.ant.be.tf/moviecatalog ··· www.buypin.com  *
 ***************************************************)

program ALAPAGE_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 AnalyzeMoviePage(Page: TStringList);
var
  Line, Value, value2, nomImg: string;
  LineNr: Integer;
  BeginPos, EndPos, BeginVal2: Integer;
  OnContinue : Boolean;
begin
   // Titre
   LineNr := FindLine('<TD width="100%" class="tx14dvdbold">', Page, 0);
   if LineNr > -1 then
   begin
      Value := Page.GetString(LineNr + 1);
      value := trim(StringReplace (Value, #9, #32)); // pour remplacer les tabulations du debut par des espaces
      HTMLRemoveTags(Value);
      Value := AnsiUpFirstLetter(AnsiLowerCase(Value));
      SetField(fieldTranslatedTitle, Value);
   end;
	
   // Acteurs
   LineNr := FindLine('<B>avec : </B>"<U><A', Page, 0);
   if LineNr > -1 then
   begin
      Line := Page.GetString(LineNr);
      Value := '';	
      repeat
         BeginPos := pos('X_LF_1" class="roll">', Line);
         if (BeginPos > 0) then
         begin
            Delete(Line, 1, BeginPos+20);
            EndPos := pos('</A></U>"', Line);
            Value := Value + Copy(Line, 1, EndPos-1) + ' - ';
         end;
      until ( BeginPos = 0);
      SetField(fieldActors, Value);
   end;
	
   // Image
   LineNr := FindLine('href="javascript:{agrandir(', Page, 0);
   if LineNr > -1 then
   begin
      Line := Page.GetString(LineNr);
      BeginVal2 := pos ('agrandir(', Line);
      Delete(Line, 1, BeginVal2+9);
      BeginVal2 := pos (',', Line);
      value2 := copy (Line, 1, BeginVal2-2);
      Line := Page.GetString(LineNr+1);

      BeginPos := pos('src="', Line) + 4;
      Delete(Line, 1, BeginPos);
      EndPos := pos('ref=v', Line);
      Value := copy(Line, 1, EndPos + 4);
      nomImg := 'http://www.alapage.com'+Value+Value2+'r.jpg';
//      nomImgVerso := 'http://www.alapage.com'+Value+Value2+'v.jpg';
      GetPicture(nomImg, False); // False = stocke l'image dans la base
   end;

   // Réalisateur
   LineNr := FindLine('">Réalisateur :  </TD>', Page, 0);
   if LineNr > -1 then
   begin
      Line := Page.GetString(LineNr+1);
      BeginPos := pos('"roll"><SPAN class="tx12noir">', Line);
      EndPos := pos('</SPAN></A>', Line);
      Value := Copy(Line, BeginPos+30, EndPos - BeginPos-30);
      SetField(fieldDirector, Value);
   end;

   // Genre
   LineNr := FindLine('">Genre :  </TD>', Page, 0);
   if LineNr > -1 then
   begin
      Line := Page.GetString(LineNr+1);
      BeginPos := pos('"roll"><SPAN class="tx12noir">', Line);
      EndPos := pos('</SPAN></A>', Line);
      Value := Copy(Line, BeginPos+30, EndPos - BeginPos-30);
      SetField(fieldCategory, Value);
   end;

   // Editeur
   LineNr := FindLine('">Editeur :  </TD>', Page, 0);
   if LineNr > -1 then
   begin
      Line := Page.GetString(LineNr+1);
      BeginPos := pos('<SPAN class="tx12noir">', Line);
      EndPos := pos('</SPAN></TD>', Line);
      Value := Copy(Line, BeginPos+23, EndPos - BeginPos-23);
      SetField(fieldProducer, Value);
   end;

   // Zone
   LineNr := FindLine('">Zone :  </TD>', Page, 0);
   if LineNr > -1 then
   begin
      Line := Page.GetString(LineNr+1);
      BeginPos := pos('<SPAN class="tx12noir">', Line);
      EndPos := pos('</SPAN></TD>', Line);
      Value := Copy(Line, BeginPos+23, EndPos - BeginPos-23);
      SetField(fieldVideoFormat, 'DVD Zone '+Value);
   end;

   // Description
   LineNr := FindLine('class="tx14grisbold">Commentaires</TD>', Page, 0);
   if LineNr > -1 then
   begin
      Value := Page.GetString(LineNr+12);
      HTMLRemoveTags(Value);
      HTMLDecode(Value);
      value := StringReplace (Value, #9, #32); // pour remplacer les tabulations du debut par des espaces
      SetField(fieldDescription, Trim(Value));
   end;

   // Bonus
   LineNr := FindLine('">Bonus / Interactivité</TD>', Page, 0);
   if LineNr > -1 then
   begin
      Value := 'Bonus / Interactivité :'+#13#10;
      repeat
      	 OnContinue := False;
         repeat
            LineNr := LineNr + 1;
            Line := Page.GetString(LineNr);
            BeginPos := pos('/puce_grise.gif" border="0" alt="">', Line);
         until ( (BeginPos > 0) or (pos('<a name="donneravis">', Line)>0) );
         if (BeginPos > 0) then
         begin
            OnContinue := True;
            LineNr := LineNr + 1;
            Line := Page.GetString(LineNr);
            BeginPos := pos('"tx12noir" colspan="2">', Line);
            EndPos := pos('<BR></TD>', Line);
            Value := Value + Copy(Line, BeginPos+23, EndPos - BeginPos-23) + #13#10;
         end;
      until ( OnContinue = False);
      HTMLRemoveTags(Value);
      HTMLDecode(Value);
      SetField(fieldComments, Value);
   end;

   DisplayResults;
end;

procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
var
  Line: string;
  MovieTitle, MovieAddress: string;
  StartPos: Integer;
  EndPos: Integer;
  LastLine: Integer;

begin
  repeat
    LineNr := LineNr + 1;
    Line := Page.GetString(LineNr);
    LastLine := Page.count;
    StartPos := pos('&VID_NUMERO=', Line);
    if ((Startpos>0) and (pos('> Disponible en <b>occasion</b>', Line) > 0 )) then StartPos := 0; // pour ne pas prendre les lignes d'occasions
    if StartPos > 0 then 
    begin
         LineNr := LineNr + 3;
         Line := Page.GetString(LineNr);
         StartPos := pos('href="/mx/?id=', Line);
         Delete(Line, 1, StartPos);
         MovieAddress := copy(Line, 6, pos('class="tx12noirbold"><u>', Line)-8 );
         Delete(Line, 1, pos('><u>', Line)+3);
         EndPos := pos('</u></A>', Line);
         MovieTitle := copy(Line, 1, EndPos-1);
         HTMLDecode(Movietitle);
         PickTreeAdd(MovieTitle, 'http://www.alapage.com' + MovieAddress);
    end;
  until ((pos('Recherche rapide ', Line) > 0) or (pos('Page suivante &raquo</DIV>', Line) > 0) or (pos('« Page précédente</a>', Line) > 0)) ;
  if (pos('« Page précédente</a>', Line) > 0) then
  begin
     StartPos := pos('<a href="', Line);
     EndPos := 	pos('" class="roll">« Page', Line);
     PickTreeAdd('... << Résultats précédents', 'http://www.alapage.com' + copy (Line, StartPos+9, Endpos-StartPos-9));
  end;
  if (pos('Page suivante &raquo</DIV>', Line) > 0) then
  begin
     StartPos := pos('|  <A href="', Line);
     EndPos := 	pos('" class="roll">Page suivante ', Line);
     PickTreeAdd('Résultats suivants >> ...', 'http://www.alapage.com' + copy (Line, StartPos+22, Endpos-StartPos-22));
  end;
end;

procedure AnalyzePage(Address: string);
var
  Page: TStringList;
  LineNr: Integer;
  Line : String;
  StartPos, EndPos : integer;
  Adr : String;
begin
  Page := TStringList.Create;
  Page.Text := GetPage(Address);

  if pos('> Caractéristiques</TD>', Page.Text) > 0 then 
  begin
    SetField(fieldURL, Address);
    AnalyzeMoviePage(Page)
  end
  else
     begin
     if pos('>1 réponse</SPAN> pour', Page.Text) > 0 then // 1 réponse, on ouvre directement la page
     begin
       LineNr := 0;
       LineNr := FindLine('&VID_NUMERO=', Page, LineNr);
       Line := Page.GetString(LineNr+3);
       StartPos := pos('href="/mx/?id=', Line);
       Delete(Line, 1, StartPos);
       Adr := 'http://www.alapage.com' + copy(Line, 6, pos('class="tx12noirbold"><u>', Line)-8 );
       SetField(fieldURL, Adr);
       Page.Text := GetPage(Adr);
       AnalyzeMoviePage(Page)
     end 
     else 
     begin
         if pos('pas trouvé de réponses', Page.Text) > 0 then // aucune réponse
         begin
              ShowMessage('Aucun Film Trouvé pour : ' + MovieName);
         end 
         else
         begin
              PickTreeClear;
              LineNr := 0;
              LineNr := FindLine('réponses</SPAN> pour "', Page, LineNr); // trouvé plusieurs réponse
              if LineNr > -1 then
              begin
                   Line := Page.GetString(LineNr);
                   StartPos := pos ('<SPAN class="tx14orangefoncebold">', Line);
                   EndPos := pos('réponses</SPAN>', Line);
                   PickTreeAdd(copy (Line, StartPos+34, EndPos-StartPos-35)+' Films Trouvés pour ' + MovieName + ' :', '');
                   AddMoviesTitles(Page, LineNr);
              end;
              if PickTreeExec(Address) then
                 AnalyzePage(Address);
         end;
     end;
  end;
  Page.Free;

end;

begin
  if CheckVersion(3,4,0) then
  begin
    MovieName := GetField(fieldTranslatedTitle);
    if MovieName = '' then
      MovieName := GetField(fieldOriginalTitle);

    if Input('Alapage.com Import', 'Entrer le titre du film :', MovieName) then
    begin
       AnalyzePage('http://www.alapage.com/mx/?tp=L&type=4&id=75071065095581&donnee_appel=BIGBO&suv_type=1&dispo=0&sort=titre&mot_vid_titre='+UrlEncode(MovieName));
    end;
  end 
  else
      ShowMessage('Ce script requiert une version plus récente de Ant Movie Catalog (au moins la version 3.4.0)');
end.

Posted: 2003-10-20 09:21:21
by hainaut
Petite correction :

aprés la ligne 139 :

Code: Select all

      Value := Page.GetString(LineNr+12);
ajouter la ligne :

Code: Select all

      
      value := StringReplace (Value, '<br>', #13#10);
permet ainsi de garder les sauts à la ligne dans la description du produit.

Posted: 2003-10-26 20:03:30
by Cleoline
J aimerais bien mettre ce script de alapage, mais je ne sais pas le faire...
et d autre part j aimerai enlever les scripts ki me sont pas utiles comme les russes, danois etc..
Merci d avance:)

Posted: 2003-10-26 20:08:00
by antp
Il suffit d'aller dans l'onglet "Éditeur", cliquer "Nouveau", coller le script dedans, puis le sauver sous un certain nom dans le dossier "Scripts".
Pour supprimer des scripts il suffit d'aller supprimer les fichiers .IFS correspondants via l'Explorateur de fichiers de Windows. Mais à la prochaine mise à jour du programme, l'installation réajoutera tous les scripts.

Posted: 2003-10-26 23:25:18
by Cleoline
Merci beaucoup Antoine pour ta reponse rapide!
Et tres efficace puisque j ai deja tout installé et suprimé !

:grinking: :grinking: :grinking: :grinking: :grinking:

Et un grand merci a Hainaut pour son script ;)

a++

Posted: 2003-10-27 16:25:49
by geant vert
marche tres bien, bravo.

Posted: 2005-11-20 16:08:07
by tekmars
le script ne marche plus chez moi :(

il y-a-t il une une solution SVP ?

Posted: 2005-11-20 16:27:42
by antp
Tu as mis à jour le soft récemment ? La dernière version du script date de mars, si jamais tu ne l'as plus mis à jour depuis longtemps le script n'est peut-être plus à jour.
Sauf si le script marchait encore il y a peu de temps, alors je suppose que c'est le site qui a changé...

Posted: 2005-11-20 21:51:27
by tekmars
j'ai réinstallé la derniere version d'AMC, mais toujours non fonctionnel. Il est probable que ça soit lié au site :/

Posted: 2005-12-23 20:22:55
by draco31.fr
Chez moi non plus le script ne semble plus fonctionner :(

Il ne trouve aucun film apperement, enfin c'est ce que dis la boite de dialogue qui apparaît : "no movie found"