#1 Le 02/09/2012, à 11:06
- Shousan
Script Perl gestion téléchargement avec curl
Bonjour,
J'aimerais proposer mon script Perl qui utilise curl pour gérer les téléchargements, les critiques et améliorations sont les bienvenues.
Alors pour commencer créez un fichier vierge dans le dossier où vous souhaitez télécharger vos fichiers, exemple dossier "Téléchargements" et nommez-le "gestionnaire.pl" , maintenant ouvrez votre fichier et collez ce code:
#!/usr/bin/env perl
use strict;
use warnings;
print "Ce programme permet de générer des liens dans un fichier liens.txt. Entrez les liens un à un, validez par 'Entrer' pour chaque lien, quand tous les liens seront entrés tapez 'stop' pour générer le fichier liens.txt\n\n";
my $liens = "liens.txt";
my $saisi = defined;
my $choix = 2;
my $bon = defined;
open (my $fichier, '>', $liens) or die "Le fichier liens.txt n'a pas pu être créé.\n";
while ($saisi ne "stop")
{
print "\nEntrez votre lien (ou tapeez 'stop') : \n";
$saisi = <>;
chomp $saisi;
if ($saisi ne "stop")
{
print $fichier "url=\"$saisi\"\n-O\n";
}
}
close $fichier;
print "\nLe fichier liens.txt a bien été généré.\n\nDémarrer le(s) téléchargement(s) en mode silencieux ?\n";
sub choix # Je crée ma fonction "choix".
{
do
{
print "oui (o) ou non (n) ?\n";
my $choix = lc(<>); # lc() met l'entrée en minuscule.
chomp $choix;
if ($choix eq "o")
{
$bon = "o";
}
elsif ($choix eq "n")
{
$bon = "n";
}
else
{
$bon = "2";
}
}
while ($bon eq "2");
}
choix; # J'utilise ma fonction "choix".
if ($bon eq "o")
{
print "Téléchargement(s) en cours ...\n";
system ("nohup curl -C - -K liens.txt &");
}
elsif ($bon eq "n")
{
print "Démarrer le(s) téléchargement(s) en mode visible ?\n";
choix; #J'utilise ma fonction "choix".
if ($bon eq "o")
{
system ("curl -C - -K liens.txt");
print "Téléchargement(s) terminé(s).\n";
}
elsif ($bon eq "n")
{
die "Au revoir.\n";
}
}
<>;
Puis enregistrez. Il faut maintenant rendre le fichier exécutable, ouvrez le terminal puis rendez vous dans le dossier où se trouve le fichier, exemple : cd /home/nom_utilisateur/Téléchargements
ensuite tapez : chmod u+rwx gestionnaire.pl
Voilà le script est exécutable pour le lancez il vous suffit de tapez: ./gestionnaire.pl ou double-cliquez dessus. J'espère qu'il pourra être utile à quelqu'un.
Cordialement.
Hors ligne
#2 Le 03/09/2012, à 12:06
- miniSeb
Re : Script Perl gestion téléchargement avec curl
Pour commencer, je pense que tu as posté dans la mauvaise section (trucs, astuces et scripts utiles me semble plus approprié).
Du côté du code, je ne comprends pas trop l'intérêt en fait : ici tu utilises curl à travers Perl, mais ne profite pas de Perl. Quitte à faire ce genre de scripts, autant utiliser les modules existants pour faire du “tout Perl”. Je te conseille de regarder du côté du CPAN et des modules LWP (simple, useragent,...) qui servent à ce genre de travail.
Pour commencer, par exemple :
use LWP::Simple;
for (@ARGV) {
my $content = get($_);
#...
}
Hors ligne
#3 Le 03/09/2012, à 21:06
- Shousan
Re : Script Perl gestion téléchargement avec curl
En effet je me suis trompé de section. Par j'ai commencé le Perl il y a une semaine environs et je ne connais pas du tout CPAN et LWP , j'ai regardé sur google en effet ça a l'air vraiment puissant. Je vais continuer à travailler sur Perl et j'améliorerai mon script, merci beaucoup pour ta contribution.
Hors ligne
#4 Le 03/09/2012, à 22:15
- miniSeb
Re : Script Perl gestion téléchargement avec curl
Le CPAN est plein de modules différents, pour à peu près tout et n'importe quoi. Tu pourras y trouver ton bonheur sans souci. Pour ubuntu, il suffit de passer par le terminal et entrer
sudo cpan
Après, tu fais
install <le::nom::du::module>
et ça t'installera le module et les dépendances.
Pour le code, j'avais à peu près compris que c'était un début avec Perl N'hésite pas à me contacter en cas de question. Je me débrouille en Perl (sans maîtriser, hein), c'est mon langage de prédilection
Hors ligne
#5 Le 04/09/2012, à 10:11
- Shousan
Re : Script Perl gestion téléchargement avec curl
Merci beaucoup de me proposer ton aide, c'est super sympa de ta part. Là j'ai fini sur le "siteduzero" et je commence sur "developpez.com" avec le "Guide de programmation Perl". Perl m'a l'air d'être un langage vraiment complet avec énormément de possibilité, juste par curiosité tu as mis environ combien de temps avant d'atteindre ton niveau en Perl ?
Hors ligne
#6 Le 04/09/2012, à 12:11
- miniSeb
Re : Script Perl gestion téléchargement avec curl
Je t'ai répondu par mail, pour ne pas surcharger le forum.
Hors ligne
#7 Le 04/09/2012, à 21:39
- miniSeb
Re : Script Perl gestion téléchargement avec curl
Voilà ce qu'on pourrait envisager pour ton script
#! /usr/bin/perl -w
use strict;
use warnings;
use feature 'say'; # Équivalent de print mais avec \n automatique
use LWP::Simple;
say "Entrez les liens et arrêtez avec Ctrl-D";
my @list = <STDIN>; # Ajoute les URLs à la liste des téléchargements
for (@list) { # Pour chaque lien
my $filename = $& if /[^\/\n]+$/i; # 1. Récupérer le nom de fichier (ex. www.monsite.fr/index.html → index.html)
getstore($_,$filename); # 2. Télécharger l'URL ($_) et écrire le contenu dans le fichier
}
Dernière modification par miniSeb (Le 04/09/2012, à 22:23)
Hors ligne
#8 Le 06/09/2012, à 11:01
- Shousan
Re : Script Perl gestion téléchargement avec curl
Dsl pour l'absence je n'étais pas chez moi.
Pour l'e-mail j'avais pas vu mais l'adresse sur le forum n'est plus la bonne, je vais t'envoyer un mail avec ma nouvelle adresse. Par contre je suis encore loin de réussir à programmer comme ceci mais je vais bossé, c'est incroyable le code n'a plus rien avoir et est beaucoup plus court.
Hors ligne
#9 Le 06/09/2012, à 11:54
- miniSeb
Re : Script Perl gestion téléchargement avec curl
On peut faire plus court, mais je trouve que ça perd en lisibilité.
On peut faire plus clair aussi, mais c'est plus long, du coup.
TIMTOWTDI
Hors ligne