Bonjour,
Je poste un script pour télécharger toutes les minis BDs du site "Cyanide & Happiness" à l'adresse
http://www.explosm.net/comics/new/
J'ai en fait amélioré un script proposé suite à une demande d'une personne sur un forum :
http://forums.whirlpool.net.au/forum-replies.cfm?t=836271
Au premier lancement du script il télécharge toutes les images dans le dossier contenant le script.
Au début ça peut prendre du temps parce qu'il y a déjà + de 1800 images à l'heure actuelle.
Mais après, lors des prochains lancement du script dans le dossier contenant les images déjà téléchargé, le script télécharge seulement les nouvelles images disponibles.
Ce script permet donc d'avoir toutes les BDs de "Cyanide & Happiness" et de tenir la collection à jour.
#!/bin/sh
# Cyanide & Happiness
# Download images of the site : www.explosm.net
OLDIFS=$IFS
IFS='
'
# Begin :
echo
echo "Cyanide & Happiness"
echo
if [ -f "index.html" ]; then
rm -f index.html
fi
# Last picture to download :
wget -q "http://www.explosm.net/comics/new/"
END="`grep -o 'URL="http://www.explosm.net/comics/[^"]*"' index.html | sed 's/\/"//'`"
END="`basename $END`"
# Last picture downloaded :
BEGIN="`ls . | sort -n -r | head -n 1`"
BEGIN="${BEGIN%%-*}"
if [ -s "$BEGIN" ];then
BEGIN="14"
fi
if [ "$BEGIN" -ge "$END" ]; then
{
rm index.html
echo "\"Cyanide & Happiness\" COMPLETE !"
sleep 1
exit 0
}
fi
BEGIN=`expr $BEGIN + 1`
echo " Download n° $BEGIN to n° $END :"
echo
# Downloading :
for PICTURE in `seq $BEGIN $END`
do
rm -f index.html
wget -q "http://www.explosm.net/comics/$PICTURE/"
IMAGE=$(grep -o 'http://www.explosm.net/db/files/[^"]*"' index.html | grep -o '[^"]*')
if [ -n "$IMAGE" ];then
{
FILENAME=$(basename $IMAGE)
FILENAME="`echo \"$FILENAME\" | sed 's/\.gif$/\.jpg/'`"
OUTPUT=$(echo "$PICTURE-$FILENAME")
echo " -> $PICTURE-$FILENAME"
wget -q -O "$OUTPUT" $IMAGE
}
else
echo " -> No Picture n°$PICTURE !"
fi
done
# End :
rm index.html
IFS=$OLDIFS
echo
echo "DOWNLOAD COMPLETED !"
sleep 1
exit 0
Le code est bien sur à placer dans un fichier que l'on rend exécutable.
Faut avoir internet pour utiliser le script bien évidemment.
J'espère qu'il fonctionnera bien chez tout le monde.
🙂
Edit : Prise en compte des fichiers dont le nom contient des espaces (comme l'image 85 et 359 du site).