Forum général.cherche-logiciel script wget pour dl fichiers 1 à 200

Posté par  .
Étiquettes : aucune
0
11
mar.
2006
Bonjour à tous,

Je voudrais créer un script ou une simple commande qui me permette de télécharger des fichiers numéroté de 1.xxx à 200.xxx par exemple au lieu de devoir télécharger un fichier après l'autre.

Voici la commande :

wget -r -np -A xxx http://un_site.com/un_répertoire/1.xxx

Qu'est ce qui ne va pas?

J'ai essayé :
wget -r -np -A xxx http://un_site.com/un_répertoire/*.xxx
mais ça ne fonctionne pas.

Ce sont des fichiers en Flash(.flv) qui sont caché sur le site mais que l'on retrouve dans le cache du navigateur IE par exemple et que l'on peu conserver mais il faut que je visionne tous les fichiers un après l'autre alors que je voudrais les dl simplement.

C'est avec ce petit programme Movies Extractor Scout Lite sous windows que j'ai pu voir l'adresse et ou sont caché ces fichiers ainsi que leurs nom.

Merci de m'aider.
  • # explications

    Posté par  (site web personnel) . Évalué à 3.

    Je n'ai pas la solution en bash, mais je voulais juste revenir sur tes deux lignes de commandes

    pour que le -r, recursif, fonctionne, il faut que wget sache quel lien suivre ! si la page que tu indiques ne contient pas de lien, il ne téléchargera aucun autre document.
    Donc tu mets 1.xxx, lui il va le télécharger sans savoir quoi faire suite à ça.

    Ensuite ton *.xxx, pareil, il lui faut une liste de fichiers pour savoir à quoi correspon "*", car si pour toi "*" c'est "tout", c'est aussi "toto.xxx", "23456.xxx"

    Nan, la solution est, je pense, de faire une boucle de 1 à 200 qui va faire un wget du bon fichier
  • # en bash

    Posté par  . Évalué à 4.


    for num in $(seq 1 200); do wget http://un_site.com/un_répertoire/$num.xxx; done
    • [^] # Re: en bash

      Posté par  . Évalué à 3.

      souvent, il que seq formate les nombres sur 3 chiffres, en préfixant des zéros si nécessaire :

      $(seq -f %03g 1 200)
  • # man curl

    Posté par  . Évalué à 4.

    curl "http://un_site.com/un_repertoire/[1-200].xxx" -O

    Options intéressantes :
    -f : pour ne pas télécharger les fichiers non disponibles
    -o : pour renommer les fichiers

    Exemple :
    curl "http://site.com/[1-10]/[01-10].xxx" -f -o #1_#2.xxx

    #1 et #2 prennent les différentes valeurs des nombres entre crochets, ça permet d'obtenir les fichiers 1_01.xxx, 1_02.xxx, ..., 10_10.xxx.
    • [^] # Re: man curl

      Posté par  . Évalué à -1.

      Merci à tous pour votre aide et vos explications.

      La commande de Frédéric a presque fonctionné.

      J'ai du tapé :
      curl "/http://un_site.com/un_repertoire/[1-200]_original.flv" -f -O
      et ensuite
      curl "/http://un_site.com/un_repertoire/[1-200]_extented.flv" -f -O

      car curl "http://un_site.com/un_repertoire/[1-200].xxx" -O n'a pas fonctionné.

      Ça m'a permis de télécharger les fichiers "1_original.flv à 200_original.flv" et les fichiers "1_extented.flv à 200_extented.flv"

      Je savais qu'il y avait les fichiers "x_original.flv et x_extented.flv" mais je ne sais pas s'il y en a d'autre.

      Comment faire pour réussir à télécharger tous les fichiers .flv?

      Merci
      • [^] # Re: man curl

        Posté par  . Évalué à 2.

        Si tu ne connais pas les noms des fichiers, la commande curl ne te servira à rien. Dans ce cas, essaye plutôt d4x ou httrack (aspirateurs de sites).

        Par contre, si tu connais toutes les variations des noms de fichiers, tu peux aussi faire :
        curl "/http://un_site.com/un_repertoire/[1-200]_{extented,original}.flv" -f -O

        Ça permet d'obtenir les fichiers 1_original.flv, 1_extended.flv, ..., 200_original.flv, 200_extended.flv en une seule commande.
        • [^] # Re: man curl

          Posté par  . Évalué à -1.

          Les aspirateurs comme d4x ou httrack ne fonctionne pas.

          Y a pas moyen de remplacer le nom des fichiers par je ne sais quoi?
          Je croyais que les "*" remplacait les noms mais ça ne fonctionne pas.

          Merci pour les informations.
          • [^] # Re: man curl

            Posté par  (site web personnel) . Évalué à 1.

            le "*" il est remplacé sur les fichiers locaux. si tu fais
            wget http://www.foo.com/bar/* il va essayer de télécharger les fichiers du repertoire de ta machine sur le site web. Ce qui ne va pas marcher car ils sont chez toi, pas là bas.

            Si tu veux télécharger tout tout tout sans savoir ce qu'il y a, tu fais un script perl par exemple... Ou tu enregistres la page web, tu édites le code source pour récupérer la liste de tous les fichiers à télécharger, et tu faits un script à partir de cette liste...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.