cURLを使用して一連のPodcastエピソードをダウンロードしようとしています。一連の数字を使用してパターンに一致する複数のファイルをダウンロードする方法を知っていますが、単一のURLに複数の範囲を持つ方法がわかりません。
例URL:
http://www.example.com/01_episode_1.mp3
http://www.example.com/02_episode_2.mp3
http://www.example.com/03_episode_3.mp3
...
http://www.example.com/52_episode_52.mp3
私が使うなら
curl -O http://www.example.com/[01-52]_episode_[1-52].mp3
次のファイルを取得します。
01_episode_1.mp3
01_episode_2.mp3
01_episode_3.mp3
...
01_episode_52.mp3
02_episode_1.mp3
02_episode_2.mp3
02_episode_3.mp3
...
02_episode_52.mp3
03_episode_1.mp3
03_episode_2.mp3
03_episode_3.mp3
...
03_episode_52.mp3
etc...
しかし、ほとんどは明らかに有効なファイルではありません。
cURLを使用して目的のファイルをどのようにインポートできますか?それとも、仕事に間違ったツールを使用しようとしていますか?
これはOS X 10.10.3にあり、すべてのバージョンのcURLはそのプラットフォームにデフォルトでインストールされています。
答え1
curl
この特殊なケースの解決策は、弱いが同様の問題である関数範囲のグロービングには非常に役立ちます。他の人もそうするために、私はこのスレッドを偶然見つけました。
curl http://www.example.com/[01-52]_episode_[1-52].mp3 -o "ep#1_#2.mp3"
find . type -f -empty -delete
説明する:
curl
範囲ワイルドカード機能の使用- 2つあるのでループより弱いです。ほぼ同じ実際には同じ範囲を意味します(最初の - の前にあるゼロを除く)。
- ローカル名の使用を
-o
サポートし、範囲ワイルドカードを使用するときにファイル保存機能を表示する場合に選択します。-O
#1 #2 ... #n
curl
- 2番目の数字を選択することもできますが、
-o "#2.mp3"
そうするとファイルが上書きされます。ダウンロード01ep1.mp3
と02ep1.mp3
保存1.mp3
- example.comでテストすると、ページは常に200と同じページで応答するため、奇妙な結果が表示されます。ご存知のように、これがIANAの設定方法です。
- 機能文書:https://ec.haxx.se/cmdline-globbing.html
find
最大範囲がわからないので、ここに電話してください- これにより、すべてのファイルが保存されます。範囲が [1-10] でページ 1 と 2 のみがある場合は、ページ 3-9 (含む) の空のファイルが保存されます。したがって、
find . -empty -delete
空のファイルを削除します。もちろん上記の問題によりexample.comウェブサイトはそこでは機能しません。
答え2
どうですか?
for i in {1..52}; do curl -O `printf "http://www.example.com/%02d_episode_%d.mp3" $i $i`; done