Zmusza wget do używania rzeczywistej nazwy pliku

50

Podczas korzystania wgetze skryptu do pobierania niektórych plików z Dokumentów Google nazwa pliku nie jest zachowywana. Na przykład:

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

zapisuje plik jako pub?key=pyj6tScZqmEfbZyl0qjbiRQzamiast indicatorhivestimatedprevalence15-49.xls, co otrzymuję, jeśli kliknę link w przeglądarce. Czy jest jakiś sposób na wymuszenie tego „podobnego do przeglądarki” zachowania wget?

Chinmay Kanchi
źródło

Odpowiedzi:

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

zrobi dla ciebie lewę.

Nadal nie jest w pełni zaimplementowany i wydaje się czasem wyrządzać błędy, więc nie jest domyślną opcją w wget, użyj go na własne ryzyko.

Bruno Pereira
źródło
1
Wiem...! Fajnie co? ;)
Bruno Pereira,
Nie jestem zbytnio programistą, więc nigdy nie pomyślałbym o szukaniu frazy „usposobienie treści”. Zaoszczędziłeś mi konieczności ręcznego przeglądania nagłówków HTTP, odkrywania nagłówka dysponowania treścią i radzenia sobie z nim.
Chinmay Kanchi,
WOW + niesamowite. THX u roc dobry pomysł.
Kangarooo
@BrunoPereira, próbuję również pobrać plik arkusza kalkulacyjnego Google. Ale nie mogłem znaleźć linku do pliku. Czy możesz powiedzieć, jak uzyskać link do pliku arkusza kalkulacyjnego Google, abym mógł używać wget w taki sam sposób, jak Chinmay Kanchi. Z góry dziękuję.
user22180,
@ChinmayKanchi Nazywam siebie programistą internetowym od 15 lat, ale jeśli chodzi o to, zawsze staram się używać bardziej znaczącej nazwy w kodzie.
tishma,
3

Możesz spróbować użyć curl, aby pobrać i zachować oryginalną nazwę pliku:

curl -OJL ${your_url}
  • -O dla nazwy zdalnej
  • -J dla nazwy zdalnego nagłówka
  • -L dla lokalizacji

zobacz opcje wiersza polecenia curl .

Noam Manos
źródło
0

Link do Dokumentów Google naprawdę nakazuje skryptowi uruchomienie na serwerze, który analizuje go w żądanym pliku. Plik, zgodnie z moją najlepszą wiedzą, nie istnieje nigdy na serwerze w formie els, ale jest generowany w czasie wykonywania, gdy go o to poprosisz. Dlatego nie ma nic do zdobycia przez wget.

Aby pobrać plik, musisz użyć interfejsu API Google http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#DownloadingDocs/ .

Ethan
źródło
Tak, serwer prosi o uruchomienie skryptu, który tworzy .xlsplik w locie. Jednak pełna wersja przeglądarki nie ma z tym problemu. Więc oczywiście można obejść się bez interfejsu API Dokumentów.
Chinmay Kanchi,
Myślałem, że skrypt uruchamiany w przeglądarce użyje interfejsu API, więc aby to zrobić bez przeglądarki, trzeba będzie odtworzyć skrypt. Ciekawe, że ten wget ma na to flagę.
Ethan