Vous n'êtes pas identifié.
Pages: 1
Réponse : 0 / Vues : 3 490
Philippe
Je viens de me réaliser un petit script de "batch download" en PHP (téléchargement par lot, en bon français) et me disais qu'il pourrait être intéressant de vous le partager avec quelques petites explications.
L'histoire
Comme vous le savez peut-être déjà, le site Wallbase.cc ==> http://wallbase.cc/ (merveilleux site de wallpapers, sans pub, très agréable à naviguer et très bien fourni) est en train de mourir depuis quelques mois, du fait de la disparition de son administrateur.
De plus, depuis peu quelqu'un (par le biais d'un bot ?) est en train de supprimer tous les fonds d'écran du site, et les modérateurs galèrent à freiner ce problème ==> http://wallbase.cc/forum/topic/5863/60 . Ils conseillent donc de télécharger les wallpapers qu'on a mis en favoris avant que ceux-ci ne disparaissent.
C'est donc ce que j'ai fait, aidé d'un script Greasemonkey ==> http://userscripts.org/scripts/show/180620 pour récupérer plus rapidement les liens de téléchargement. Ensuite, j'aurais pu donner un petit coup de DownThemAll! et le tour était joué. Mais j'ai préféré scripter ça et envoyer direct sur mon propre serveur.
Edit 2013-12-22 : j'ai même l'impression que c'est pire que cela. Le forum ne semble plus accessibles (certains fichiers manquants ?). Mais si c'est effectivement une attaque, elle me semble plutôt étrange...
Le principe
En réalité, tout repose sur une fonction PHP bien simple nommée copy() ==> http://www.php.net/manual/en/function.copy.php . Celle-ci permet, comme vous vous en doutez, de copier un fichier d'un emplacement à un autre, et ce même depuis une URL (du moins depuis PHP 4.3).
Ainsi, pour copier une image d'un autre serveur vers le votre, il suffit de faire :
$result = copy(
'http://www.example.com/image.jpg', /* other server */
'/var/www/my-images/image.jpg' /* your server */
);
Le reste de mon script n'est en fait qu'un ensemble de commodités :
. multiples URLs : saisie dans un textarea des URLs de tous les fichiers à récupérer (une URL par ligne)
. Erreurs : affichage d'un log des réussites et échecs de téléchargement
. Téléchargement groupé : compression de tous les fichiers dans un ZIP pour pouvoir les télécharger en une fois
Vous pouvez vous-même choisir le nom du zip généré. Si vous demandez à regénérer un zip du même nom, l'ancien sera écrasé. Ainsi, si vous avez besoin d'en créer plusieurs en vue de les récupérer plus tard, c'est possible.
Configuration requise
PHP 4.3 ou supérieur (à vérifier, PHP 5 conseillé)
Droits d'écriture sur le dossier où vous placerez le script. A noter que des sous-dossier et des fichiers zips seront créés et supprimés, il est donc préférable de donner au script son propre dossier.
Le code complet :
http://pastebin.com/tGCfSPvR
Edit : J'ai créé un pastebin, où je pourrai faire d'éventuelles révisions, et où vous pourrez me faire vos remarques.
Conclusion
Certes, le code est encore un peu grossier ( j'ai envie de dire). Mais à défaut de la vie, il m'aura au moins sauvé mes favoris Wallbase.cc. Comme toujours, si vous avez des critiques ou questions, je suis à votre écoute
Réponse : 0 / Vues : 3 490
Pages: 1