<![CDATA[Forum Ubuntu-fr.org / Récupérer un lien dans un fichier texte par script ou commande]]> http://forum.ubuntu-fr.org/viewtopic.php?id=1201111 Mon, 25 Mar 2013 01:19:50 +0000 FluxBB <![CDATA[Réponse à : Récupérer un lien dans un fichier texte par script ou commande]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=13015621#p13015621 Bon alors j'ai essayé de tester ton script, mais le problème c'est que mes liens sont un peu vieux du coup il n'y a quasiment plus de liens valides dedans,
alors je ne peux pas vraiment le tester en profondeur.
Enfin j'ai quand même des résultats donc ça doit marcher smile

]]>
Mon, 25 Mar 2013 01:19:50 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=13015621#p13015621
<![CDATA[Réponse à : Récupérer un lien dans un fichier texte par script ou commande]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12928971#p12928971 Bonjour miniSeb,

Vraiment désolé mais j'ai repris le boulot et du coup je n'ai pas du tout eu le temps de tester le script...
Je teste et je te tiens informé smile

]]>
Sat, 16 Mar 2013 21:10:23 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12928971#p12928971
<![CDATA[Réponse à : Récupérer un lien dans un fichier texte par script ou commande]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12859931#p12859931 Bon, je remonte le topic : le script fonctionne comme tu veux ? Parce que je n'ai pas de retour, donc je ne sais pas si je dois apporter des modifications...

]]>
Sun, 10 Mar 2013 19:37:22 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12859931#p12859931
<![CDATA[Réponse à : Récupérer un lien dans un fichier texte par script ou commande]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12783801#p12783801 Un petit truc en Perl vite torché ce midi (i.e. fonctionnel mais relativement peu testé donc peut-être inefficace dans certains cas) :

Je n'ai pas trouvé ce qu'était plowdown donc je l'ai remplacé par une fonction de contrôle avec wget.

#! /usr/bin/perl -w

# usage : perl script.pl infile outfile

use strict;
use warnings;
use Tie::File;

open( FILE, '<', $ARGV[0] )
  or die "Unable to open file \"$ARGV[0]\" : $!\n";

my %valid_links;

for (<FILE>) {
    next unless /^http/i;
    system("wget --spider -qO - $_");
    if ( $? == 0 ) {
        chomp;
        push( @{ $valid_links{ $+{server} } }, $_ )
          if m&://(w{3}\.)?(?<server>[^/?]+)&i;
    }
}

close FILE;

tie my @outfile, 'Tie::File', $ARGV[1]
  or die "Unable to open \"$ARGV[1]\" : $!";

until ( !keys %valid_links ) {
    for my $server ( keys %valid_links ) {
        push( @outfile, @{ $valid_links{$server} }[0] )
          if defined( @{ $valid_links{$server} }[0] );
        shift @{ $valid_links{$server} };
        delete $valid_links{$server} if scalar @{ $valid_links{$server} } == 0;
    }
}

untie @outfile;

Pour l'utiliser :

perl script.pl fichier-contenant-les-liens-à-tester fichier-de-sortie
]]>
Mon, 04 Mar 2013 13:01:53 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12783801#p12783801
<![CDATA[Réponse à : Récupérer un lien dans un fichier texte par script ou commande]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12779801#p12779801 En fait je ne pensais pas que ce serait si compliqué ^^
J'ai pensé à ça comme condition par exemple:

while read line 
do 
   plowlist "${line}" >liens_provisoires.txt 
   plowdown -m -c liens_provisoires.txt

   If [grep -m 1 "^http://........" liens_provisoires.txt = grep -m derniere_ligne "^http://........" liens_valides.txt]
   then grep -m 2 "^http://" liens_provisoires.txt >>liens_valides.txt
   else grep -m 1 "^http://" liens_provisoires.txt >>liens_valides.txt

done <liens_de_depart.txt

mais je n'ai pas trouvé comment dire à grep de prendre la derniere_ligne.

Qu'en pensez-vous ?

]]>
Sun, 03 Mar 2013 21:17:58 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12779801#p12779801
<![CDATA[Réponse à : Récupérer un lien dans un fichier texte par script ou commande]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12771351#p12771351 C'est clair que là on est à un niveau de complexité où une liste serait bien plus facile à gérer... voire un dictionnaire, si on part sur du Python par exemple...

]]>
Sun, 03 Mar 2013 10:40:55 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12771351#p12771351
<![CDATA[Réponse à : Récupérer un lien dans un fichier texte par script ou commande]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12771161#p12771161 Et si tu faisais une liste ? Au lieu de jouer avec des fichiers temporaires, tu ajoutes chaque lien dans ta liste, tu valides tes liens et puis tu alternes les serveurs à coup de regex...

]]>
Sun, 03 Mar 2013 10:29:47 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12771161#p12771161
<![CDATA[Réponse à : Récupérer un lien dans un fichier texte par script ou commande]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12769141#p12769141 OK, au départ je cherchais seulement à récupérer le premier lien valide, ce qui marche très bien avec la commande grep que vous m'avez donné :

while read line 
do 
   plowlist "${line}" >liens_provisoires.txt 
   plowdown -m -c liens_provisoires.txt
   grep -m 1 "^http://" liens_provisoires.txt >>liens_valides.txt
done <liens_de_depart.txt

Dans ce script pour l'instant, je crée un fichier temporaire liens_provisoires.txt pour chaque ligne de liens_de_depart.txt (plowlist "${line}" >liens_provisoires.txt).
Dans ce fichier temporaire, je vérifie si les liensvalides (plowdown -m -c liens_provisoires.txt),
puis j'extrais le premier lien valide que je rajoute au fichier de sortie liens_valides.txt (grep -m 1 "^http://" liens_provisoires.txt >>liens_valides.txt)

A partir de ce résultat, j'ai cherché à optimiser ce script en alternant les serveurs obtenus dans liens_valides.txt
Donc ajouter une condition à l'extraction, ne plus prendre que le premier lien valide, mais prendre le premier lien valide avec un serveur différent du dernier lien ajouté.
Suis-je clair ? hmm

Je peux fermer ce sujet et en ouvrir un autre, cela ne me dérange pas, mais en fait on reste dans le sujet car on récupère un lien dans un fichier texte de toute façon.
Que préfères-tu, rester ici ou en ouvrir un autre ?

]]>
Sun, 03 Mar 2013 02:16:54 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12769141#p12769141
<![CDATA[Réponse à : Récupérer un lien dans un fichier texte par script ou commande]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12769081#p12769081 Bon, alors on part de quel fichier, parce qu'avec le fichier liens_de_depart.txt, tous les liens pointent vers le même serveur.
C'est évident.

Non seulement tu débutes, mais tu changes la donne.
On perd un peu le fil. sad
(tu aurais dû ouvrir un nouveau sujet, maintenant c'est trop tard)

Les codes que l'on donne sont adaptés à une situation donnée, tu ne peux pas les coller avec d'autres bouts de scripts, en modifiant le fichier d'entrée, et espérer que ça fonctionne encore.

Alors, on recommence:
Tu as un fichier liens_de_depart.txt, tel que montré plus haut
...
Ensuite ? Que veux-tu faire?

]]>
Sun, 03 Mar 2013 01:20:06 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12769081#p12769081
<![CDATA[Réponse à : Récupérer un lien dans un fichier texte par script ou commande]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12768991#p12768991 Ah et bien tous ces fichiers sont les "liens_provisoires.txt", un par un.
Mais au lieu de les créer vraiment en fait, pour éviter de créer chaque fichier {01,04,14,38,XX} un par un et manuellement, je le fais dans une boucle while read line, du coup ce ne sont que des fichiers temporaires.
Cela doit marcher quand même non ?

]]>
Sun, 03 Mar 2013 00:54:12 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12768991#p12768991
<![CDATA[Réponse à : Récupérer un lien dans un fichier texte par script ou commande]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12768931#p12768931 non, je voudrais les fichier{01,04,14,38} tels que décrit dans le post #8, pour lesquels, normalement, la commande awk suffit à elle-même.

]]>
Sun, 03 Mar 2013 00:44:08 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12768931#p12768931
<![CDATA[Réponse à : Récupérer un lien dans un fichier texte par script ou commande]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12768641#p12768641 Je ne comprends pas, quel fichier supplémentaire voudrais-tu ?
les liens de départs ?
Par exemple, si je fais:

while read line 
do 
   plowlist "${line}" >liens_provisoires.txt 
   plowdown -m -c liens_provisoires.txt
   awk -v chmFic=./liens_valides3bis.txt '/^http/{split($0,a,"/"); if(a[3] != last){last=a[3]; print $0 >> chmFic ; nextfile}else next}' liens_provisoires.txt*
done <liens_de_depart.txt

le fichier d'entrée est:

liens_de_depart.txt a écrit :

http://www.jheberg.net/download/6E4gPW- … de-209-avi
http://www.jheberg.net/download/WAdI3x- … de-210-avi
http://www.jheberg.net/download/1FYdSL- … de-211-avi
http://www.jheberg.net/download/jcU0pL- … de-212-avi
http://www.jheberg.net/download/8kVVGt- … de-213-avi
http://www.jheberg.net/download/b1uWZw- … de-214-avi
http://www.jheberg.net/download/qdQXXU- … de-219-avi
http://www.jheberg.net/download/iglI4l- … de-220-avi
http://www.jheberg.net/download/kxw2yi- … de-221-avi
http://www.jheberg.net/download/lEP0iF- … de-222-avi
http://www.jheberg.net/download/N2CNTt- … de-223-avi
http://www.jheberg.net/download/hyYPhw- … de-224-avi
http://www.jheberg.net/download/eezIP2- … de-225-avi
http://www.jheberg.net/download/7F9BvH- … de-226-avi
http://www.jheberg.net/download/4Xt4zh- … de-227-avi
http://www.jheberg.net/download/XJ8uCG- … de-228-avi
http://www.jheberg.net/download/GE3Eon- … de-229-avi
http://www.jheberg.net/download/hTTFC0- … de-230-avi
http://www.jheberg.net/download/XVHBms- … de-231-avi
http://www.jheberg.net/download/96PjsB- … de-232-avi
http://www.jheberg.net/download/oHy4v8- … de-238-avi
http://www.jheberg.net/download/qj19zD- … de-239-avi
http://www.jheberg.net/download/fcBKF8- … de-240-avi
http://www.jheberg.net/download/gN1Lz7- … de-241-avi
http://www.jheberg.net/download/NnkmxE- … de-242-avi
http://www.jheberg.net/download/tCqfJG- … de-243-avi
http://www.jheberg.net/download/T9HUWX- … de-244-avi
http://www.jheberg.net/download/XxkmT9- … de-245-avi
http://www.jheberg.net/download/kbnqub- … de-246-avi
http://www.jheberg.net/download/y9oJlL- … de-247-avi
http://www.jheberg.net/download/eEevKO- … de-248-avi
http://www.jheberg.net/download/zrKMH4- … de-249-avi
http://www.jheberg.net/download/O742Gh- … de-250-avi
http://www.jheberg.net/download/okSDhX- … de-251-avi
http://www.jheberg.net/download/S0ypp2- … de-252-avi
http://www.jheberg.net/download/vNpLHg- … de-253-avi
http://www.jheberg.net/download/4KuDUa- … de-255-avi
http://www.jheberg.net/download/F6grHC- … de-256-avi
http://www.jheberg.net/download/mbm0kD- … de-258-avi
http://www.jheberg.net/download/MJ6Day- … de-259-avi
http://www.jheberg.net/download/f4XmRQ- … de-260-avi

C'est ça que tu veux ?

]]>
Sat, 02 Mar 2013 23:53:33 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12768641#p12768641
<![CDATA[Réponse à : Récupérer un lien dans un fichier texte par script ou commande]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12766671#p12766671 Sans fichiers supplémentaires, je ne peux modifier le script donné.

Celui que j'ai donné semble fonctionner avec deux fois le même fichier fourni dans le premier message

http://dl.free.fr/kNL3uMqxz >>./liens_valides.txt
http://rapidgator.net/file/62108214/Naruto_Shippuden_\u00c3\u00a9pisode_209.avi.html >>./liens_valides.txt
]]>
Sat, 02 Mar 2013 20:33:32 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12766671#p12766671
<![CDATA[Réponse à : Récupérer un lien dans un fichier texte par script ou commande]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12766361#p12766361 Plus de réponses ? sad

]]>
Sat, 02 Mar 2013 19:58:21 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12766361#p12766361
<![CDATA[Réponse à : Récupérer un lien dans un fichier texte par script ou commande]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=12721891#p12721891 Watael a écrit :

comme ça, le chemin et le nom du fichier sont dans une variable (qui ne doit pas être entre guillemets puisque c'est une variable)

awk -v chmFic="./liens_valides3.txt" '/^http/{split($0,a,"/"); if(a[3] != last){last=a[3]; print $0 >> chmFic ; nextfile}else next}' fichier*

Très bien j'ai pris cette version que j'arrivais à comprendre à peu près, même si je suis d'accord avec tiramiseb :

tiramiseb a écrit :

Watael: tu avoueras que la syntaxe reste difficilement compréhensible...

wink
Voici ce que ça donne :

   awk -v chmFic=./liens_valides3bis.txt '/^http/{split($0,a,"/"); if(a[3] != last){last=a[3]; print $0 >> chmFic ; nextfile}else next}' liens_provisoires.txt*

Du coup j'obtiens bien la liste des liens, mais elle ne prend pas en compte le serveur précédent pour alterner les serveurs à chaque lien valide:

Que faut-il ajouter ?

]]>
Wed, 27 Feb 2013 00:54:03 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=12721891#p12721891