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.

#26 Le 15/03/2009, à 20:38

grim7reaper

Re : Vie de Merde dans votre terminal

La langage utilisé est le Perl, la syntaxe est inspirée du C (comme beaucoup de langage).

Pour avoir programmer en Perl et en C je peux te dire que le Perl est bien plus simple car tu n'as pas à gérer la mémoire, la taille des chaînes de caractère et les pointeurs.

Et si tu veux développer mon script, y ajouter des modifications et même le redistribuer tu peux. Je t'incite même à la faire wink . C'est un script 100% libre.

Pour la coloration je pense pouvoir le faire mais je ne pense pas pouvoir séparer la coloration de l'animal et la coloration du texte

Hors ligne

#27 Le 15/03/2009, à 20:48

Lyrical

Re : Vie de Merde dans votre terminal

Ok, merci wink
Le Perl... Oh dommage sad
L'année prochaine je fais Epitech et je ne pense pas que ce soit au programme...
Mais bon, si j'ai le temps, je m'y met, c'est promis!


Oh là là, je peux pas m'en empêcher, un dernier :

 _____________________________________________________________________
/ Aujourd'hui, je récupère ma voiture garée sur le parking. En     \
| roulant, je m'aperçois que je m'étais pris un PV. Il pleuvait et, |
| sur un grand boulevard chargé, j'ai machinalement passé les       |
\ essuie-glaces. Je prépare déjà mes 35 euros de majoration. VDM   /
 ---------------------------------------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

XD

Hors ligne

#28 Le 15/03/2009, à 20:51

Lyrical

Re : Vie de Merde dans votre terminal

J'oubliais, propose une image pour un aperçu dans ta présentation smile
Ici, j'en ai fais une :
http://www.lyrical.fr/other/ttttt.png

Hors ligne

#29 Le 15/03/2009, à 21:00

grim7reaper

Re : Vie de Merde dans votre terminal

Le Perl n'est pas très difficile à apprendre.
Moi j'en ai fais apres avoir fait du C est ça s'apprend plutôt bien.
En plus, j'ai eu des cours de Perl cette année car c'est un langage très utilisé en bioinformatique.

Sinon pour l'image c'est une bonne idée. Je ferais un screenshot dès que j'aurais mangé.

Hors ligne

#30 Le 15/03/2009, à 21:50

Lyrical

Re : Vie de Merde dans votre terminal

Ok pas de soucis!
Heu... c'est quoi la bioinformatique?

Hors ligne

#31 Le 15/03/2009, à 22:38

grim7reaper

Re : Vie de Merde dans votre terminal

La bioinformatique c'est l'informatique appliquée à la biologie. En résumé, on utilise l'informatique comme outil de modélisation moléculaire, prédiction de mutation génétique ou encore annotation fonctionnelle de génome (mon sujet de stage), etc.

Sinon, si tu as d'autres suggestions ou d'autres questions je pense qu'il serait mieux que tu m'en fasses part par email (mon adresse est dans le script) pour éviter de transformer le forum en "tchat" lol

Si c'est en rapport direct avec le script met "script vdm" dans le sujet afin que le message arrive dans la bonne boîte mail.

Hors ligne

#32 Le 15/03/2009, à 22:45

klm!:ghfhgjk:

Re : Vie de Merde dans votre terminal

mon appareil photo et video de marche pas ya til a moyen de les faire remarcher

#33 Le 15/03/2009, à 23:25

Lyrical

Re : Vie de Merde dans votre terminal

Héhé! Excuse moi smile


Heu... klm!:ghfhgjk:, merci de faire un nouveau sujet et dans la bonne section wink

Hors ligne

#34 Le 16/03/2009, à 15:19

Ch3mist

Re : Vie de Merde dans votre terminal

Salut,

pour moi aussi ça fonctionne bien sauf une petite erreur au démarrage :

[b]bash: vdm : commande introuvable[/b]
 _____________________________________________________________________
/ Aujourd'hui, je suis chez un pote pour l'aider pour un devoir. Tout \
| va bien jusqu'à ce que je trouve un papier sur lequel lui et ses   |
| potes ont fait un classement des filles de la classe. Je suis       |
\ première ! En partant de la fin. VDM                               /
 ---------------------------------------------------------------------
  \   ^__^
   \  (oo)\_______        ________
      (__)\       )\/\    |Super |
          ||----W |       |Milker|
          ||    UDDDDDDDDD|______|
[ch3mist@ch3mist-desktop:~]14:16:30$

http://target0.be/madchat/esprit/pactedesgnous_divx.avi
Jabber : ch3mist@jabber.ubuntu-fr.org

Hors ligne

#35 Le 16/03/2009, à 21:12

grim7reaper

Re : Vie de Merde dans votre terminal

hum, bizarre comme erreur, il dit qu'il ne trouve pas la commande, mais il l'exécute quand même.

Pourrais-tu poster la ligne que tu as rajouté à ton .bashrc pour qu'il exécute la commande au démarrage, le chemin jusqu'au dossier qui contient le script vdm et le contenu de ta variable $PATH ?

Dernière modification par grim7reaper (Le 17/03/2009, à 00:29)

Hors ligne

#36 Le 16/03/2009, à 23:30

Ch3mist

Re : Vie de Merde dans votre terminal

PATH=$PATH:~/scripts/vdm vdm --choix=categorie --number=x

~/scripts/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

Dernière modification par Ch3mist (Le 16/03/2009, à 23:30)


http://target0.be/madchat/esprit/pactedesgnous_divx.avi
Jabber : ch3mist@jabber.ubuntu-fr.org

Hors ligne

#37 Le 16/03/2009, à 23:42

grim7reaper

Re : Vie de Merde dans votre terminal

Pour le PATH écris juste PATH=$PATH:~/scripts/vdm.

Il ne faut pas ajouter vdm --choix=categorie --number=x à la suite, ma phrase était peut-être ambiguë wink

Essaye après la modification et dis-moi si cela fonctionne mieux

Hors ligne

#38 Le 17/03/2009, à 00:18

Ch3mist

Re : Vie de Merde dans votre terminal

Oki ça fonctionne bien merci wink

Pour info a quoi correspond cette ligne sinon ? : vdm --choix=categorie --number=x

Edit : pour éxecuter le script, ok j'ai rien dis smile

Dernière modification par Ch3mist (Le 17/03/2009, à 00:24)


http://target0.be/madchat/esprit/pactedesgnous_divx.avi
Jabber : ch3mist@jabber.ubuntu-fr.org

Hors ligne

#39 Le 17/03/2009, à 00:24

grim7reaper

Re : Vie de Merde dans votre terminal

C'est juste un exemple de commande que tu peux taper dans le terminal pour lancer le script. Il faut bien sûr remplacer catégorie et x par les arguments disponibles.

Il est vrai que ma phrase n'était pas extrêmement claire hmm, je vais essayer de la modifier.

Edit : Merci à tous ceux qui utilisent mon script. Au menu de la prochaine version : la couleur et la possibilité de lire plusieurs vdm en lançant le script une seule fois:)

Dernière modification par grim7reaper (Le 17/03/2009, à 00:32)

Hors ligne

#40 Le 17/03/2009, à 00:41

Lyrical

Re : Vie de Merde dans votre terminal

Good ^^
J'attend ça avec impatience!
Sinon, un petit truc... Serait-il possible d'avoir une mise à jour automatique du script, sans avoir à modifier le fichier à chaques fois?

Hors ligne

#41 Le 17/03/2009, à 08:02

grim7reaper

Re : Vie de Merde dans votre terminal

Heu pourquoi pas.. Mais pour les mises à jour automatique je ne vois pas du tout comment faire hmm

Dernière modification par grim7reaper (Le 17/03/2009, à 08:03)

Hors ligne

#42 Le 21/03/2009, à 17:09

Lyrical

Re : Vie de Merde dans votre terminal

Ok wink

Et la mise à jour, c'est pour quand?

Hors ligne

#43 Le 21/03/2009, à 17:19

grim7reaper

Re : Vie de Merde dans votre terminal

Pour demain normalement.

J'ai eu pas mal de boulot cette semaine donc je n'ai pas eu trop de temps pour faire les divers tests.

Hors ligne

#44 Le 22/03/2009, à 14:08

grim7reaper

Re : Vie de Merde dans votre terminal

Bon comme promis voici la version 1.1 du script.
2 nouvelles options sont disponibles :
    -i ou --iteratif : le script propose une autre vdm (incompatible avec cowsay pour le moment)
    -f ou --font-color : permet de choisir la couleur du texte

Bon maintenant place au code smile

#!/usr/bin/perl

       #*********************************************#
       #                quote-from-vdm               #
       #            écrit par grim7reaper            #
       #                 15 mars 2009                #
       #                                             #
       #                 version 1.1                 #
       #                                             #
       #       Récupère les citations du site        #
       #                viedemerde.fr                #
       #*********************************************#

#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,
           "iteratif"=>\$iteratif,
           "i"=>\$iteratif,
           "font-color=s"=>\$font_color,
           "f=s"=>\$font_color,
          );

my $encore="";                        # variable qui stocke la reponse de l'utilisateur
my $font="\033[";                     # variable qui stocke la couleur de la police
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";
    print "\tCette combinaison ne fonctionne pas avec l'option --iteratif (ou -i)\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-i, --iteratif \n\n";
    print "\t\taffiche des quotes jusqu'à ce que l'utilisateur réponde \"non\" \n\n";
    print "\t-f=<couleur>, --font-color=<couleur> \n\n";
    print "\t\tdétermine la couleur de la police, par défaut c'est le blanc \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 choix
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;
    }
}

# On teste les couleurs
if(!$font_color) # Si aucune couleur est définit on garde le blanc par defaut
{
    $font.="0m";
}
else
{
    if($font_color ne "noir" && $font_color ne "rouge" && $font_color ne "vert" && $font_color ne "orange" && $font_color ne "bleu" && $font_color ne "violet" && $font_color ne "cyan" && $font_color ne "gris")    # Si l'argument de l'option font-color n'existe pas donc on affiche un message d'erreur
    {
        print "Argument invalide pour l'option --font-color ou -f\n";
        print "L'argument doit etre noir, rouge, vert, orange, bleu, violet, cyan ou gris\n";
        exit;
    }
    if($font_color eq "noir")   
    {
        $font.="30m";
    }
    if($font_color eq "rouge")
    {
        $font.="31m";
    }
    if($font_color eq "vert")
    {
        $font.="32m";
    }
    if($font_color eq "orange")
    {
        $font.="33m";
    }
    if($font_color eq "bleu")
    {
        $font.="34m";
    }
    if($font_color eq "violet")
    {
        $font.="35m";
    }
    if($font_color eq "cyan")
    {
        $font.="36m";
    }
    if($font_color eq "gris")
    {
        $font.="37m";
    }
}

# 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 "$font$quote\033[0;0m\n";

if($iteratif)
{
    print"\n";
    print "Une autre quote (oui/non) ? ";
    chomp($encore=<STDIN>);
    if($encore eq "oui")    # Si l'utilisateur veut une autre quote
    {
        system("vdm","--c=$choix","-i","-f=$font_color");       # On relance le script, je n'ai pas trouvé mieux car avec une simple boucle
    }                                                           # il semblerait (à vérifier) que le serveur renvoie la même page aléatoire
}                                                               # je créé donc un nouveau processus pour avoir une nouvelle page
                                                                # ce n'est pas très "propre" donc j'accepte toutes les améliorations possibles

# 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

Cette combinaison ne fonctionne pas avec l'option --iteratif (ou -i)

=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 -i, --iteratif

affiche des quotes jusqu'à ce que l'utilisateur réponde "non"

=item -f=<couleur>, --font-color=<couleur>

détermine la couleur de la police, par défaut c'est le blanc

=item -h, --help

afficher l'aide

=back

=head1 AUTEUR

Ecrit par grim7reaper

=cut

Dernière modification par grim7reaper (Le 16/07/2010, à 14:55)

Hors ligne

#45 Le 09/04/2009, à 21:34

andso

Re : Vie de Merde dans votre terminal

j' aime,
l' inutile, que ça d' utile.:(

La bioinformatique c'est l'informatique appliquée à la biologie. En résumé, on utilise l'informatique comme outil de modélisation moléculaire, prédiction de mutation génétique ou encore annotation fonctionnelle de génome (mon sujet de stage), etc.

ça va beaucoup servir, vu le meltingpot chimique que certains créent.


IMPORTANT: Booster votre (X et K)ubuntu: http://forum.ubuntu-fr.org/viewtopic.php?id=241092 (pfou!...)
à essayer, et... demain debian? http://fr.wikipedia.org/wiki/Demain_les_chiens
demain les biens? mes biens biens? t' exagére ... la banque!

Hors ligne

#46 Le 10/04/2009, à 19:55

beeriz52

Re : Vie de Merde dans votre terminal

merci pour ce petit script big_smile

Hors ligne

#47 Le 04/04/2011, à 11:07

Peuks

Re : Vie de Merde dans votre terminal

Je te remercie pour la mise à jour smile
Je voulais savoir si c'était possible de n'avoir que le texte comme il y a un peu près un an ?   Pour l'instant je pipe le script avec html2text pour enlever le code html qui reste . J'ai aussi un pettit soucis d'encodage mais je ne sais plus avec quelle commande je dois pipper tout cela .

Hors ligne

#48 Le 08/09/2011, à 18:25

grim7reaper

Re : Vie de Merde dans votre terminal

Salut,

Oulà, ça remonte ce script. Qu’est ce que c’est moche par endroits, on voit que c’était mes débuts en programmation ^^.
Il y a sûrement bien des choses à améliorer d’ailleurs. Je suis même étonné qu’il fonctionne encore 2 ans plus tard.

Désolé de répondre si tardivement mais comme le topic était « mort » depuis 2 ans je m’étais désabonné et je n’ai donc pas été avertit de ton message.

Pour le HTML, je ne vois pas de quoi tu parles car chez moi je n’ai que du texte en sortie.
Bon sinon je viens de faire une petite modif’ pour ne pas avoir de problème d’encodage donc voilà la version 1.2 plus de 2 ans plus tard ^^

#!/usr/bin/perl

       #*********************************************#
       #                quote-from-vdm               #
       #            écrit par grim7reaper            #
       #                 15 mars 2009                #
       #                                             #
       #                 version 1.2                 #
       #                                             #
       #       Récupère les citations du site        #
       #                viedemerde.fr                #
       #*********************************************#

use strict;
use warnings;

#declaration des options disponibles
my ($help, $choix, $number,  $iteratif, $font_color);
#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;
# Pour l'encodage utf-8
use Encode 'encode';

GetOptions("help"=>\$help,
           "h"=>\$help,
           "choix=s"=>\$choix,
           "c=s"=>\$choix,
           "number=i"=>\$number,
           "n=i"=>\$number,
           "iteratif"=>\$iteratif,
           "i"=>\$iteratif,
           "font-color=s"=>\$font_color,
           "f=s"=>\$font_color,
          );

my $encore="";                        # variable qui stocke la reponse de l'utilisateur
my $font="\033[";                     # variable qui stocke la couleur de la police
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 <<"AIDE";
    NOM
        vdm - récupère une quote du side viedemerde.fr et l'affiche dans le terminal

    SYNOPSIS
        vdm --choix=categorie --number=numéro

    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
        Cette combinaison ne fonctionne pas avec l'option --iteratif (ou -i)

    OPTIONS
        -c=<categorie>, --choix=<categorie>

            permet de choisir la catégorie de la quote

        -n=<numero>, --number=<numéro>

            permet de convertir tout les fichiers du repertoire courant

        -i, --iteratif

            affiche des quotes jusqu'à ce que l'utilisateur réponde "non"

        -f=<couleur>, --font-color=<couleur>

            détermine la couleur de la police, par défaut c'est le blanc

        -h, --help

            afficher l'aide

    AUTEUR
        Ecrit par grim7reaper

AIDE
    exit;
}

# On teste les choix
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;
    }
}

# On teste les couleurs
if(!$font_color) # Si aucune couleur est définit on garde le blanc par defaut
{
    $font.="0m";
}
else
{
    if($font_color ne "noir" && $font_color ne "rouge" && $font_color ne "vert" && $font_color ne "orange" && $font_color ne "bleu" && $font_color ne "violet" && $font_color ne "cyan" && $font_color ne "gris")    # Si l'argument de l'option font-color n'existe pas donc on affiche un message d'erreur
    {
        print "Argument invalide pour l'option --font-color ou -f\n";
        print "L'argument doit etre noir, rouge, vert, orange, bleu, violet, cyan ou gris\n";
        exit;
    }
    if($font_color eq "noir")   
    {
        $font.="30m";
    }
    if($font_color eq "rouge")
    {
        $font.="31m";
    }
    if($font_color eq "vert")
    {
        $font.="32m";
    }
    if($font_color eq "orange")
    {
        $font.="33m";
    }
    if($font_color eq "bleu")
    {
        $font.="34m";
    }
    if($font_color eq "violet")
    {
        $font.="35m";
    }
    if($font_color eq "cyan")
    {
        $font.="36m";
    }
    if($font_color eq "gris")
    {
        $font.="37m";
    }
}

# 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.
            last;
        }
        $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;
}

$quote = encode("utf8", $quote);

# 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 "$font$quote\033[0;0m\n";

if($iteratif)
{
    print"\n";
    print "Une autre quote (oui/non) ? ";
    chomp($encore=<STDIN>);
    if($encore eq "oui")    # Si l'utilisateur veut une autre quote
    {
        system("vdm","--c=$choix","-i","-f=$font_color");       # On relance le script, je n'ai pas trouvé mieux car avec une simple boucle
    }                                                           # il semblerait (à vérifier) que le serveur renvoie la même page aléatoire
}                                                               # je créé donc un nouveau processus pour avoir une nouvelle page
                                                                # ce n'est pas très "propre" donc j'accepte toutes les améliorations possibles

# 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

Cette combinaison ne fonctionne pas avec l'option --iteratif (ou -i)

=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 -i, --iteratif

affiche des quotes jusqu'à ce que l'utilisateur réponde "non"

=item -f=<couleur>, --font-color=<couleur>

détermine la couleur de la police, par défaut c'est le blanc

=item -h, --help

afficher l'aide

=back

=head1 AUTEUR

Ecrit par grim7reaper

=cut

Dernière modification par grim7reaper (Le 08/09/2011, à 18:37)

Hors ligne

#49 Le 18/09/2011, à 03:03

LuckyStar7o

Re : Vie de Merde dans votre terminal

Excellent tout ça, fallait y penser, j adore l'idée *_*

Hors ligne