lundi 19 juillet 2010

Un glouton web en sh :)

Ça faisait longtemps que l'idée me trottait dans la tête, surtout que j'avais déjà codé un certain nombre de mini scripts répondant parfaitement aux besoins du moment. Mais cette fois-ci, je me suis forcé a rendre la chose un peu plus générale. J'ai donc fait un jeu de quatre scripts permettant d'automatiser la recherche, le téléchargement et le nettoyage. Je vais détailler le travail de chacun des petits scripts, mais l'idée générale est la suivante : télécharger un ou plusieurs type de médias en masse en rapport avec un sujet quelconque.

1 - Le cherchage

Le premier script est preparedl.sh, il prepare un répertoire dédié aux futurs téléchargements et il cherche un maximum de liens sur la toile en rapport avec une recherche. On l'utilise de cette manière :
$ ./preparedl.sh "sujet" le_repertoire "mot en plus pour Google"

Il va commencer par une recherche Google, et rechercher dans le 40 premiers résultats tout les liens en rapport avec le sujet. Chaque fois qu'il trouve un autre liens, il l'empile pour plus tard. Ainsi, il va fouiller récursivement un grand nombre de page web, et va sauvegarder frénétiquement tout les liens vers les médias ou les pages en rapport avec le sujet.
Il est possible de faire par exemple :
$ ./preparedl.sh "Ben Harper" ben_harper "intitle:Index.Of"

Cette recherche a permis de trouver plus de 2600 fichier mp3 en 30 minutes. La recherche s'arrête d'elle-même lorsqu'il ne reste plus aucun lien a parcourir, mais il est possible de l'arrêter (Ctrl-C) et de reprendre (avec les résultats de la précédente recherche). Il est aussi possible de l'enrichir avec d'autre critères de recherches :
$ rm ben_harper/.download/search_result.urls
$ rm ben_harper/.download/pages.urls
$ ./preparedl.sh "Ben Harper" ben_harper "inurl:mp3 White Lies for dark times"

Dans tout les cas, aucune url n'est visitée plusieurs fois, que ce soit pour les pages ou les médias.

2 - Le downloadage

Ensuite, avant de lancer les téléchargements, vous pouvez voir ce qui a été trouvé au moyen du script stats.sh. Par exemple,
$ ./stats.sh ben_harper
Images: 0 (downloaded) / 0 (total)
Sounds: 0 (downloaded) / 2630 (total)
Videos: 0 (downloaded) / 0 (total)
Archives: 0 (downloaded) / 0 (total)
Torrents: 0 (downloaded) / 0 (total)

Pour lancer les téléchargement, vous pouvez utiliser le script dl.sh en lui donnant en paramètre les types de médias à télécharger parmi image audio video archive torrent all.
$ ./dl.sh ben_harper audio

Enfin, quand les téléchargements sont terminés, vous pouvez nettoyer les fichiers avec la commande clean.sh, elle supprime tout les fichiers ayant le même sha256. Elle fait un travail supplémentaire en supprimant les images trop petites ou ayant un format invalide. Vous voudrez surement jeter un coup d'oeil au script avant de supprimer violemment les images ayant une taille inférieure à 700x500 ;)

Voilà, les scripts ont besoin des programmes curl et wget pour fonctionner, ainsi que du programme sha256. Il sont disponibles ici http://hotgloupi.fr/glouton.tgz

0 commentaires:

Enregistrer un commentaire