Discussion Utilisateur:Ryo/Liste2Lien.pl

Un article de Wikipédia, l'encyclopédie libre.

Programme Perl transformant une liste en liste de liens et générant les stubs de sous-pages
Pour l'instant plutôt pour les manga, mais suffit de changer les textes...

Utilisation: liste2perl.pl fichier nom de la série.

fichier contient la liste des volumes, un par ligne, avec # devant éventuellement (copier/coller de la liste de la page wiki, simplement).

nom de la série est le nom du manga.

Crèe pour chaque page un fichier texte de la forme xxx est le xè volume du manga yyy, etc, en insérant {{spoilers}}, [[catégorie:<nom de la série>]], et liant la volume précédant et le suivant.



use strict;
use warnings;

if ( $#ARGV < 1 )
  {
  print "Syntaxe: $0 <fichier> <nom de la série>";
  exit 0;
  }
#print $ARGV[ 0 ]."\n";
#print $ARGV[ 1 ]."\n";

my $Dernier = "";
my $Compte = 1;
my $EnCours = 0;
my $NomVol = "vol";

if ( $ARGV[ 0 ] =~ /(.*)\..*/ )
  {
  $NomVol = $1;
  }
  
sub Lien
  {
  my $Txt = shift( @_ );
  return "[[".$Txt." (".$ARGV[ 1 ].")|".$Txt."]]";
  }
  
print "Manga: ".$ARGV[ 1 ].", suffixe: ".$NomVol."\n";

open( LISTE, ">".$NomVol."_liste.txt" );
open( FILE, "<".$ARGV[ 0 ] );
while ( <FILE> )
  {
  chop $_;
  if ( $_ =~ /#?\s*\d*\s*\.?\s*(.*?)\s*$/ )
    {
    if ( $EnCours )
      # lien depuis volume précédent
      {
      print VOL Lien( $1 )."\n";
      print VOL "</center>\n";
      close VOL;
      }
    print LISTE "# ".Lien( $1 )."\n";

    open( VOL, ">".$NomVol.$Compte.".txt" );
    print VOL "'''$1''' est le $Compte e volume du [[manga]] [[".$ARGV[ 1 ]."]].<br />\n\n";
    print VOL "{{spoilers}}\n";
    print VOL "[[Catégorie:".$ARGV[ 1 ]."]]\n";
    print VOL "\n\n----\n";
    if ( "" ne $Dernier )
      {
      print VOL "<center>\n";
      print VOL Lien( $Dernier )." | ";
      }

    $Dernier = $1;
    $EnCours = 1;
    $Compte++;
    }
  }
close FILE;
close VOL;
close LISTE;

$Compte--;
print "Terminé, $Compte titres trouvés.\n";