Forzar wget para utilizar el nombre de archivo real


51

Cuando se utiliza wgeten un script para descargar algunos archivos de Google Docs, el nombre del archivo no se conserva. Por ejemplo:

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

guarda el archivo como en pub?key=pyj6tScZqmEfbZyl0qjbiRQlugar de indicatorhivestimatedprevalence15-49.xls, que es lo que obtengo si hago clic en el enlace en un navegador. ¿Hay alguna forma de hacer cumplir este comportamiento "similar al del navegador" wget?

Respuestas:


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

hará el truco por ti.

Todavía no está completamente implementado y parece fallar un poco a veces, por lo que no es la opción predeterminada wget, úselo bajo su propio riesgo.


1
Lo sé...! Bien eh? ;)
Bruno Pereira

No soy realmente un programador web, por lo que nunca habría pensado en buscar la frase "disposición de contenido". Me ahorró tener que mirar manualmente los encabezados HTTP, descubrir el encabezado de disposición de contenido y tratarlo.
Chinmay Kanchi

GUAU + increíble. THX u roc buena idea.
Kangarooo

@BrunoPereira, también estoy tratando de descargar el archivo de hoja de cálculo de Google. Pero no pude encontrar el enlace para el archivo. ¿Podría decir cómo obtener el enlace para un archivo de hoja de cálculo de Google para que pueda usar wget de la misma manera que Chinmay Kanchi? Gracias por adelantado.
user22180

@ChinmayKanchi Me llamo programador web los últimos 15 años, pero cuando se trata de esto, siempre trato de usar un nombre más significativo en el código.
Tishma


0

El enlace Google Docs realmente le dice a un script que se ejecute en el servidor, analizándolo en el archivo que desea. El archivo, que yo sepa, no existe nunca en el servidor en la forma els, pero se genera en tiempo de ejecución cuando lo solicita. Por lo tanto, no hay nada que wget pueda obtener.

Para descargar el archivo, deberá utilizar la API de Google http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#DownloadingDocs/ .


Sí, el servidor solicita que se ejecute un script, que crea el .xlsarchivo sobre la marcha. Sin embargo, un navegador completo no tiene ningún problema con esto. Entonces, obviamente, es posible prescindir de la API de Docs.
Chinmay Kanchi

Pensé que el script ejecutado en el navegador usaría la API, por lo que para hacerlo sin el navegador, uno tendría que recrear el script. Es interesante que wget tenga una bandera para ello.
Ethan
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.