Forcer wget à utiliser le nom de fichier réel

51

Lors de l'utilisation wgetdans un script pour télécharger des fichiers à partir de Google Docs, le nom du fichier n'est pas conservé. Par exemple:

wget 'http://spreadsheets.google.com/pub?key=pyj6tScZqmEfbZyl0qjbiRQ&output=xls' 

enregistre le fichier au pub?key=pyj6tScZqmEfbZyl0qjbiRQlieu de indicatorhivestimatedprevalence15-49.xls, ce que je reçois si je clique sur le lien dans un navigateur. Existe-t-il un moyen d'imposer ce comportement de type "navigateur" wget?

Chinmay Kanchi
la source

Réponses:

91
wget --content-disposition 'http://spreadsheets.google.com/pub?key=pyj6tScZqmEfbZyl0qjbiRQ&output=xls'

fera le tour pour vous.

Il n’a toujours pas été complètement implémenté et semble parfois faire l’objet d’un bogue, il n’est donc pas une option par défaut wget, utilisez-le à vos risques et périls.

Bruno Pereira
la source
1
Je connais...! Sympa hein? ;)
Bruno Pereira
Je ne suis pas vraiment un programmeur Web, donc je n'aurais jamais pensé à rechercher l'expression "disposition du contenu". Vous m'avez évité de consulter manuellement les en-têtes HTTP, de découvrir l'en-tête de disposition du contenu et de vous en occuper.
Chinmay Kanchi
WOW + incroyable. THX u roc bonne idée.
Kangourou
@BrunoPereira, j'essaie également de télécharger le fichier de feuille de calcul Google. Mais je n'ai pas pu trouver le lien pour le fichier. Pourriez-vous s'il vous plaît dire comment obtenir le lien vers un fichier de feuille de calcul Google afin que je puisse utiliser wget de la même manière que Chinmay Kanchi. Merci d'avance.
user22180
@ChinmayKanchi Je m'appelle programmeur Web depuis 15 ans, mais quand il s'agit de cela, j'essaie toujours d'utiliser un nom plus significatif dans le code.
Tishma
3

Vous pouvez essayer d'utiliser curl pour télécharger et conserver le nom de fichier d'origine:

curl -OJL ${your_url}
  • -O pour nom-distant
  • -J pour remote-header-name
  • -L pour l'emplacement

voir les options de la ligne de commande curl .

Noam Manos
la source
0

Le lien Google Documents indique en réalité à un script sur le serveur de s'exécuter, en l'analysant dans le fichier souhaité. À ma connaissance, le fichier n'existe pas encore sur le serveur sous la forme els, mais il est généré au moment de l'exécution lorsque vous le demandez. Ainsi, il n'y a rien pour wget à obtenir.

Pour télécharger le fichier, vous devez utiliser l'API Google http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#DownloadingDocs/ .

Ethan
la source
Oui, le serveur demande à un script de s'exécuter, ce qui crée le .xlsfichier à la volée. Cependant, un navigateur complet n’a aucun problème avec cela. Il est donc évidemment possible de se passer de l'API Docs.
Chinmay Kanchi
Je pensais que le script exécuté dans le navigateur utiliserait l'API. Pour le faire sans navigateur, il fallait recréer le script. Intéressant que wget a un drapeau pour cela.
Ethan