Voilà une class PHP5 utilisant l'extension DOM pour parser votre compte deviant
art et renvoyer toutes les infos nécessaires (avatar, id, gallerie, deviation).
Rien de bien compliqué mais cela rends bien des services.
Fonctionnement trés simple, je considère qu'une page retournée par deviantart
est un arbre DOM, qu'il suffira de parser avec des requêtes Xpath pour en
extraire les informations que l'on souhaite. Plus précisément pour l'application
chaque page ouaib est un objet DOMNode (c'est ce que font toutes les classes
dont le nom commence par dom). Nous pouvons donc requêter ces objets avec des
requêtes XPATH (toutes les classes commancant par deviant).
Chaque résultat de requête est stocké dans deux attributs de classes.
L'attribut NodeList est un objet ... NodeList. C'est cet objet que nous allons
itérer pour trouver toutes les déviations contenues dans le code HTML.
Un second attribut splObjectStorage est un objet splObjectStorage. Qui contient
l'ensemble des objets Deviation trouvés dans une gallerie. Le pourquoi du comment
d'un splObjectStorage plutôt qu'un array :
http://technosophos.com/content/set-objects-php-arrays-vs-splobjectstorage
Averaging this over multiple runs, SplObjectStorage executed both fill and check
functions twice as fast as the array method presented above. We tried various
permutations of the tests above.
Finalement il suffira d'itérer notre splObjectStorage est d'appliquer un callback
sur chaque objet déviation pour l'afficher.
Il est bien sûr possible de configurer l'affichage en étandant la classe display.
Il y a un exemple un peu plus bas.
! Mise en garde !
J'ai lu la charte d'utilisation et cette classe n'as pas l'air de rentrer en
conflit avec, donc si des anglophones (avertis) pouvaient me confirmer.
Par contre vous DEVEZ utiliser cette class uniquement avec VOTRE COMPTE
deviantart, je n'ai pas écrit cette API dans l'idée de piller le travail des
autres. VOUS êtes responsable de ce que vous faites !
Protips, mettez en CACHE tout ce que vous allez récupèrer, les images et les
pages HTML. Deviantart se réserve le droit de BANNIR des IP si ils considèrent
(à tort ou à raison) qu'il y a une utilisation frauduleuse du service.
Pour les curieux l'API est disponible sous forme d'archive phar (voir make.php).
N'oubliez pas la dernière version se trouve sur github :
https://github.com/inwebo/My.DeviantArtParser
|