EDIT: Tout est désormais géré sur le wiki:
https://sebsauvage.net/wiki/doku.php?id=fortunes-fr
"fortune" est un programme GNU/Linux très connu qui affiche des citations. On s'en sert souvent pour afficher une citation quand on ouvre une session ou un terminal. On peut aussi s'en servir dans l'économiseur d'écran Phosphor (
https://youtu.be/G6ZWTrl7pV0) ou StarWars (
https://youtu.be/UUjC-6e7y_U).
Mais les fichiers de citations fournis sont beaucoup trop anciens à mon goût, et trop anglophone. J'ai donc récupéré 69213 citations en français d'un site web et compilé le fichier. Il y a de tout, de Confucius jusqu'à Les Nuls. Voici les instructions pour l'installer:
1) Récupérez le fichier:
http://sebsauvage.net/files/fortune/citation-celebre.7z (2 Mo, md5 b0e056e0f78434c35659b9889061286f) et décompressez-le.
2) Virez les citations existantes si vous le souhaitez: sudo rm -rf /usr/share/games/fortunes/*
3) Copiez ces nouvelles citations: sudo cp citation-celebre.com* /usr/share/games/fortunes
4) Et voilà, vous pouvez profiter des citations: fortune
PS: Gilles me fait remarquer que si vous n'êtes pas root, vous pouvez juste spécifier le chemin de vos fichiers fortunes en ligne de commande ^ ^
Notez que la plupart des économiseurs d'écran (Phosphor, StarWars) n'aime pas UTF-8, donc dans la configuration de xscreensaver, onglet "Avancé", section "Manipulation de texte", dans le programme à lancer mettez: fortune | iconv -f UTF-8 -t 8859_1
Et si vous voulez le script qui a permis de pomper les citations, c'est un sale bricolage rapide, mais ça marche:
http://sebsauvage.net/files/fortune/scraper-citation-celebre.py
(ou ici:
http://sebsauvage.net/paste/?12bf3badbd066925#24uaJVn4zDNKymWTEYzOIAdInksekhSyCJYvWqw7/Qw= )
Petites remarques sur le source:
- lxml est excellent pour parser des pages html. Non seulement on peut utiliser xpath pour sélectionner ce qui nous intéresse (j'aime xpath), mais il est beaucoup plus rapide que BeautifulSoup. Et puis je n'arrive toujours pas à me faire à Scrapy (pas le temps de m'investir dedans).
- Quant à la classe dbdict que j'ai incluse dans le source, c'est juste une classe pour feignasse pour stocker rapidement des données (clé,valeur) sans se faire chier (Côté Python c'est juste un objet de type dictionnaire, mais il stock ses données dans une base SQLite.)
EDIT: dbdict étant largement pas optimal, il faudrait peut-être que je fasse un truc du genre:
UPDATE OR IGNORE ...
INSERT OR IGNORE ...
dans le __setitem__, ça serait peut-être plus efficace.