Salut à tous, j'ai fait un petit script que je voulais partager avec vous.
Il va télécharger le fond d'écran bing du jour sur un site qui les archive, et le met en fond d'écran.
Il met celui de la veille sur le bureau 2.
Je vais essayer de le faire évoluer pour gérer dynamiquement n Bureaux.
Le code est perfectible sur quelques points, j'en ai conscience, et je sais déjà où améliorer certaines choses, mais j'ai essayé de traiter différents cas de figure pour ne pas télécharger 2 fois la même image, si l'ordinateur n'a pas été allumé de plusieurs jours... Soyez indulgent, je débute en shell même si j'ai déjà programmé durant mes études.
Je l'ai rajouté à mon autostart.
Je gère les fonds d'écran avec pcmanfm mais c'est adaptable bien sûr.
J'attends vos avis et suggestions!
#!/bin/sh
#ce script télécharge le fond d'écran du jour de Bing et le met en fond d'écran.
#il met celui de la veille sur le bureau 2 ou bien le premier qu'il trouve plus vieux
#volontairement et pour ne pas compliquer le code, on ne télécharge pas le fichier de la veille
#il s'agit d'un roulement, et lors de la première exécution, il faudra soit les télécharger manuellement
#soit attendre un jour
#----------------------------------
#----------------------------------
fichier_temp="/home/tristan/.scripts_perso/tampon"
destination="/home/tristan/Images/.fond_ecran"
#----------------------------------
#----------------------------------
#boucle infinie
while true
do
calend=$(date +%Y%m%d)
#si le fond d'écran du jour n'existe pas, alors on lance la procédure
if [ ! -f "$destination/bing_$calend.jpg" ]
then
#télécharge le code source de la page
wget "http://www.istartedsomething.com/bingimages/index.php" -O "$fichier_temp/temp.txt"
#si le téléchargement a été concluant, alors on continue
if [ $? -eq 0 ]
then
#on extrait l'adresse de la dernière image
grep "jpg" <"$fichier_temp/temp.txt"> "$fichier_temp/temp1.txt"
sed -n '$ p' <"$fichier_temp/temp1.txt"> "$fichier_temp/temp.txt"
tr "=" "\n" <"$fichier_temp/temp.txt"> "$fichier_temp/temp1.txt"
tr "&w" "\n" <"$fichier_temp/temp1.txt"> "$fichier_temp/temp.txt"
grep "jpg" <"$fichier_temp/temp.txt"> "$fichier_temp/temp1.txt"
#on lit la dernière photo disponible
while read line
do
fond_actuel="$line"
done < "$fichier_temp/temp1.txt"
#on lit la dernière photo que l'on a téléchargé
while read line
do
prec_fond="$line"
done < "$fichier_temp/previous.txt"
#si elles sont différentes, alors on lance la procédure de téléchargement
if [ "$fond_actuel" != "$prec_fond" ]
then
#on purge les fichiers temporaires
rm -f "$fichier_temp/previous.txt"
rm -f "$fichier_temp/temp.txt"
rm -f "$fichier_temp/temp1.txt"
#on stocke la nouvelle image téléchargée
cp "$fichier_temp/temp1.txt" "$fichier_temp/previous.txt"
#téléchargement de l'image
wget "http://www.istartedsomething.com/bingimages/cache/$fond_actuel" -O "$destination/bing_$calend.jpg"
#si le téléchargement a été concluant, alors on continue
if [ $? -eq 0 ]
then
#on met en place le fond d'écran de la veille sur le bureau 1
wmctrl -s 0
pcmanfm -w "$destination/bing_$calend.jpg" --wallpaper-mode=stretch --one-screen
#et celui de l'avant veille sur le bureau 2
#on détermine la date de la veille
calend=`expr $calend - 1`
#initialisation du compteur (pour ne pas rentrer dans une boucle infinie si on ne trouve jamais de fichiers plus vieux)
compt=0
#tant que le fichier correspondant n'est pas trouvé, on recule d'un jour (si l'ordinateur n'est pas allumé de plusieurs jours) mais on s'arrête à 10 jours avant!
while [ ! -f "$destination/bing_$calend.jpg" ] && [ $compt -le 10 ]
do
#on incrémente le compteur
compt=`expr $compt + 1`
#on décrémente la date
calend=`expr $calend - 1`
done
wmctrl -s 1
pcmanfm -w "$destination/bing_$calend.jpg" --wallpaper-mode=stretch --one-screen
fi
fi
fi
fi
sleep 3600
done
exit 0;
#travailler sur le changement de bureau
#gérer n bureaux
#créer les dossiers et fichiers s'ils n'existent pas (previous)
BUREAU 1

BUREAU 2
Tristan