script pour edonkey-divx.com

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
Jim Ownser

script pour edonkey-divx.com

Post by Jim Ownser »

Voilà, j'ai réalisé un script pour edonkey-divx.com
Il récupère :
- une image
- le titre
- le réalisateur
- l'année
- les acteurs
- la description

Il ne recherche pas seulement dans les divx mais aussi dans les jeux, les musiques etc ... Apparemment il y a un problème dans la fonction recherche de edonkey-divx. Ce n'est pas de ma faute ;-)

Voilà, si vous trouvez des bugs n'hésitez pas à me le faire savoir. (du genre si uniquement la description est remplie et pas le reste alors que sur la page tout est bien indiqué)

edonkey-divx.com (FR) (pic).ifs

Code: Select all

// GETINFO SCRIPTING
// edonkey-divx.com import with picture

(**************************************************
*  Movie importation script for:                  *
*          http://www.edonkey-divx.com            *
*                                                 *
*  (c) 2003 Jim Ownser                            *
*           owns@ifrance.com                      *
*                                                 *
*  For use with Ant Movie Catalog 3.4.1           *
*                                                 *
*  www.ant.be.tf/moviecatalog ··· www.buypin.com  *
*                                                 *
*  The source code of the script can be used in   *
*  another program only if full credits to        *
*  script author and a link to Ant Movie Catalog  *
*  website are given in the About box or in       *
*  the documentation of the program               *
***************************************************)

program edonkeydivx;
var
  MovieName: string; // nom du film à rechercher


// get a copy of the string from position "from" to position "to" included
function copyFromTo(theString : String; fromPos : integer; toPos : integer) : String;
begin
  result := copy(theString,fromPos,toPos-fromPos+1);
end;

// copy from "fromString" to "toString". It includes "fromString" and "toString" if "exclude" is false
// if fromString is '', copy from the beginning of the string
// if toString is '', copy up to the end of the string
function copySubString(theString : String; fromString : String; toString : String; exclude : boolean;caseSensitive : boolean) : String;
var
  fromPos,toPos : integer;
  tmp : String;
begin
  result := '';
  tmp := theString;
  if (caseSensitive = false) then
  begin
    fromString := AnsiLowerCase(fromString);
    toString := AnsiLowerCase(toString);
    tmp := AnsiLowerCase(tmp);
  end;

  if (fromString <> '') then
    fromPos := Pos(fromString, tmp)
  else
    fromPos := 1;

  if (fromPos > 0) then
  begin
    delete(tmp, 1,fromPos-1);

    if (toString <> '') then
      toPos := pos(toString,tmp)+fromPos-1
    else
      toPos := length(tmp)+fromPos;

    if (toPos > 0) then
    begin
      if exclude then
        result := copyFromTo(theString,fromPos+length(fromString),toPos-1)
      else
        result := copyFromTo(theString,fromPos,toPos+length(toString)-1);
    end;
  end;
end;

procedure debug(str : String);
begin
  input('debug','debug message', str);
end;

function isAbsoluteURL(url : String): boolean;
begin
  result := (pos('http://',url) = 1);
end;


procedure AnalyseMoviePage(PageContents : String);
var
  title : String;
  img : String;
  descJustifiee : String;
  description : String;
  directeur : String;
  annee : String;
  acteurs : String;
  posDesc : integer;
  i       : integer;
begin
  // <td class="TitreObjets">Midnight Express</td>
  title := copySubString(PageContents,'<td class="TitreObjets">','</td>',false,true);
  HTMLRemoveTags(title);
  HTMLDecode(title);
  SetField(fieldTranslatedTitle, title);
  SetField(fieldOriginalTitle, title);
  delete(PageContents,1,Pos('<td class="TitreObjets">',pageContents)-1);

  // <img src="main_data/B00004VXW1.jpg" width="150">
  img := copySubString(PageContents,'<img src="','" width=',true,true);
  if (isAbsoluteURL(img)) then
    GetPicture(img,false)
  else
    GetPicture('http://www.edonkey-divx.com/' + img, False);
    
  // <td class="DescJustifiee" valign="top">de Alan Parker (1978)<br>Avec Brad Davis, Randy Quaid, Bo Hopkins Plus, ...<br><br>Alan Parker met en scène sans complaisa ... </td>
  descJustifiee := copySubString(PageContents,'<td class="DescJustifiee" valign="top">','</td>',true,true);

  if (pos('de ',descJustifiee) = 1) or (pos('De ',descJustifiee) = 1) or
     (pos('Réalisé par ',descJustifiee) = 1) or (pos('réalisé par ',descJustifiee) = 1) then
  begin
    // directeur et année
    if (pos('de ',descJustifiee) = 1) or (pos('De ',descJustifiee) = 1) then
      directeur := copySubString(descJustifiee,'de ','<br>',true,false)
    else
    if (pos('Réalisé par ',descJustifiee) = 1) or (pos('réalisé par ',descJustifiee) = 1) then
      directeur := copySubString(descJustifiee,'réalisé par ','<br>',true,false);

    annee := copySubString(directeur,'(',')',true,true);
    SetField(fieldYear, annee);
    if (annee <> '') then
      directeur := copySubString(directeur,'','(',true,true);
    SetField(fieldDirector, directeur);
    delete(descJustifiee,1,pos('<br>',descJustifiee)+3);
    
    // acteurs
    acteurs := copySubString(descJustifiee,'avec ','<br>',true,false); // avec or Avec
    SetField(fieldActors, acteurs);
    delete(descJustifiee,1,pos('<br>',descJustifiee)+3);
    delete(descJustifiee,1,pos('<br>',descJustifiee)+3);

    // description
    description := descJustifiee;
    description := StringReplace(description,#13#10,'');
    HTMLRemoveTags(description);
    HTMLDecode(description);
    SetField(fieldDescription, description);
  end
  else
  begin
    HTMLRemoveTags(descJustifiee);
    HTMLDecode(descJustifiee);
    SetField(fieldDescription, descJustifiee);
  end;
  
end;

// returns true if movie has been found
// add movies to picktree
function AnalyzeSearchPage(PageContents : String) : boolean;
var
  Page: TStringList;
  MovieTitle: string;
  BeginPos : Integer;
  UrlPage : String;
begin
  BeginPos := Pos('sultat de la recherche', PageContents);
  if BeginPos > 0 then
  begin
     Delete(PageContents, 1, BeginPos);
     PickTreeClear;
     BeginPos := pos('<tr>', PageContents);
     while (BeginPos > 0) do
     begin
       Delete(PageContents, 1, BeginPos+3);

       MovieTitle := copy(PageContents, 1, pos('</tr>', PageContents)-1); // ex : <td class="ArriereListeTitre"><a href="javascript:chargementPage('../objets.php?objetsId=3789');">Aretha Franklin - Greatest hits (1980-1994)</a></td>
       UrlPage := 'http://www.edonkey-divx.com' + copyFromTo(MovieTitle,pos('/objets.php',MovieTitle),pos(''');"',MovieTitle)-1);
       HTMLRemoveTags(MovieTitle);
       HTMLDecode(MovieTitle);
       PickTreeAdd(MovieTitle, UrlPage);
       BeginPos := pos('<tr>', PageContents);
     end;
     result := true;
  end
  else
    result := false;
end;

// search the given movie
procedure Search(movie : String);
var
  PageContents : String;
  UrlPage : String;
begin
  PageContents := GetPage('http://www.edonkey-divx.com/recherche.php?objetsType=DIVX&btnconnexion=Recherche&texte='+URLEncode(movie));

  if (AnalyzeSearchPage(PageContents)) then
  begin
    if PickTreeExec(UrlPage) then
    begin
      PageContents := GetPage(UrlPage);
      SetField(fieldURL, UrlPage);
      AnalyseMoviePage(PageContents);
      DisplayResults;
    end;
  end;
end;

begin
  if CheckVersion(3,4,1) then
  begin
    MovieName := GetField(fieldOriginalTitle);
    if MovieName = '' then
      MovieName := GetField(fieldTranslatedTitle);
    if Input('edonkey-divx.com Import', 'Entrez le titre du film :', MovieName) then
    begin
     Search(MovieName);
    end;
  end else
    ShowMessage('Ce script requiert la version 3.4.1 ou supérieure de Ant Movie Catalog.');
end.
antp
Site Admin
Posts: 9630
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

merci, je l'ajouterai aux scripts ;)
TheRealMcCoy
Posts: 5
Joined: 2003-01-14 15:56:05
Contact:

Test de ce script

Post by TheRealMcCoy »

Il fonctionne bien (plusieurs imports ok) mais tous les champs ne sont pas renseignés sur le site :/

Dommage que ce site ne différencie pas clairement les jeux des films...

Bravo tout de même :grinking: Cela nous sera utile si des imports comme DVDFR ou allociné ne trouvent pas les infos...
billy boy
Posts: 10
Joined: 2003-02-04 14:50:15

Post by billy boy »

c'est super il fonctionne vachement bien de plus ce site est super bien fourni au niveau des films donc ce script est le bienvenu

tres bonne idée
TheFox

Post by TheFox »

Bravo et super ton script.
N'y connaissant rien dans cet art, peut-être pourrait-tu me dire ce qui cloche dans le script d'import 'large pict' de Alociné FR, car depuis une quinzaine de jours, les textes sont importés, mais plus les images ???
Merci
@pitbull
Posts: 28
Joined: 2003-01-31 22:07:53
Contact:

Post by @pitbull »

merci pour ce script++++++++++
@pitbull
Posts: 28
Joined: 2003-01-31 22:07:53
Contact:

Post by @pitbull »

merci++++++++++
billy boy
Posts: 10
Joined: 2003-02-04 14:50:15

Post by billy boy »

il marche plus depuis qu'ils on changer leur site tu pourrait trouver le pourquoi et nous refaire le script svp
Jim Ownser

Post by Jim Ownser »

Sisi il marche toujours. Je viens de vérifier.

En revanche lorsqu'on cherche un film et qu'il ne le trouve pas, aucun message n'est affiché.

Il suffit de modifier search de la façon suivante :

Code: Select all

// search the given movie
procedure Search(movie : String);
var
  PageContents : String;
  UrlPage : String;
begin
  PageContents := GetPage('http://www.edonkey-divx.com/recherche.php?objetsType=DIVX&btnconnexion=Recherche&texte='+URLEncode(movie));

  if (AnalyzeSearchPage(PageContents)) then
  begin
    if PickTreeExec(UrlPage) then
    begin
      PageContents := GetPage(UrlPage);
      SetField(fieldURL, UrlPage);
      AnalyseMoviePage(PageContents);
      DisplayResults;
    end;
  end
  else
    ShowMessage('Aucun Film Trouvé pour : ' + movie);
end;
Post Reply