[REL] Script pour AnimeNewsNetwork.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.
soulsnake
Posts: 756
Joined: 2011-03-14 15:42:20
Location: France

Post by soulsnake »

Par contre en effet je pourrais mettre un autre agent-id, ne comportant pas "Indy" déjà.
UserAgent actuelle : Mozilla/5.0 (compatible; Ant Movie Catalog using Indy Library)
UserAgent possible : Mozilla/5.0 (compatible; Ant Movie Catalog)
Qu'en pensez-vous ?

Il n'y a pas de fonction pour manipuler les images via script (à part GetPicture), mais il me semble que Soulsnake avait fait des ajouts justement à ce niveau ?
J'ai ajouté une procedure ExportPicture permettant d'exporter l'image du film dans le répertoire spécifié avec le nom spécifié (sans extension).
Je vais rajouter la procedure ImportPicture pour importer une image à partir d'un fichier.
EDIT : C'est fait. ;)
antp
Site Admin
Posts: 9714
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

soulsnake wrote:UserAgent possible : Mozilla/5.0 (compatible; Ant Movie Catalog)
Qu'en pensez-vous ?
Je pense que c'est le mieux en effet ;)
soulsnake
Posts: 756
Joined: 2011-03-14 15:42:20
Location: France

Post by soulsnake »

Je pense que c'est le mieux en effet ;)
C'est modifié dans la version 4.0.0 BETA ;)
Raoul_Volfoni
Posts: 863
Joined: 2006-08-31 23:58:18

Post by Raoul_Volfoni »

soulsnake wrote:C'est modifié dans la version 4.0.0 BETA ;)
Merci snoulsnake c'est super ... :grinking: ... d'autant plus que je n'ai toujours pas de réponse de la part d'ANN :/
Raoul_Volfoni
Posts: 863
Joined: 2006-08-31 23:58:18

Post by Raoul_Volfoni »

Bonne nouvelle !!

Je ne m'étais apparemment pas adressé à la bonne personne lors de ma première tentative pour connaitre la raison du refus de connection d'AMC à ANN.
Je viens d'avoir une réponse très rapide du webmaster qui m'a remercié de lui avoir signalé le problème et qu'il a surtout résolu, puisque l'on peut désormais réutiliser la 3.5.1.2 pour récupérer les infos d'ANN.

Youhou !! :)

Un grand MERCI à Daniel Delorme le webmaster d'ANN :grinking:
baffab
Posts: 339
Joined: 2005-12-22 09:33:25
Contact:

Post by baffab »

Formidable !

Merci également à toi Raoul.
Raoul_Volfoni
Posts: 863
Joined: 2006-08-31 23:58:18

Post by Raoul_Volfoni »

Salut baffab

Pendant que t'es dans le coin, je voulais te signaler que la version 2 du 25/03/10 ne récupérait plus les images.
Voici un petit correctif que tu pourras inclure dans une prochaine mise à jour.

Code: Select all

  // Images
  BeginPos := Pos('/fit200', PageContents);
  if  ((BeginPos > 0) and (GetOption('GetImage')<>2)) then
  begin
    Value := findInfo ('/fit200', ' ', PageContents, '0');
    Value := 'http://www.animenewsnetwork.com/thumbnails/fit200' + Value;
    delete(Value,length(Value),1);
    Value := StringReplace(Value,'thumbnails/fit200x200','images');
    //if GetOption('GetImage')=1 then Value := StringReplace(Value,'.thumbnail.90','');
    GetPicture(Value);
  end;
  BeginPos := Pos('img id="vid-art"', PageContents);
  if  ((BeginPos > 0) and (GetOption('GetImage')<>2)) then
  begin
    Value := findInfo ('<img id="vid-art" src="', '">', PageContents, '0');
    GetPicture(Value);
  end;
@+
baffab
Posts: 339
Joined: 2005-12-22 09:33:25
Contact:

Post by baffab »

Chez moi cette version marche !

MAJ : rectification, ça marche pour certains mais pas tous. Donc je vais faire la modif, merci.
Raoul_Volfoni
Posts: 863
Joined: 2006-08-31 23:58:18

Post by Raoul_Volfoni »

baffab wrote:MAJ : rectification, ça marche pour certains mais pas tous.
Désolé, j'aurais du préciser que ça ne marchait pas que pour certains animés (notamment les grosses licences).
Tu as du remarqué que j'ai inséré un stringreplace à la fin du premier "if" qui permet de récupérer des images un tout petit peu plus grandes pour certains animés.
Mais la différence en souvent très infime comme pour cette animé.

Image 200x200 retaillé par le site :
Image
[Lien d'origine de l'image]
Image original 223x223 dite "grande image" :p :
Image
[Lien d'origine de l'image]

Je ne sais pas si ça vaut le coup de réactiver l'option de récupération de la petite image tellement la différence entre les 2 est mince, mais ça pourrait donner ça :

Code: Select all

  // Images
  BeginPos := Pos('/fit200', PageContents);
  if  ((BeginPos > 0) and (GetOption('GetImage')<>2)) then
  begin
    Value := findInfo ('/fit200', ' ', PageContents, '0');
    Value := 'http://www.animenewsnetwork.com/thumbnails/fit200' + Value;
    delete(Value,length(Value),1);
    if GetOption('GetImage')=0 then
    Value := Value
    else
    Value := StringReplace(Value,'thumbnails/fit200x200','images');
    GetPicture(Value);
  end;
  BeginPos := Pos('img id="vid-art"', PageContents);
  if  ((BeginPos > 0) and (GetOption('GetImage')=1)) then
  begin
    Value := findInfo ('<img id="vid-art" src="', '">', PageContents, '0');
    GetPicture(Value);
  end;
l'inconvénient c'est que si on choisis de récupérer la petite image et que la valeur "/fit200" n'existe pas dans le code source de la page, alors on ne récupérera aucune image ... Qu'en penses tu ?

Je vais t'embêter une dernière fois, pour te signaler qu'au début le script demande, "Entrez le titre du manga :" ... faudrait pas remplacer manga par animé ? ;) ... sinon les puristes vont venir te donner la fessée !! :hihi:

@+
Last edited by Raoul_Volfoni on 2011-11-09 15:53:52, edited 1 time in total.
baffab
Posts: 339
Joined: 2005-12-22 09:33:25
Contact:

Post by baffab »

Merci pour ces infos.

En essayant de prendre en compte tous les cas (enfin à peu près), j'ai un truc du genre :

Code: Select all

  // Images
  if (GetOption('GetImage')<>2) then
    begin
    // Petite image
    BeginPos := Pos('/fit200', PageContents);
    if  (BeginPos > 0) then
      begin
      ValueImg1 := findInfo ('/fit200', ' ', PageContents, '0');
      if (pos(ValueImg1,'"')>0) then ValueImg1 := findInfo ('/fit200', '"', PageContents, '0');
      if (ValueImg1<>'') then ValueImg1 := 'http://www.animenewsnetwork.com/thumbnails/fit200' + ValueImg1;
      end;
      
    // Grande image
    BeginPos := Pos('/images/encyc/', PageContents);
    if  (BeginPos > 0) then
      begin
      ValueImg2 := findInfo ('/images/encyc/', ' ', PageContents, '0');
      if (pos(ValueImg1,'"')>0) then ValueImg1 := findInfo ('/images/encyc/', '"', PageContents, '0');
      if (ValueImg2<>'') then ValueImg2 := 'http://www.animenewsnetwork.com/images/encyc/' + ValueImg2;
      end;
      
    // Autre
    BeginPos := Pos('img id="vid-art"', PageContents);
    if  (BeginPos > 0) then
      begin
      ValueImg3 := findInfo ('<img id="vid-art" src="', '">', PageContents, '0');
      end;
      
    if (GetOption('GetImage')=0) and (ValueImg1<>'') then
        Value := ValueImg1
    else if ((GetOption('GetImage')=1) and (ValueImg2<>'')) or (ValueImg1='') then
        Value := ValueImg2
    else
        Value := ValueImg3;
    
    GetPicture(Value);
    
  end;
A vérifier avec plusieurs titres.

Pour info je suis plutôt puriste, ça m'étonne donc de l'avoir laissé passer...
Raoul_Volfoni
Posts: 863
Joined: 2006-08-31 23:58:18

Post by Raoul_Volfoni »

(a propos de ton code au dessus)
:/ ... Ah ouais quand même !!
C'est là où on voit la différence entre un gars dont c'est le métier, et le "pov" amateur qui bricole dans son coin !! :D
Ton code est clair et bien foutu, tandis que le mien ressemble à une grosse rustine ... mal posée en plus :lol:

Je vais tester ça de mon côté avec ma maigre base d'animés.

baffab wrote:Pour info je suis plutôt puriste, ça m'étonne donc de l'avoir laissé passer...
Ben alors ... cul nu devant tout le monde :D


Sinon ça doit être ta fête aujourd'hui ou un truc dans le genre !! :p ... parce que j'ai repéré un autre truc qui coince
La description est mal récupéré avec les animés Chaos;Head et Vampire Knight Guilty (je n'ai trouvé que ces deux là pour l'instant)
Apparement, ce sont les fiches qui ont 2 résumés qui posent problèmes.

En remplaçant le FindInfo de la section "// Plot Summary" de ça :

Code: Select all

    Value := findInfo('<SPAN>', '</SPAN>', PageContents, '0');
par ça :

Code: Select all

    Value := findInfo('Plot Summary:', '</DIV>', PageContents, '0');
Ça semble résoudre le problème. Ça récupère les résumés des fiches "normales" et pour celles qui en ont 2, seul le premier résumé est récupéré.
baffab
Posts: 339
Joined: 2005-12-22 09:33:25
Contact:

Post by baffab »

Et si on remplace par :

Code: Select all

    Value := findInfo('</STRONG> ', '<DIV CLASS="encyc', PageContents, '3');
    Value := StringReplace(Value, '<DIV CLASS="tab">', '* ');  //cas avec plusieurs résumés
    Value := deleteTab(Value);
Ça donne quoi chez toi ?
Raoul_Volfoni
Posts: 863
Joined: 2006-08-31 23:58:18

Post by Raoul_Volfoni »

baffab wrote:Et si on remplace par :

Code: Select all

    Value := findInfo('</STRONG> ', '<DIV CLASS="encyc', PageContents, '3');
    Value := StringReplace(Value, '<DIV CLASS="tab">', '* ');  //cas avec plusieurs résumés
    Value := deleteTab(Value);
Ça donne quoi chez toi ?
Tu veux donc récupérer les deux résumés ?
Sinon ça marche, mais pour fignoler, je rajouterais cette ligne avant le setfield histoire de supprimer tous les retours à la ligne de la fin.

Code: Select all

    while Pos((#13#10), copy(Value,length(Value)-length(#13#10)+1,length(Value))) > 0 do Value := DeleteEnd(Value, #13#10);


Sinon concernant le code de récupération de l'image :

- Le FindInfo de "ValueImg2" n'est pas bon. Ce serait plutôt :

Code: Select all

      ValueImg2 := findInfo ('/images/encyc/', '"', PageContents, '0');
- Le fait de forcer la recherche sur "/images/encyc/" produit des trucs curieux.
Sur Samourai Champloo par exemple le script arrive à trouver une image (ValueImg2) qui n'apparait nulle part sur le site !! (Il s'agit en fait de l'ancienne image utilisée par le site avant d'être remplacée par une plus grande pseudo fan-art)
Image
[Lien d'origine de l'image]
De plus le script considère cette image (au dessus) comme étant la grande image ... alors qu'en fait la grande image est celle ci (ValueImg3)(Pseudo Fan-Art)
Image
[Lien d'origine de l'image]

Apparemment l’existence de la valeur (ValueImg2) est toujours vraie, donc on n'obtiendra jamais l'image de la valeur (ValueImg3).
je ne sais pas si je suis très clair !! j'ai la crève et j'ai du mal à aligner mes 2 neurones !! :D

En modifiant les conditions de la fin du code pour que ce soit plus logique , on obtient :

Code: Select all

// Images
  if (GetOption('GetImage')<>2) then
    begin
    // Petite image
    BeginPos := Pos('/fit200', PageContents);
    if  (BeginPos > 0) then
      begin
      ValueImg1 := findInfo ('/fit200', ' ', PageContents, '0');
      if (pos(ValueImg1,'"')>0) then ValueImg1 := findInfo ('/fit200', '"', PageContents, '0');
      if (ValueImg1<>'') then ValueImg1 := 'http://www.animenewsnetwork.com/thumbnails/fit200' + ValueImg1;
      end;

    // Grande image
    BeginPos := Pos('/images/encyc/', PageContents);
    if  (BeginPos > 0) then
      begin
      ValueImg2 := findInfo ('/images/encyc/', '"', PageContents, '0');
      if (pos(ValueImg1,'"')>0) then ValueImg1 := findInfo ('/images/encyc/', '"', PageContents, '0');
      if (ValueImg2<>'') then ValueImg2 := 'http://www.animenewsnetwork.com/images/encyc/' + ValueImg2;
      end;

    // Autre
    BeginPos := Pos('img id="vid-art"', PageContents);
    if  (BeginPos > 0) then
      begin
      ValueImg3 := findInfo ('<img id="vid-art" src="', '">', PageContents, '0');
      end;

    if (GetOption('GetImage')=0) and (ValueImg1<>'') then
        Value := ValueImg1
    else if ((GetOption('GetImage')=1) and (ValueImg3<>'')) or (ValueImg1='') then
        Value := ValueImg3
    else
        Value := ValueImg2;

    GetPicture(Value);

  end;
Qu'est ce que ça dit chez toi ?
Last edited by Raoul_Volfoni on 2011-11-09 15:57:08, edited 1 time in total.
baffab
Posts: 339
Joined: 2005-12-22 09:33:25
Contact:

Post by baffab »

L'image 3 est plus une bannière qu'une grande image. Il faudrait donc plutôt la rajouter dans les options en tant que choix.

J'ai fait une beta qui contient d'autres évolutions (en test) : animenewsnetwork_beta

Je vais rajouter la gestion de cette image

MAJ : beta2 (on commence à approcher du but)
Raoul_Volfoni
Posts: 863
Joined: 2006-08-31 23:58:18

Post by Raoul_Volfoni »

baffab wrote:MAJ : beta2 (on commence à approcher du but)
Ah flute ... j'allais te répondre quand j'ai vu que t'avais posté une beta2 !! Tu vas trop vite pour moi ... ;)
Apparemment t'as juste nettoyé et commenté sur la beta2 ... c'est ça ?

Sinon du peu que j'ai pu testé, ça marche de mon côté.

Mais dis moi, t'aurais pas un xenesys de planqué quelque part ... :hihi: ... parce que les ajouts que tu as implanté lui plairait assez je pense.

Par contre j'ai pas trouvé d'animés dans ma base où il y a un "Based on:"
T'as 1 ou 2 titres à me filer ?

Pour terminer, pourquoi ne prendrais tu pas la moyenne arithmétique présente dans les "Users Ratings" pour attribuer une note à la fiche ?
baffab
Posts: 339
Joined: 2005-12-22 09:33:25
Contact:

Post by baffab »

Pour le "Based on:" tu as Arrietty par exemple, qui indique le roman dont est issu l'animé.

Pour la note j'y pensais sans trop savoir quelle valeur prendre (disons que j'avais mis ça de coté) mais je vais le rajouter.


MAJ : une beta3 avec la note
Raoul_Volfoni
Posts: 863
Joined: 2006-08-31 23:58:18

Post by Raoul_Volfoni »

Ok ça marche ... Merci pour tout :grinking:

Bonne soirée à toi
baffab
Posts: 339
Joined: 2005-12-22 09:33:25
Contact:

Post by baffab »

Allez je valide cette version pour la V3.
baffab
Posts: 339
Joined: 2005-12-22 09:33:25
Contact:

Post by baffab »

Quelques corrections pour une nouvelle version (v4)
baffab
Posts: 339
Joined: 2005-12-22 09:33:25
Contact:

Post by baffab »

Hello,

J'ai refais le script en partant sur des bases différentes pour cette V5. Il est plus facile à maintenir mais peut être un peu moins complet sur la partie staff. J'ai mis à jour le premier post avec la description des options du script.
Post Reply