Erzwinge, dass wget den aktuellen Dateinamen verwendet


50

Bei der Verwendung wgetin einem Skript zum Herunterladen einiger Dateien aus Google Text & Tabellen wird der Name der Datei nicht beibehalten. Zum Beispiel:

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

speichert die Datei als pub?key=pyj6tScZqmEfbZyl0qjbiRQstatt indicatorhivestimatedprevalence15-49.xls, was ich bekomme, wenn ich in einem Browser auf den Link klicke. Gibt es eine Möglichkeit, dieses "browserähnliche" Verhalten in zu erzwingen wget?

Antworten:


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

wird den Trick für Sie tun.

Es ist immer noch nicht vollständig implementiert und scheint manchmal etwas fehlerhaft zu sein. Daher ist es nicht die Standardoption wget, es auf eigenes Risiko zu verwenden.


1
Ich weiß...! Schön, was? ;)
Bruno Pereira

Ich bin kein wirklicher Webprogrammierer, daher hätte ich nie daran gedacht, nach dem Begriff "Inhaltsdisposition" zu suchen. Sie haben es mir erspart, manuell in die HTTP-Header zu schauen, den Content-Disposition-Header zu ermitteln und damit umzugehen.
Chinmay Kanchi

WOW + unglaublich. THX u roc gute Idee.
Kangarooo

@BrunoPereira, ich versuche auch, Google Spreadsheet-Datei herunterzuladen. Aber ich konnte den Link für die Datei nicht finden. Könnten Sie bitte sagen, wie Sie den Link für eine Google-Tabellenkalkulationsdatei erhalten, damit ich wget auf die gleiche Weise wie Chinmay Kanchi verwenden kann. Danke im Voraus.
user22180

@ChinmayKanchi Ich nenne mich seit 15 Jahren Webprogrammierer, aber wenn es darum geht, versuche ich immer, einen aussagekräftigeren Namen im Code zu verwenden.
Tishma

3

Sie können versuchen, Curl zu verwenden, um den ursprünglichen Dateinamen herunterzuladen und beizubehalten:

curl -OJL ${your_url}
  • -O für Remote-Name
  • -J für Remote-Header-Name
  • -L für den Standort

Siehe Curl-Befehlszeilenoptionen .


0

Der Link zu Google Text & Tabellen weist ein Skript auf dem Server an, das ausgeführt werden soll, und analysiert es in die gewünschte Datei. Die Datei existiert meines Wissens nie auf dem Server in der anderen Form, sondern wird zur Laufzeit generiert, wenn Sie danach fragen. Es gibt also nichts, was man sich hätte holen können.

Zum Herunterladen der Datei benötigen Sie die Google-API http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#DownloadingDocs/ .


Ja, der Server fordert ein Skript an, das die .xlsDatei im laufenden Betrieb erstellt . Ein vollwertiger Browser hat damit jedoch kein Problem. Es ist also offensichtlich möglich, auf die Docs-API zu verzichten.
Chinmay Kanchi

Mein Gedanke war, dass das im Browser ausgeführte Skript die API verwenden würde. Um dies ohne den Browser zu tun, müsste das Skript neu erstellt werden. Interessant, dass wget eine Flagge dafür hat.
Ethan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.