IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Wget, combiner -P et -O


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Climatologie
    Inscrit en
    Mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Climatologie

    Informations forums :
    Inscription : Mars 2017
    Messages : 6
    Par défaut Wget, combiner -P et -O
    Bonjour à tous,

    Nouvellement inscrit sur votre forum, et néophyte en langage informatique, j'espère que je poste au bon endroit de votre vaste forum. Je subodore que Wget ait été conçu pour Linux, mais dans la mesure où une version fonctionne sous Windows, et qu'il me semble que le langage approprié se nomme alors "batch", je suppose que mon message se trouvera plus ou moins bien ici. Si ce n'est pas le cas, veuillez m'en excuser, et je compte sur les administrateurs pour le déplacer à l'endroit approprié.

    Juste pour poser le contexte : en tant que simple amateur, j'effectue des recherches climatologiques. Pour ce faire, il me faut récupérer sur le web des images météorologiques de toute sorte. Je travaille sous Windows 7, 64bits.

    Ces images (satellites, radar, siffleurs, cartes, etc...) sont libres d'accès, et se rafraîchissent à intervalle régulier. Du coup, j'utilise Wget, lui-même lancé à intervalles de temps réguliers par le planificateur de tâches Windows. Cela fait des mois que je cherche à droite et à gauche des informations sur comment utiliser Wget, et voici ce à quoi je suis modestement parvenu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wget http://url/fichier.jpg
    Jusque là tout va bien, tous les fichiers sont bel et bien téléchargés à intervalles de temps réguliers, et s'enregistrent dans le même dossier que celui où figure le fichier.bat.

    Première amélioration que j'ai tenté d'apporter, dans la mesure où plus de 1200 images sont téléchargées chaque 24h : trier ces images en les affectant dans des dossiers respectifs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wget http://url/fichier.jpg --prefix-directory=C:\chemin\dossier
    Pas de problème non plus, tous les fichiers se téléchargent et s'entassent chacun dans leur dossier respectif.

    Deuxième amélioration nécessaire, dans la mesure au bout d'une semaine, il y a parfois plus de 8000 images par dossier : trier une seconde fois ces images en les affectant dans des sous-dossiers respectifs renommés en fonction de la date de téléchargement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wget http://url/fichier.jpg --prefix-directory=C:\chemin\dossier\sous-dossier_%date:~6,4%%date:~3,2%%date:~0,2%
    La chose fonctionne encore, et chaque jour un nouveau sous-dossier est créé automatiquement du type : sous-dossier_AAAAMMJJ.

    Troisième amélioration nécessaire, et c'est là que ça bloque. Les images qui se rafraichissent sur le web ont toujours strictement le même nom. Avec wget, les fichiers consécutifs téléchargés, pour ne pas écraser les précédents, sont renommés, mais malheureusement en perdant leur extension. Ainsi j'obtiens une tonne de fichiers à renommer. D'abord fichier.jpg, puis fichier.jpg.1, fichier.jpg.2, fichier.jpg.3, .... , fichier.jpg.5000, etc...
    Au départ je les renommais à la volée avec Antrenamer, et j'obtenais alors fichier.jpg.1.jpg, fichier.jpg.2.jpg, fichier.jpg.3.jpg, etc... Mais franchement, à la longue c'est fastidieux.
    Apprenant que Wget était capable de renommer les fichiers, je teste, en affectant date et heure à chaque fichier afin de faire varier leur nom, et ainsi empêcher Wget d'écraser le fichier précédent ou de renommer lui-même les fichiers en perdant leur extension.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wget http://url/fichier.jpg --output-document=nouveau-nom_%date:~6,4%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%%time:~6,2%.jpg
    Jusque là ça fonctionne, j'obtiens effectivement des fichiers conservant leur extension, et du type : nouveau-nom_AAAAMMJJ_HHMMSS.jpg téléchargé dans le dossier qui contient le fichier.bat.

    Bon, et bien il ne reste plus qu'à orienter ces fichiers dans leurs sous-dossiers respectifs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wget http://url/fichier.jpg --prefix-directory=C:\chemin\dossier\sous-dossier_%date:~6,4%%date:~3,2%%date:~0,2% --output-document=nouveau-nom_%date:~6,4%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%%time:~6,2%.jpg
    Et bien cela ne fonctionne pas, les fichiers continuent à être téléchargés dans le dossier contenant le fichier.bat, comme si la fonction --prefix-directory était ignorée.

    Naïvement, j'essaye d'inverser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wget http://url/fichier.jpg --output-document=nouveau-nom_%date:~6,4%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%%time:~6,2%.jpg --prefix-directory=C:\chemin\dossier\sous-dossier_%date:~6,4%%date:~3,2%%date:~0,2%
    Bien évidemment cela ne change rien.

    Quelqu'un sait-il m'expliquer où se situe le problème ?

    Avec tous mes remerciements,
    Cordialement,
    Mathieu.

  2. #2
    Membre régulier
    Homme Profil pro
    Climatologie
    Inscrit en
    Mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Climatologie

    Informations forums :
    Inscription : Mars 2017
    Messages : 6
    Par défaut Solution
    Bonjour à tous,

    Ne cherchez plus ! Si toutefois quelqu'un cherche...

    Je suis passé voir du côté des Linuxiens, qui ont eu la gentillesse et la tolérance de m'accueillir sur leur forum.

    Le problème est très simple : la fonction -O (--output-document) n'a pas vocation, à sa base, de renommer un fichier, mais de concaténer tous les documents en un seul fichier :

    -O file
    --output-document=file
    The documents will not be written to the appropriate files, but all will be concatenated together and written to file. If - is used as file, documents will be printed
    to standard output, disabling link conversion. (Use ./- to print to a file literally named -.)

    Use of -O is not intended to mean simply "use the name file instead of the one in the URL;" rather, it is analogous to shell redirection: wget -O file http://foo is
    intended to work like wget -O - http://foo > file; file will be truncated immediately, and all downloaded content will be written there.

    For this reason, -N (for timestamp-checking) is not supported in combination with -O: since file is always newly created, it will always have a very new timestamp. A
    warning will be issued if this combination is used.

    Similarly, using -r or -p with -O may not work as you expect: Wget won't just download the first file to file and then download the rest to their normal names: all
    downloaded content will be placed in file. This was disabled in version 1.11, but has been reinstated (with a warning) in 1.11.2, as there are some cases where this
    behavior can actually have some use.

    A combination with -nc is only accepted if the given output file does not exist.

    Note that a combination with -k is only permitted when downloading a single document, as in that case it will just convert all relative URIs to external ones; -k makes
    no sense for multiple URIs when they're all being downloaded to a single file; -k can be used only when the output is a regular file.
    Dans mon cas précis, comme je ne télécharge qu'un seul fichier à la fois, il m'est par chance possible d'utiliser -O pour renommer mon fichier. Par contre, comme spécifié sur le manuel des Linuxiens cité juste avant, la combinaison de -P et -O devient impossible dans le sens où chez moi la fonction -O est utilisée en dehors de son objectif primaire. C'est donc le raisonnement qui est faux.

    La solution est donc simple, et mon fichier.bat devient sous Windows :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MD C:\chemin\dossier\sous-dossier_%date:~6,4%%date:~3,2%%date:~0,2%
    wget http://url/fichier.jpg --output-document=C:\chemin\dossier\sous-dossier_%date:~6,4%%date:~3,2%%date:~0,2%\nouveau-nom_%date:~6,4%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%%time:~6,2%.jpg
    Que cela puisse faire jurisprudence pour tous ceux qui cherchent à utiliser WGET comme je le fais présentement.

    Bien à vous,
    Mathieu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Wget - télécharger des fichiers non-html
    Par narmataru dans le forum Réseau
    Réponses: 10
    Dernier message: 14/07/2018, 15h20
  2. Question sur l'utilisation de wget
    Par berry dans le forum Réseau
    Réponses: 7
    Dernier message: 24/05/2007, 22h46
  3. Combiner plusieurs textures avec couches alpha
    Par TibobiT dans le forum OpenGL
    Réponses: 2
    Dernier message: 01/05/2004, 15h20
  4. [HTTP] Wget-like
    Par tmonjalo dans le forum Développement
    Réponses: 2
    Dernier message: 28/07/2003, 13h39
  5. [VB6] Combiner 2 styles avec MSChart
    Par khany dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 29/04/2003, 09h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo