#26 Le 03/03/2013, à 01:53
- Mathal44
Re : Récupérer un lien dans un fichier texte par script ou commande
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:
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 ?
Hors ligne
#27 Le 03/03/2013, à 02:44
- Watael
Re : Récupérer un lien dans un fichier texte par script ou commande
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.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#28 Le 03/03/2013, à 02:54
- Mathal44
Re : Récupérer un lien dans un fichier texte par script ou commande
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 ?
Hors ligne
#29 Le 03/03/2013, à 03:20
- Watael
Re : Récupérer un lien dans un fichier texte par script ou commande
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.
(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?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#30 Le 03/03/2013, à 04:16
- Mathal44
Re : Récupérer un lien dans un fichier texte par script ou commande
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 ?
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 ?
Hors ligne
#31 Le 03/03/2013, à 12:29
- miniSeb
Re : Récupérer un lien dans un fichier texte par script ou commande
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...
Hors ligne
#32 Le 03/03/2013, à 12:40
- tiramiseb
Re : Récupérer un lien dans un fichier texte par script ou commande
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...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#33 Le 03/03/2013, à 23:17
- Mathal44
Re : Récupérer un lien dans un fichier texte par script ou commande
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 ?
Dernière modification par Mathal44 (Le 04/03/2013, à 00:24)
Hors ligne
#34 Le 04/03/2013, à 15:01
- miniSeb
Re : Récupérer un lien dans un fichier texte par script ou commande
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
Hors ligne
#35 Le 10/03/2013, à 21:37
- miniSeb
Re : Récupérer un lien dans un fichier texte par script ou commande
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...
Hors ligne
#36 Le 16/03/2013, à 23:10
- Mathal44
Re : Récupérer un lien dans un fichier texte par script ou commande
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é
Hors ligne
#37 Le 25/03/2013, à 03:19
- Mathal44
Re : Récupérer un lien dans un fichier texte par script ou commande
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
Hors ligne