Bon j'ai réussi a faire sortir quelque chose mais la j'ai toute les quotes .... je post ma modif mais ELLE N'EST PAS FINIE !!! Si qqun qui connait le perl veut le regarder !
#!/usr/bin/env perl
#*********************************************#
# quote-from-bashfr #
# écrit par tOkeshu #
# 02 août. 2006 #
# bashfr.pl #
# version 1.1 #
# #
# Récupère les citations de votre site #
# préféré: bashfr.org #
#*********************************************#
# ----------------------------------------------------------- #
# Ce script prépare et traite les citations du site Bashfr.org#
# Il accepte 6 arguments possible : #
# -latest | -random | -random2 | -top50 #
# Ils correspondent ou 4 pages de citation de bashfr : #
# #
# http://www.bashfr.org/?sort=latest #
# http://www.bashfr.org/?sort=random #
# http://www.bashfr.org/?sort=random2 #
# http://www.bashfr.org/?sort=top50 #
# #
# -quote x (avec x>0) #
# Correspond à la page : http://www.bashfr.org/?x #
# #
# -n est un argument qui est utilisé avec les 3 premiers: #
# Il permet de selectionner une quote parmis les 3 différentes#
# pages énoncées. (ex: -latest -n 2 ) #
# #
# Le choix par défaut est random. #
# ----------------------------------------------------------- #
# Variable qui permet de décompter le nombre de citations parcourues.
$quote_number=1;
$caracterebizarre=0;
# On vérifie les arguments.
# Cas génériques : top50, aléatoire, et dernier ajout.
if ( $ARGV[0] eq "-latest" || $ARGV[0] eq "-random" || $ARGV[0] eq "-top50" || $ARGV[0] eq "-random2" )
{
$choix=substr ($ARGV[0],1,8);
$choix="?sort="."$choix";
# Argument qui permet d'afficher une citation en particulier.
}elsif ( $ARGV[0] eq "-quote" )
{
$choix="$ARGV[1]";
# Argument par défaut.
}else{
$choix="?sort=random";
}
# Argument qui permet de selectionner une citation en particulier avec
# les arguments précédents. (ex : quote.pl -latest -n 2 )
if ( $ARGV[1] eq "-n" )
{
$quote_number=$ARGV[2];
}
# Variable d'état (somme-nous dans une citation ? : vrai(>0) ou non(0)).
$in_the_quote=0;
# On récupère directement la page HTML.
use LWP::Simple;
$url="http://danstonchat.com/"."$choix";
$source = get($url);
# On récupère chaque ligne dans un tableau.
@tab = split(/\n/,$source);
# On parcours tout le tableau.
# A chaque tour de boucle on ne considère qu'une seule ligne ( $_ ).
foreach $_ (@tab) {
# Condition d'arret (somme nous sortis de la citation ?).
# SI oui alors on arrete la boucle.
# Si non on continue à parcourir le fichier.
if ( ("$_" =~ m!div!) && $in_the_quote!=0 )
{
last;
}
# Somme nous dans la citation ?
# Si index trouve quote1 ou quote-1 (!=-1) nous venons de trouver une citation.
$i=index($_,'#');
if ( $i!=-1)
{
if ( $quote_number == 1 )
{
# Changement d'état (dans la citation).
$in_the_quote=1;
}else
{
$quote_number--;
}
}
# Si nous avons changé d'état nous traitons la citation.
if ( $in_the_quote!=0 )
{
# Enlève les balises superflues de début de citation.
if ( $in_the_quote==1 )
{
$_ =~ m/\?([0-9]+)/g;
# Repère le tout début de la citation dans la ligne (après <br />).
$pos_debut=index($_,'<br />');
$pos_debut+=6;
$pos_fin=length($_);
# Modifie la ligne actuellement considérée en récupérant
# uniquement ce qui nous intéresse.
$_=substr ($_,$pos_debut,$pos_fin);
# Changement d'état (corps et fin de la citation, rien à enlever).
$in_the_quote=2;
}
# Toute la partie suivante vise à enlever le formatage HTML.
# ( certaines méthodes existent déjà mais ici rien de compliqué ).
# Comme substituer une chaine longue à une chaine + courte est
# fastidieuse, on remplace l'espace des caractère en trop par un
# marqueur ( ici % ).
s/"/%%%%%%\"/g;
s/&/%%%%%&/g;
s/</%%%</g;
s/>/%%%>/g;
s/œ/%%%%%%Œ/g;
s/ /%%%%% /g;
s/©/%%%%%©/g;
s/¬/%%%%¬/g;
s/ª/%%%%%ª/g;
s/°/%%%%°/g;
s/²/%%%%%²/g;
s/À/%%%%%%%%À/g;
s/Ã/%%%%%%%%à/g;
s/Ç/%%%%%%%%Ç/g;
s/È/%%%%%%%%È/g;
s/É/%%%%%%%%É/g;
s/Ê/%%%%%%%Ê/g;
s/ï/%%%%%%ï/g;
s/&\#039;/%%%%%\'/g;
s/é/%%%%%%%é/g;
s/à/%%%%%%%à/g;
s/â/%%%%%%â/g;
s/ç/%%%%%%%ç/g;
s/è/%%%%%%%è/g;
s/é/%%%%%%%é/g;
s/ê/%%%%%%ê/g;
s/ë/%%%%%ë/g;
s/î/%%%%%%î/g;
s/ô/%%%%%%ô/g;
s/ù/%%%%%%%ù/g;
s/û/%%%%%%û/g;
s/<br \/>/%%%%%/g;
$caracterebizarre+=1;
if ($caracterebizarre>=1) {$_=substr ($_,0,-1);}
# Pour conclure on supprime les marqueurs.
s/%+//g;
# On affiche enfin la ligne de citation traitée.
print "$_ \n";
}
}
print "\n";
Voila moi je ne sais pas coder en perl donc je ne sais si ce que j'ai fait est bien ou pas !