wgetに実際のファイル名を使用させる


50

wgetスクリプトで使用してGoogleドキュメントから一部のファイルをダウンロードする場合、ファイルの名前は保持されません。例えば:

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

ファイルをのpub?key=pyj6tScZqmEfbZyl0qjbiRQ代わりにとして保存しますindicatorhivestimatedprevalence15-49.xls。これは、ブラウザでリンクをクリックすると表示されます。この「ブラウザのような」動作を強制する方法はありますwgetか?

回答:


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

あなたのためのトリックを行います。

まだ完全には実装されておらず、時々バグが発生する可能性があるため、デフォルトのオプションでwgetはありません。ご自身の責任で使用してください。


1
知っている...!いいね?;)
ブルーノペレイラ

私はあまりWebプログラマーではないので、「コンテンツの性質」というフレーズを探すことを考えたことがなかったでしょう。HTTPヘッダーを手動で調べ、content-dispositionヘッダーを見つけて処理する必要がなくなりました。
Chinmay Kanchi

すごい+すごい。THX u rocの良いアイデア。
カンガルー

@ BrunoPereira、Googleスプレッドシートファイルもダウンロードしようとしています。しかし、ファイルのリンクが見つかりませんでした。Chinmay Kanchiと同じようにwgetを使用できるように、Googleスプレッドシートファイルのリンクを取得する方法を教えてください。前もって感謝します。
user22180 14年

@ChinmayKanchi私は過去15年間、自分自身をWebプログラマーと呼んでいますが、これに関しては、コードでもっと意味のある名前を常に使用しています。
ティシュマ


0

Google Docsリンクは、実際にサーバー上のスクリプトに実行を指示し、それを必要なファイルに解析します。私の知る限り、このファイルはels形式でサーバー上に存在することはありませんが、実行時に要求すると生成されます。したがって、wgetが取得するものは何もありません。

ファイルをダウンロードするには、google API http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#DownloadingDocs/を使用する必要があります


はい、サーバーは実行中の.xlsファイルを作成するスクリプトを要求しています。ただし、本格的なブラウザでも問題はありません。したがって、Docs APIなしで実行することは明らかに可能です。
チンメイカンチ

私の考えでは、ブラウザで実行されるスクリプトはAPIを使用するため、ブラウザなしで実行するには、スクリプトを再作成する必要があります。興味深いことに、wgetにはフラグがあります。
イーサン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.