Fond d’écran aléatoirement téléchargé depuis un site web
par
nojhan le 26 juillet 2007
Comment afficher en fond d’écran des photos choisies au hasard parmis celles disponibles sur une page web ?
Basiquement, il suffit de faire un script shell dont la tâche essentielle sera de construire une liste d’url, le reste étant relativement facile.
Dans mon cas, la liste est simple et est disponible sous la forme d’une page de liste de fichiers servie par apache.
La fin du script n’est utile que sous l’environnement de bureau Gnome, le redimensionnement de l’image a une raison purement esthétique.
#!/bin/sh
# URL du site de base
BASE="http://www.nojhan.net/repertoire_images"
# URL des répertoires à utiliser
REPS="/machin/ /truc/"
# retourne une liste de fichiers disponibles à une URL donnée
function piclist(){
# télécharge la page, puis
# ne garde que les lignes présentant une image .jpg, puis
# supprime le HTML de présentation au début, puis
# supprime le HTML de présentation en fin de ligne
PICS=`wget -q $1 -O - | grep ".jpg"| sed -e "s/<IMG.*HREF=\"//g"|sed -e "s/\">.*/\n/g"`
for p in $PICS
do
# ajoute l'url de base au nom du fichier
# et affiche le résultat (équivalent d'un retour pour une fonction en bash)
echo $1$p
done
}
ALLPICS=""
# pour les répertoires demandés
for i in $REPS
do
echo -n "$i..."
# ajoute la liste d'image au décompte total
ALLPICS="$ALLPICS $(piclist $BASE$i)"
echo "ok"
done
# nombre d'image disponibles
COUNT=`echo $ALLPICS | wc -w`
echo "$COUNT images"
# un numéro d'image aléatoire
let NUM=$RANDOM%$COUNT
# affiche la liste des fichiers, puis
# remplace les espace par des sauts de ligne, puis
# prend les $NUM premières lignes, puis
# prend la dernière ligne
PIC=`echo $ALLPICS | sed -e "s/ /\n/g" | head -n $NUM | tail -n 1`
# télécharge l'image choisie
wget "$PIC" -O fond.jpg
# réduit la taille de 50%
convert fond.jpg -scale 50% fond.jpg
# change le fond d'écran Gnome (utile pour des noms de fichiers différents)
#gconftool-2 -set /desktop/gnome/background/picture_filename fond.jpg
# recharge le bureau Gnome
killall nautilus
Commentaires