Peut-être devez-vous occasionnellement (voir souvent) travailler sur un système de type Un*x, sur lequel – quelle horreur ! – la célèbre commande fortune est absente.
Si vous n'avez pas moyen d'installer cette commande sur le système (pas d'accès root
, pas envie de récupérer toutes les dépendances pour compiler dans un coin votre cookie), mais que vous avez python et internet, alors il existe une solution : webfortune.py.
Ce script (que vous trouverez en annexe) récupère une fortune sur le site des fortunes francophones et l'affiche à l'écran, de la même façon que la commande originelle (et utilise cette dernière si elle est présente sur le système). De plus, le script implémente une classe python qui peut être utilisée par un autre programme pour obtenir des fortunes, que ce soit depuis internet ou depuis les fortunes locales.
Servez-vous, c'est libre.
Commentaires
Je suis sous Mac OS X donc un système Unix qui n'a pas la commande fortune.
Au lancement du programme :
macbook bast$ python webfortune.py
sh: fortune: command not found
Obligé de passer par -w pour que ça fonctionne alors que si j'ai bien saisi ton explication dans ce billet il est censé détecter que fortune ne donne rien et donc passer directement en mode -w.
Désolé de ne pas prendre le temps de regarder le code chercher le problème.
++
J'utilisais le code de retour de la commande
which fortune
pour savoir si la commande était présente sur le système. Après tests sur les SunOS de la fac, je me suis rendu compte que les codes de retour de which n'étaient pas fiables : sous GNU/Linux ils changent selon la présence ou l'absence de la commande, sous SunOS ils sont toujours égal à 0 (et Mac OS X doit probablement avoir un problème similaire).J'ai modifié mon test (qui travaille maintenant sur la sortie de la commande, et vérifie qu'elle commence par un
), et ça marche sur les systèmes que j'ai sous la main. Peux-tu tester sur ton Mac OS ?Impec sur Mac OS. Merci pour la correction.
Au passage, si jamais on est pas connecté à Internet la sortie produite n'est pas des plus agréable. Tu peux y faire quelque chose ?
En effet, urllib2 est pas très content lorsqu'il découvre qu'il n'y a plus de réseau. Je lui ai demandé de s'exprimer poliment : il suffit d'intercepter une exception.
Le script a été mis à jour.
Bon ben c'est bon pour moi ;).