WEBCOMICS
(voir aussi
ce script pour XKCD)
Ce script permet de télécharger les dernières parutions de webcomics, et l'affiche via Eye of GNOME (les kdistes n'ont qu'à éditer le script), à condition que la page contenant l'image la plus récente ait une adresse fixe. Il ne peut télécharger que la dernière parution, donc mieux vaut l'exécuter tous les jours (par exemple au démarrage du PC).
Il se configure via le fichier "~/.yeveuyeveu". Chaque ligne du fichier correspond à une série, et est organisée sous la forme de champs séparés par des ";" :
1) l'adresse de la page web
2) le dossier ou stocker l'image
3) un motif permettant d'identifier la ligne contenant l'url de l'image (il est passé à grep, qui
doit retourner une unique ligne)
4) la position de l'url dans la ligne, exprimée en "champs" séparés par des " (exemple : dans <img alt="webcomic" src="url/vers/l/image.png">, c'est 4). Ce nombre est toujours pair 😉.
fichier .yeveuyeveu pour xkcd, Dilbert et geekscottes :
xkcd.com/index.html;/home/nicolas/Images/WebComics/xkcd;src="http://imgs.xkcd.com/comics/;2
dilbert.com/index.html;/home/nicolas/Images/WebComics/Dilbert;http://dilbert.com/dyn/str_strip/;12
nojhan.net/geekscottes/index.php;/home/nicolas/Images/WebComics/Geekscottes;src="./strips/;6
et le script
#!/bin/bash
while [ $1 ] ; do
case $1 in
"-d" | "-D" )
debug=1
esac
shift
done
if [ $debug ] ; then
function Decho { echo $1 ; }
echo "---Débug---"
else
function Decho { true ; }
fi
files=
while read site ; do
url=$(echo $site | cut -d\; -f1)
Decho "url (page) : $url"
dir=$(echo $site | cut -d\; -f2)
Decho "répertoire : $dir"
motif=$(echo $site | cut -d\; -f3)
Decho "motif : $motif"
num=$(echo $site | cut -d\; -f4)
Decho "champ (\") : $num"
mkdir -p $dir
cd $dir
Decho "Ping... "
if ping -c 1 "$(echo $url | cut -d/ -f1)" &> /dev/null ; then
Decho "Serveur disponible"
line=
while [ ! "$line" ] ; do
Decho "Téléchargement de la page..."
line=$(wget -q --output-document=- $url | grep $motif)
done
Decho "Page web téléchargée"
Decho "ligne extraite : $line"
img_url=$(echo "$line" | cut -d\" "-f$num")
if [ ${img_url:0:1} = . ] ; then
img_url="`dirname "$url"`/${img_url:2}"
fi
Decho "url (image) : $img_url"
wget -nc "$img_url" 2>&1 | grep "déjà présent; pas de récupération." &> /dev/null || (Decho "Image téléchargée" && eog "$(basename "$img_url")" &)
else
Decho "Impossible d'atteindre le serveur"
fi
Decho
done < ~/.yeveuyeveu