劣悪ネットワーク環境下で任意のリンク先のファイルをダウンロードする
TL;DR
links.txt に、1行1リンクで記載しておいて、
!/bin/bash input="./links.txt" while IFS= read -r var do echo "$var" export ec=18; while [ $ec -eq 18 ]; do /usr/bin/curl -O -C - "$var"; export ec=$?; done done < "$input"
経緯
Flickr の無料アカウントについて、今まで上限1TBだったのがが上限1000枚にする、との告知。
と同時に、これまでアップロードしてきた画像の全てを、いくつかの zip ファイルに分割してそれらのリンクを吐き出してくれる仕様が追加された。
有料アカウントへの移行も検討しつつ、ダウンロードはしておくかと考えたが、いかんせん我が家のネットワーク環境は劣悪だ。
を数度繰り返して埒が明かないので他の方法を検討
curl
いろんなダウンロードツールを試しても良かったのだろうが、信頼感でCUIに勝るもの無しとの信念のもと curl
コマンドでのダウンロードを敢行。
翌朝エラー表示に落胆しつつも、エラーコードが18であることも確認できたので、「エラーコード18ならコンティニューでいけんじゃね?」でやってみたら大当たり
最終的にうまくいった方法
links.txt
とか適当に、ダウンロードしたいURL全て記載。
https://example.com/1.zip https://example.com/2.zip https://example.com/3.zip
shell script で「上記を読み込んでダンロードしつつ、エラーコード18ならコンティニューで再度ダウンロード」を組む。
dl.bash
!/bin/bash input="./links.txt" while IFS= read -r var do echo "$var" export ec=18; while [ $ec -eq 18 ]; do /usr/bin/curl -O -C - "$var"; export ec=$?; done done < "$input"
実行
$ bash dl.bash
ブラウザ上で、翌朝エラーをみてがっかりしながら再度ダウンロード、とかやってたのが嘘のように一発で全ダウンロードが終わってなんというかこれ爽快。
その他
「そもそもネットワーク環境なんとかしろよ」っていう