リストからファイルをダウンロードし、wget
重要でないエラーが発生した場合(嵐の間に不安定なWIFIが原因で)、自動的に再開するために使用するシェルスクリプトがあります。
問題は、ファイルに書き込んで完了したら.part拡張子を削除したいということですfilename.part
(上書きなどはこの時点で処理されます)。これはのような単純なURLでうまくいきhttp://myserver.org/myfile.doc
ますがhttp://myserver.org/index.php?file_id=foo
。 (私の方法はあなたがindex.php.part
望む結果の代わりに書こうとします)
wgetは自動的に「最終」ファイル名を取得して作成することができますが、他の拡張子として保存するオプションは提供されず、-O
制御できません。
だから私の質問は、名前は同じですが、拡張子が追加されたファイルを作成できるように、ダウンロードURLから「最終」ファイル名を取得する標準的な方法(またはツール)はありますか? (たとえば-O
wgetまたはカールに使用されます)-o
wget $URL -O "$URL_GUESSED_FILENAME.part"
私のツールはwgetまたはカールです。私は現在wgetを使用していますが、好むものはありません。または、Pythonでこれを行う方法がある場合は、その方法も開いています。
答え1
http://myserver.org/index.php?file_id=foo
Wgetは、サーバーが提供するファイル名(たとえば)に保存できますfoo.ext
。通常、これにはwgetオプションが必要です--content-disposition
。ダウンロードするには、-O foo.ext.part
まず内容を理解する必要があります。ファイル名を含むhttpヘッダーを最初にダウンロードするだけです。
wgetを使用すると、次のように対応するヘッダー行を取得できます。
wget --spider --server-response URL 2>&1 | grep -i content-disposition
ファイル名を抽出するには、ヘッダーの簡単な解析を行う必要があります。もちろんこれはオプションです。それが存在しない場合、あなたは幸運ではなく、wgetはに依存しますindex.php
。それからあなたもそれを使うことができます-O
。