MENU Le Forum Vive les rondes Connexion

Surveiller les blogs de vos amis

42 ans Weßling 320
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:
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:
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:
head -n1
On n'en garde que la première, c'est à dire la liste des
liens vers les profils de vos amis.
Code:
sed 's/,/\n/g'
On remplace les virgules par des retours à la ligne.
C'est plus simple d'avoir un ami par ligne.
Code:
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:
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:
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:
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:
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:
grep '^> '
On ne garde que les lignes commencant par > , car elles
indiquent ce qui a été rajouté.
Code:
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:
grep http
On ne garde que les lignes contenant une adresse
internet.
Code:
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:
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:
/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:
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:
crontab -e
On rajoute une ligne dans les tâches planifiées.
Code:
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:

#!/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:
chmod +x update.sh
Pour rendre le script exécutable.

Voilà. Il ne vous reste plus qu'à passer sous Linux.
43 ans toulouse 973
et voila encore un truc où je ne comprend riiiiiien ;)
44 ans là 5969
niveau intermediaire t'es gentil :lol:

je suis donc en dessous de intermediaire :lol:
42 ans Weßling 320
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.
43 ans toulouse 973
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
42 ans au milieu des poissons 7816
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. ;)
43 ans toulouse 973
merci Océan :)
B I U
☺