Difficulté: Niveau intermédiaire

Objectif: Être alerté par mail lorsque vos amis publient de nouvelles notes.

Principe: Lire chacune de leurs pages, y récupérer ce qui ressemble à des liens
vers des billets, comparer ces liens à ceux récupérés lors de la dernière
tentative, faire un résumé des nouveautés et l'envoyer par mail, et enfin
remplacer l'ancienne liste par la nouvelle pour la prochaine itération.

Première étape: Récupérer la liste des adresse des blogs de vos amis. La page
http://www.vivelesrondes.com/VotrePseudo/profile contient toutes les
informations nécessaires à ce sujet. On commence donc par la télécharger:

Code : Tout sélectionner

wget http://www.vivelesrondes.com/VotrePseudo/profile

Ceci va créer un fichier profile dans le répertoire en cours, duquel nous
pourrons extraire la liste d'amis.

Code : Tout sélectionner

grep '/profile/' profile
On récupère toutes les lignes contenant
/profile/ dans le fichier profile, c'est à dire les deux lignes contenant la
liste de vos amis pour la première, et la liste de ceux qui vous ont comme amis
dans la seconde.

Code : Tout sélectionner

head -n1
On n'en garde que la première, c'est à dire la liste des
liens vers les profils de vos amis.

Code : Tout sélectionner

sed 's/,/\n/g'
On remplace les virgules par des retours à la ligne.
C'est plus simple d'avoir un ami par ligne.

Code : Tout sélectionner

sed 's/\/profile//g'
On remplace les liens vers les profils par des
liens vers les pages d'accueil de blogs (En enlevant simplement la partie
"/profile" dans chaque lien).

Code : Tout sélectionner

wget -i - -O blogs.txt --force-html
Enfin, on télécharge toutes ces pages d'accueil, et on enregistre le tout dans un fichier nommé blogs.txt

Résumé de la première étape:

Code : Tout sélectionner

grep '/profile/' profile | head -n1 | sed 's/,/\n/g' | sed 's/\/profile//g' | wget -i - -O blogs.txt --force-html


Deuxième étape: Récupérer tout ce qui peut ressembler à un lien vers un billet.
Ils sont de la forme "http://www.vivelesrondes.com/<pseudo>/<Numéro>"

Code : Tout sélectionner

grep -E 'http://www.vivelesrondes.com/[A-Za-z0-9]+/[0-9]+/' blogs.txt > links.new
On enregistre cette liste de liens dans un fichier nommé
links.new que l'on pourra comparer avec le fichier links.old créé à l'itération
précédente.

Troisième étape: On compare la nouvelle liste avec l'ancienne pour trouver les
changements depuis la dernière vérification.

Code : Tout sélectionner

diff links.old links.new
On obtient les nouveaux billet (rajoutés),
ainsi que les anciens billets disparus de la page principale, qui ne nous
intéressent pas.

Code : Tout sélectionner

grep '^> '
On ne garde que les lignes commencant par > , car elles
indiquent ce qui a été rajouté.

Code : Tout sélectionner

sed 's/^>//g' | sed 's/ /\n/g' | sed "s/'/\n/g" | sed 's/"/\n/g'

Grand nettoyage: On supprime le > du début de ligne, on remplace les espaces et
les guillements simples et doubles par des retours à la ligne, pour isoler les
adresses internet sur leurs lignes. (Toujours plus simple de travailler par
lignes)

Code : Tout sélectionner

grep http
On ne garde que les lignes contenant une adresse
internet.

Code : Tout sélectionner

grep -v post_comment > mail.txt
On retire les liens proposant de
poster un nouveau commentaire, et on enregistre cette liste de liens dans un
fichier mail.txt prêt à être envoyé par mail.

Résumé de la troisième étape:

Code : Tout sélectionner

diff links.old links.new | grep '^> ' | sed 's/^>//g' | sed 's/ /\n/g' | sed "s/'/\n/g" | sed 's/"/\n/g' |  grep http | grep -v post_comment > mail.txt


Quatrième étape: Envoyer le mail

Code : Tout sélectionner

/bin/mail -s "Mise a jour des blogs VLR" "[email protected]" < mail.txt
Rien de bien magique. Tout a déjà été préparé, y'a juste à envoyer.

Code : Tout sélectionner

mv links.new links.old
On met à jour notre base de connaissances,
afin de pouvoir comparer depuis le nouvel état dans la prochaine itération.

Cinquième étape: Planifier l'exécution.

Code : Tout sélectionner

crontab -e
On rajoute une ligne dans les tâches planifiées.

Code : Tout sélectionner

00 08 *  *   *   /home/user/update.sh >/dev/null
00 20 *  *   *   /home/user/update.sh >/dev/null
On demande une exécution tous les jours à 8h et 20h.

Résumé: Le fichier update.sh complet

Code : Tout sélectionner

#!/bin/bash
rm -f blogs.txt profile mail.txt
echo "Fetching list of friends"
wget http://www.vivelesrondes.com/VotrePseudo/profile

echo "Fetching pages (This could take a while)"
grep '/profile/' profile | head -n1 | sed 's/,/\n/g' | sed 's/\/profile//g' | wget -i - -O blogs.txt --force-html

echo "Querying titles"
grep -E 'http://www.vivelesrondes.com/[A-Za-z0-9]+/[0-9]+/' blogs.txt > links.new

echo "Checking for update"
diff links.old links.new | grep '^> ' | sed 's/^>//g' | sed 's/ /\n/g' | sed "s/'/\n/g" | sed 's/"/\n/g' |  grep http | grep -v post_comment > mail.txt

echo "Sending the mail"
/bin/mail -s "Mise a jour des blogs VLR" "[email protected]" < mail.txt

echo "Updating new state"
mv links.new links.old

N'oubliez pas de modifier VotrePseudo et [email protected].

Code : Tout sélectionner

chmod +x update.sh
Pour rendre le script exécutable.

Voilà. Il ne vous reste plus qu'à passer sous Linux.
Chaussette + pâté = éclair sauvage
et voila encore un truc où je ne comprend riiiiiien ;)
"quand le pouvoir de l'amour depassera l'amour du pouvoir le monde connaitra la Paix..." Jimi Hendrix
niveau intermediaire t'es gentil :lol:

je suis donc en dessous de intermediaire :lol:
Pourtant j'ai mis un résumé à la fin. Il y a juste à copier-coller, rendre exécutable et le planifier.

Après, personne n'est obligé de comprendre les moindres détails.
Chaussette + pâté = éclair sauvage
Continent a écrit :Pourtant j'ai mis un résumé à la fin. Il y a juste à copier-coller, rendre exécutable et le planifier.

Après, personne n'est obligé de comprendre les moindres détails.


oui c'est sur que c'est pas obligé de comprendre ds les moindres details n'empeche je suis admirative devant ceux qui les comprennent.
en tout les cas merci pour le copié collé je verrais quand j'aurais des amis ;)
momentsdesolitude en mode rémi sans amis :P
"quand le pouvoir de l'amour depassera l'amour du pouvoir le monde connaitra la Paix..." Jimi Hendrix
momentsdesolitude a écrit :
Continent a écrit :Pourtant j'ai mis un résumé à la fin. Il y a juste à copier-coller, rendre exécutable et le planifier.

Après, personne n'est obligé de comprendre les moindres détails.


oui c'est sur que c'est pas obligé de comprendre ds les moindres details n'empeche je suis admirative devant ceux qui les comprennent.
en tout les cas merci pour le copié collé je verrais quand j'aurais des amis ;)
momentsdesolitude en mode rémi sans amis :P


Tu peux rajouter dans la section "gérer mes contacts" des blogs de personnes que tu souhaites suivre régulièrement tu sais. ;)
La vie est trop courte alors ne la gaspillons pas en futilités !

Pas loin...
merci Océan :)
"quand le pouvoir de l'amour depassera l'amour du pouvoir le monde connaitra la Paix..." Jimi Hendrix
Répondre

Revenir à « Blogs VLR - Entraide technique - Habillage - Astuces »