[Accueil] - [Plan du site] - [Rechercher] - [ C O L R T S P ]  

 
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

Articles populaires

[Accueil] - [Plan du site] - [Rechercher] - [Admin.]       SPIP:Squelette