Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 big_smile. 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/&quot;/"/g;
$quote=~s/&amp;/&/g;
$quote=~s/&lt;/</g;
$quote=~s/&gt;/>/g;
$quote=~s/&oelig;/Œ/g;
$quote=~s/&nbsp;/ /g;
$quote=~s/&deg;/°/g;
$quote=~s/&Agrave;/À/g;
$quote=~s/&Atilde;/à/g;
$quote=~s/&Ccedil;/Ç/g;
$quote=~s/&Egrave;/È/g;
$quote=~s/&Eacute;/É/g;
$quote=~s/&Ecirc;/Ê/g;
$quote=~s/&iuml;/ï/g;
$quote=~s/&\#039;/'/g;
$quote=~s/&eacute;/é/g;
$quote=~s/&agrave;/à/g;
$quote=~s/&acirc;/â/g;
$quote=~s/&ccedil;/ç/g;
$quote=~s/&egrave;/è/g;
$quote=~s/&eacute;/é/g;
$quote=~s/&ecirc;/ê/g;
$quote=~s/&euml;/ë/g;
$quote=~s/&icirc;/î/g;
$quote=~s/&ocirc;/ô/g;
$quote=~s/&ugrave;/ù/g;
$quote=~s/&ucirc;/û/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
vdm.png

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

Lyrical a écrit :

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 smile

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 wink
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

sad
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 wink
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 wink

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 big_smile


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 big_smile

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 smile, ç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 wink


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