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

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 smile 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 tongue

Hors ligne