#1 Le 15/03/2009, à 16:19
- grim7reaper
Vie de Merde dans votre terminal
Bonjour à tous,
J'ai eu l'idée de ce script en tombant sur ce post Bashfr dans votre terminal ?.
Le projet
J'ai trouvé le script de tOkeshu totalement inutile donc indispensable . J'en ai aussitôt fait profiter plusieurs de mes amis. Cependant, certaines blagues de Bashfr étant plutôt orientées "geek" elles n'ont pas toujours été comprises par ceux qui les ont vues.
Plusieurs personnes m'ont alors demandé si je ne pouvais pas prendre les quotes sur Vie de Merde à la place de bashfr. J'ai donc décidé d'adapter le script.
Pour cela, je me suis inspiré du script créé par tOkeshu, puis je l'ai modifié et adapté pour qu'il aille récupérer les quotes sur le site Vie de Merde plut que sur bashfr.
Présentation du programme
Nom : vdm
Date de création : 15 mars 2009
Version : 1.0
Langage : Perl
Installation
Tout d'abord il faut rendre le script exécutable en tapant la commande suivante : chmod u+x vdm.
Ensuite il suffit de modifier la variable $PATH (ajouter cette ligne dans votre .bashrc : PATH=$PATH:/chemin/du/dossier/contenant/le/script)
Enfin, pour exécuter le script il suffit de taper dans un terminal la commande suivante : vdm --choix=categorie --number=x. Il faut remplacer catégorie par l'une des catégories disponibles et x par le numero d'apparition de la quote dans la page.
Pour lancer le script à chaque lancement d'un terminal il faut ajouter la ligne suivante au .bashrc :
~/chemin/de/vdm --choix=aleatoire | cowsay -f $(/bin/ls /usr/share/cowsay/cows -1 | head -n $(expr $$$(date +%s) % $(ls /usr/share/cowsay/cows | wc -w) + 1) | tail -n 1) -W 70
Cette variante nécessite d'avoir le programme cowsay installé sur votre ordinateur.
Code du script
#!/usr/bin/perl
#*********************************************#
# quote-from-vdm #
# écrit par grim7reaper #
# 15 mars 2009 #
# #
# version 1.0 #
# #
# Récupère les citations du site #
# viedemerde.fr #
#*********************************************#
# ------------------------------------------------------------------#
# Ce script prépare et traite les citations du site viededemerde.fr #
# Il accepte 10 arguments possible : #
# -latest | -aleatoire | -top | -amour | -argent | -enfant | #
# -travail | -sante | -sexe | -inclassable #
# #
# Ils correspondent au 10 pages de citation de vdm : #
# #
# http://www.viedemerde.fr/ #
# http://www.viedemerde.fr/aleatoire #
# http://www.viedemerde.fr/top #
# http://www.viedemerde.fr/amour #
# http://www.viedemerde.fr/argent #
# http://www.viedemerde.fr/enfant #
# http://www.viedemerde.fr/travail #
# http://www.viedemerde.fr/sante #
# http://www.viedemerde.fr/sexe #
# http://www.viedemerde.fr/inclassable #
# #
# -n est un argument qui est utilisé avec les 10 premiers: #
# Il permet de sélectionner une quote parmis les différentes #
# pages énoncées. #
# #
# Le choix par défaut est aleatoire. #
# ------------------------------------------------------------------#
#use strict;
#use warnings;
#declaration des options disponibles
use vars qw ($help $h $latest $aleatoire $top $amour $argent $enfant $travail $sante $sexe $inclassable $n);
#utilisation du module Getopt::Long pour gérer les options multi-caractères
use Getopt::Long;
# On récupère directement la page HTML.
use LWP::Simple;
GetOptions("help"=>\$help,
"h"=>\$help,
"choix=s"=>\$choix,
"c=s"=>\$choix,
"number=i"=>\$number,
"n=i"=>\$number,
);
my $quote=""; # Variable qui contient la quote
my $quote_number=1; # Variable qui permet de décompter le nombre de citations parcourues.
my $option=""; # Variable qui contient le choix de l'utilisateur
my $url="http://www.viedemerde.fr/"; # Variable qui contient l'url de la page html à récuperer
my $source=""; # Variable qui contient la page correspondant à l'url
my @ligne; # Tableau contenant toute les lignes de la page (1 ligne par case)
if($help) # Si l'option est help on affiche l'aide
{
print "NOM\n";
print "\tvdm - récupère une quote du side viedemerde.fr et l'affiche dans le terminal\n\n";
print "SYNOPSIS\n";
print "\tvdm> --choix=categorie --number=numéro\n\n";
print "DESCRIPTION\n";
print "\tCe script prépare et traite les citations du site viededemerde.fr\n";
print "\tIl accepte 2 options : --choix et --number\n\n";
print "\tL'option --choix accepte 10 arguments possible :\n";
print "\tlatest | aleatoire | top | amour | argent | enfant | travail | sante | sexe | inclassable\n\n";
print "\tL'option --number prend un entier en argument\n\n";
print "\tEn l'abscence d'option et d'argument, le choix par défaut est --choix=latest --number=1\n\n";
print "\tOn peut combiner ce script, après l'avoir rendu executable et modifier le PATH, avec cowsay grâce à la ligne de commande suivante :\n";
print "\tvdm --choix=aleatoire | cowsay -f $(/bin/ls /usr/share/cowsay/cows -1 | head -n $(expr $$$(date +%s) % $(ls /usr/share/cowsay/cows | wc -w) + 1) | tail -n 1) -W 70\n\n";
print "OPTIONS\n";
print "\t-c=<categorie>, --choix=<categorie> \n\n";
print "\t\tpermet de choisir la catégorie de la quote \n\n";
print "\t-n=<numero>, --number=<numéro> \n\n";
print "\t\tpermet de convertir tout les fichiers du repertoire courant\n\n";
print "\t-h, --help \n\n";
print "\t\tafficher l'aide \n\n";
print "AUTEUR\n";
print "\tEcrit par grim7reaper\n\n";
exit;
}
# On teste les options
if($choix)
{
if($choix eq "latest") # Si l'argument de l'option choix est latest on ne rajoute rien à l'url
{
$choix="";
}
elsif($choix eq "aleatoire" || $choix eq "top" || $choix eq "amour" || $choix eq "argent" || $choix eq "enfants" || $choix eq "travail" || $choix eq "sante" || $choix eq "sexe" || $choix eq "inclassable")
{
$option=$choix; # Sinon si l'argument existe on le stock dans $ choix pour l'ajouter à l'url
}
else # Sinon c'est que l'argument de l'option choix n'existe pas donc on affiche un message d'erreur
{
print "Argument invalide pour l'option --choix ou -c\n";
print "L'argument doit etre latest, aleatoire, top, amour, argent, enfants, travail, sante, sexe ou inclassable\n";
exit;
}
}
# Si l'option number est declarée
if($number)
{
$quote_number=$number; # On récupère l'argument de l'option pour le stocker
}
$url.=$option; # on ajoute l'option à l'url
$source = get($url); # On récupère toute la page html
@ligne = split(/\n/,$source); # On récupère chaque ligne dans un tableau.
# On parcours tout le tableau.
foreach $_ (@ligne)
{
if(/Aujourd'hui.+VDM/ && !/concept/ && !/Lire la suite/) # Si la ligne contient Aujourd'hui suivi de 1 ou plusieurs caractères quelconque
# suivi de VDM et que ce n'est pas celle rappelant le concept
# ni celle qui n'est pas entierement sur une page (la VDM people)
{
if($quote_number==1) # Si on est arrivé a la quote désiré
{
$quote=$&; # On prend uniquement la partie de la ligne qui correspond à l'expression régulière.
break;
}
$quote_number--;
}
}
# On élimine toute les balise du type <> et leur contenu.
$quote=~s/<[^>]+>//g;
# On garde seulement la partie de la chaine contenu avant le diese
if($quote=~/(.+)#.+/)
{
$quote=$1;
}
# On substitue le codage HTML des caractères spéciaux par leur équivalents
$quote=~s/"/"/g;
$quote=~s/&/&/g;
$quote=~s/</</g;
$quote=~s/>/>/g;
$quote=~s/œ/Œ/g;
$quote=~s/ / /g;
$quote=~s/°/°/g;
$quote=~s/À/À/g;
$quote=~s/Ã/à/g;
$quote=~s/Ç/Ç/g;
$quote=~s/È/È/g;
$quote=~s/É/É/g;
$quote=~s/Ê/Ê/g;
$quote=~s/ï/ï/g;
$quote=~s/&\#039;/'/g;
$quote=~s/é/é/g;
$quote=~s/à/à/g;
$quote=~s/â/â/g;
$quote=~s/ç/ç/g;
$quote=~s/è/è/g;
$quote=~s/é/é/g;
$quote=~s/ê/ê/g;
$quote=~s/ë/ë/g;
$quote=~s/î/î/g;
$quote=~s/ô/ô/g;
$quote=~s/ù/ù/g;
$quote=~s/û/û/g;
# On affiche la quote après traitements
print "$quote\n";
# Bloc de documentation pod, pour obtenir une documentation style page de man
# au format HTML il suffit le lancer la commande suivante : pod2html --title=VDM vdm > vdm_doc.html
# d'autres formats de sortie sont possible ...
=pod
=head1 NOM
vdm - récupère une quote du side viedemerde.fr et l'affiche dans le terminal
=head1 SYNOPSIS
B<vdm> B<--choix=>categorie B<--number=>numéro
=head1 DESCRIPTION
Ce script prépare et traite les citations du site viededemerde.fr
Il accepte 2 options : --choix et --number
L'option --choix accepte 10 arguments possible :
latest | aleatoire | top | amour | argent | enfant | travail | sante | sexe | inclassable
L'option --number prend un entier en argument
En l'abscence d'option et d'argument, le choix par défaut est --choix=latest --number=1
On peut combiner ce script, après l'avoir rendu executable et modifier le PATH, avec cowsay grâce à la ligne de commande suivante :
vdm --choix=aleatoire | cowsay -f $(/bin/ls /usr/share/cowsay/cows -1 | head -n $(expr $$$(date +%s) % $(ls /usr/share/cowsay/cows | wc -w) + 1) | tail -n 1) -W 70
=head1 OPTIONS
=over 4
=item -c=<categorie>, --choix=<categorie>
permet de choisir la catégorie de la quote
=item -n=<numero>, --number=<numéro>
permet de choisir la position de la quote dans la page
=item -h, --help
afficher l'aide
=back
=head1 AUTEUR
Ecrit par grim7reaper
=cut
En espérant que ça puisse en amuser certains tongue
Edit : Un petit aperçu du résultat
Dernière modification par grim7reaper (Le 16/07/2010, à 13:56)
Hors ligne
#2 Le 15/03/2009, à 16:36
- kyncani
Re : Vie de Merde dans votre terminal
Et pour ceux qui se demandent ce qu'est ce "vie de merde" : http://www.viedemerde.fr/
Hors ligne
#3 Le 15/03/2009, à 17:02
- Lyrical
Re : Vie de Merde dans votre terminal
Merci pour tout!
Je suis débutant... Pourrais-tu simplifier en ce qui concerne l'installation?
Je n'ai compris qu'à moitié...
la variable $PATH c'est quoi?
Hors ligne
#4 Le 15/03/2009, à 17:42
- grim7reaper
Re : Vie de Merde dans votre terminal
la variable $PATH c'est quoi?
La variable $PATH c'est une variable qui contient tous les chemins vers tes programmes exécutables (echo $PATH pour afficher son contenu).
Pour pouvoir exécuter mon script depuis n'importe quel répertoire il te suffit de modifier cette variable pour lui indiquer le chemin vers le dossier où tu as enregistré le script.
Par exemple pour moi, le script est situé dans ~/Documents/script.
Il faut donc ajouter cette ligne dans le fichier .bashrc (fichier caché dans ton home) : $PATH=$PATH:~/Documents/script
J'espère que j'ai été clair
Si tu as d'autres questions n'hésites pas .
Dernière modification par grim7reaper (Le 15/03/2009, à 17:42)
Hors ligne
#5 Le 15/03/2009, à 17:53
- Lyrical
Re : Vie de Merde dans votre terminal
Merci
Par contre, je n'ai pas .bashrc dans le repertoire home (même dans les dossiers cachés)... Es tu sûr qu'il se situe dedans?
Hors ligne
#6 Le 15/03/2009, à 18:02
- grim7reaper
Re : Vie de Merde dans votre terminal
Désolé je me suis mal exprimé. Quand j'ai dit "ton home" je voulais dire dans /home/tonlogin et non pas dans /home.
C'est là où il y a les répertoires Documents, Vidéo, Musique, etc...
Hors ligne
#7 Le 15/03/2009, à 18:13
- Lyrical
Re : Vie de Merde dans votre terminal
Merci donc, je modifie .bashrc et je rajoute $PATH=$PATH:~/Documents/script où?
Puis sinon je fais comment pour créer un script (enfin coller ton script)? Je dois le mettre dans quel format?
Hors ligne
#8 Le 15/03/2009, à 18:21
- grim7reaper
Re : Vie de Merde dans votre terminal
Tu rajoutes la ligne où tu veux cela n'as pas grande importance.
Tu mets ~/Documents/script seulement si tu l'as mis dans un dossier qui s'appelle script et qui est situé dans Documents si tu le mets ailleurs tu remplaces par le chemin jusqu'au script.
Sinon pour le script il suffit que tu le copie-colle dans un fichier texte et que tu l'enregistres sous le nom de vdm. Ensuite tu ouvres un terminal et tu tapes la commande suivante : chmod u+x vdm.
Cette commande permet de rendre le script exécutable.
Hors ligne
#9 Le 15/03/2009, à 18:28
- Lyrical
Re : Vie de Merde dans votre terminal
lyrical@ubuntu:~$ chmod u+x /usr/lyrical/Script/vdm
chmod: ne peut accéder `/usr/lyrical/Script/vdm': Aucun fichier ou dossier de ce type
J'ai mis vdm dans lyrical (c'est mon nom d'utilisateur) : dans lyrical/script
Hors ligne
#10 Le 15/03/2009, à 18:29
- Lyrical
Re : Vie de Merde dans votre terminal
Aussi, quand je lance le Terminal j'ai ça au début :
bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:~/Documents/script: Aucun fichier ou dossier de ce type
lyrical@ubuntu:~$
Hors ligne
#11 Le 15/03/2009, à 18:31
- Lyrical
Re : Vie de Merde dans votre terminal
J'ai mis $PATH=$PATH:/home/lyrical/Script
Et maintenant j'ai ça au début :
bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/lyrical/Script: Aucun fichier ou dossier de ce type
lyrical@ubuntu:~$
Hors ligne
#12 Le 15/03/2009, à 18:33
- grim7reaper
Re : Vie de Merde dans votre terminal
Est-ce que tu as bien créé le dossier Script ?
Sinon positionne-toi dans le dossier qui contient vdm et donne-moi le résultat de la commande pwd.
Dernière modification par grim7reaper (Le 15/03/2009, à 18:37)
Hors ligne
#13 Le 15/03/2009, à 18:39
- Lyrical
Re : Vie de Merde dans votre terminal
lyrical@ubuntu:~/Script$ pwd
/home/lyrical/Script
Sinon, j'ai modifier le chemin et j'ai ça au démarrage :
bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/lyrical/Script/vdm: Aucun fichier ou dossier de ce type
Pour le chmod, ça a fonctionné sinon
Hors ligne
#14 Le 15/03/2009, à 18:41
- grim7reaper
Re : Vie de Merde dans votre terminal
Pour la modification du PATH ajoute seulement /home/lyrical/Script. Il ne faut pas mettre le vdm à la fin.
Hors ligne
#15 Le 15/03/2009, à 18:43
- Lyrical
Re : Vie de Merde dans votre terminal
bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/lyrical/Script: Aucun fichier ou dossier de ce type
lyrical@ubuntu:~$
Pour la modification du PATH j'ai mis : $PATH=$PATH:/home/lyrical/Script
Hors ligne
#16 Le 15/03/2009, à 18:48
- grim7reaper
Re : Vie de Merde dans votre terminal
À quel boulet, c'est moi qui est écrit une grosse bétise.
Il ne faut pas écrire $PATH=$PATH:/home/lyrical/Script mais PATH=$PATH:/home/lyrical/Script
Hors ligne
#17 Le 15/03/2009, à 18:57
- Lyrical
Re : Vie de Merde dans votre terminal
Superbe! Ca marche nikel!
Par contre, j'ai envie de le mettre au démarrage du Terminal... Et j'ai :
bash: /home/lyrical/Script : ceci est un répertoire
/bin/ls: ne peut accéder /usr/share/cowsay/cowsls: ne peut accéder /usr/share/cowsay/cows: Aucun fichier ou dossier de ce type
: Aucun fichier ou dossier de ce type
expr: division par zéro
head: option requires an argument -- 'n'
Pour en savoir davantage, faites: « head --help ».
Le programme 'cowsay' n'est pas installé actuellement. Vous pouvez l'installer en tapant :
sudo apt-get install cowsay
bash: cowsay : commande introuvable
lyrical@ubuntu:~$
J'ai pourtant mis PATH=$PATH:/home/lyrical/Script
/home/lyrical/Script --choix=aleatoire | cowsay -f $(/bin/ls /usr/share/cowsay/cows -1 | head -n $(expr $$$(date +%s) % $(ls /usr/share/cowsay/cows | wc -w) + 1) | tail -n 1) -W 70
Hors ligne
#18 Le 15/03/2009, à 19:02
- Lyrical
Re : Vie de Merde dans votre terminal
C'est bon!
J'ai installé CowSay et j'ai fait PATH=$PATH:/home/lyrical/Script
/home/lyrical/Script/vdm --choix=aleatoire | cowsay -f $(/bin/ls /usr/share/cowsay/cows -1 | head -n $(expr $$$(date +%s) % $(ls /usr/share/cowsay/cows | wc -w) + 1) | tail -n 1) -W 70
Résultat :
______________________________________________________________________
/ Aujourd'hui, au lycée, dans les escaliers, j'étais derrière une \
| personne aux tendances gothiques caractérisées par ses piques sur |
| son sac. Ce con a glissé et est tombé en arrière. Je saigne, j'ai |
\ mal. VDM /
----------------------------------------------------------------------
\
\
oO)-. .-(Oo
/__ _\ /_ __\
\ \( | ()~() | )/ /
\__|\ | (-___-) | /|__/
' '--' ==`-'== '--' '
lyrical@ubuntu:~$
Merci!
Hors ligne
#19 Le 15/03/2009, à 19:04
- grim7reaper
Re : Vie de Merde dans votre terminal
Tout d'abord, installe le programme cowsay en tapant sudo apt-get install cowsay.
Il va te demander ton mot de passe, tape le et appuie sur entrée (c'est normal que rien ne s'affiche quand tu tapes ton mot de passe).
Cela devrait t'installer le programme cowsay et après je pense que ça devrait fonctionner...
Hors ligne
#20 Le 15/03/2009, à 19:05
- Lyrical
Re : Vie de Merde dans votre terminal
Il faudrait inclure un DEB qui installe ton script et CowSay
Super sympa sinon!
Encore un petit dernier :
/ Aujourd'hui, j'ai essayé d'aider ma copine à cuisiner... Au lieu de \
| couper les carottes, je me suis coupé la paume sur un bon |
| centimètre et demi ce qui fait que maintenant, j'ai mal dès que je |
\ peux saisir un objet. VDM /
-----------------------------------------------------------------------
\ /\ ___ /\
\ // \/ \/ \\
(( O O ))
\\ / \ //
\/ | | \/
| | | |
| | | |
| o |
| | | |
|m| |m|
Ce serait bien aussi de pouvoir noter la vanne depuis le Terminal
Hors ligne
#21 Le 15/03/2009, à 19:08
- spatz
Re : Vie de Merde dans votre terminal
grimp7reaper, complétement inutile ton script, j'adore
PLOP ! Blogueur ! Râleur ! Agnostique ! Architecte ! Floodeur ! Gentil ! Chiant ! Fourbe ! Crâneur ! GNU/Windows/Linuxien ! Machiavélique ! Beau ! Républicain ! Intelligent ! Bosseur ! Très Prétentieux ! Scientifique ! Frimeur ! Étudiant ! De bonne foi ! Perverti ! Ubunteros ! Grand ! Sociable! Altruiste ! Provoc' ! Censé !
Hors ligne
#22 Le 15/03/2009, à 19:11
- grim7reaper
Re : Vie de Merde dans votre terminal
Je suis content que ça marche enfin pour toi
Pour le .deb je ne sais pas si c'est vraiment nécessaire pour un si petit script mais j'en ferais peut-être éventuellement un si j'ai le temps.
Pour la notation à partir du terminal je ne sais pas si c'est possible, en tout cas si ça l'est j'ignore encore comment faire. Il faudrait que je me renseigne.
Hors ligne
#23 Le 15/03/2009, à 19:12
- Lyrical
Re : Vie de Merde dans votre terminal
Encore une idée : Après avoir mis automatiquement au démarrage la citation, il proposerait une autre. Du genre "Voulez vous une autre VDM? o/n".
Hors ligne
#24 Le 15/03/2009, à 19:15
- grim7reaper
Re : Vie de Merde dans votre terminal
Merci pour les suggestions , ça c'est plutôt simple, je pense le faire ce soir dès que j'aurais un moment.
Dernière modification par grim7reaper (Le 15/03/2009, à 19:16)
Hors ligne
#25 Le 15/03/2009, à 19:23
- Lyrical
Re : Vie de Merde dans votre terminal
Cool merci ^^
Je vais essayer d'apprendre à faire des scripts, ça m'a pas l'air très compliqué. La complication viens du fait que je suis nouveau sur Linux.
Sinon, c'est très similaire à du C, c'est du C?
Comme ça, je peut appliquer mes cours du Site-Du-Zéro en faisant des scripts (genre le jeu du + et du -),... Et peut être aider un peu à développer le tiens, car il m'a l'air basic et très bien pour commencer
encore une petite idée : Gestion des couleurs, par exemple, le texte serait en jaune (chose qui est possible dans un terminal, je crois qu'il y a 10 couleurs, un truc comme ça) et le Tux en Bleu par exemple.
Hors ligne