iMacroでソースコード中のURLを抽出し自動ダウンロードする

ファイルをダウンロードするタスクを自動化したいことがある。自分でC#アプリを組んでもいいが、Firefoxのアドオンである「iMacros for Firefox」を使うのが一番お手軽だ。

これはFirefoxを起動した状態で動作させるので、ログインが必須なサイトでもダウンロードを自動化できる。ログインしないとダウンロードができない場合であっても、一度Firefoxでログインしてからマクロを稼働させれば自動ダウンロードできる。

iMacroのインストールと設定

まずFirefoxのアドレス欄にabout:addonsと打ち込んでアドオン管理画面を出す。そして「アドオンの入手」でimacroを検索してインストールする。Firefoxの再起動が必要になるので再起動する。

再起動が完了すると右上にiMacrosのアイコンが出ているはずなので、それをクリックすると左側にiMacrosの管理バーが出現する。

まず行うべきことは「Manage」タブを開いて設定すること。管理バーの一番下に「Play」、「Rec」、「Manage」という3つのタブがある。そのうちの「Manage」をクリックする。

そしたら「Settings」があるのでそれをクリックする。

「Settings」のウインドウが開いたら、「Paths」タブを選択する。ここでマクロを保存するフォルダを指定するが、このフォルダはできるだけFirefoxと無関係な場所を選択しておいたほうがいい。特にFirefoxが壊れたときにFirefoxごと消すと消えてしまうようなところは指定しない方がいい。オンラインストレージのバックアップ対象になっているフォルダを指定しておけば自動バックアップできる。

マクロの作成

左側の管理バーに「Current.iim」というファイルがある。これを編集する形でマクロを作成していく。

「Current.iim」を右クリックし「Edit Macro」をクリックして編集画面を開く。

これは任意だが、マクロ実行時にすべてのタブを一度リセットするようにすると動かすたびに挙動が変わるという不具合を防止することができる。

TAB CLOSEALLOTHERS

これを記載することで、マクロを起動した直後にいったんタブをすべて閉じてくれる。

iMacroは途中でエラーが出るとマクロが中断してしまう。中断せずにマクロの実行を続けるには次の一文を入れておく。

SET !ERRORIGNORE YES

これを入れておけばダウンロード先URLが404であったときも止まらずに先を進めることができる。

ダウンロードするためのURLをソースから抽出するときにポップアップが出てしまうので、それを抑止するために以下のコードも入れておく。

SET !EXTRACT_TEST_POPUP NO

そして次はタイムアウト系。以前のiMacroではウェブページにアクセスしたら、明示的に何秒待つか指定しなければならなかったが、現在はウェブページの応答が返ってくるまでブロックして待機し、応答が返ってきたらブロックが解除されて次のステップにすすめるようなオプションが用意されている。

SET !WAITPAGECOMPLETE YES

この一文を入れておくとウェブページの読み込みが完了するまでここでストップしてくれる。

しかし、ウェブページにアクセスしたものの応答がないことも当然起こりうる。そのようなときは永遠と待つか、一定時間経過したら先の処理に行くかの二通りしかない。ここでは一定時間応答がなかったら次の処理を進めることにする。

SET !TIMEOUT_PAGE 100

これで100秒間応答がなかったらタイムアウトして次の処理に行くことができる。

次から具体的な処理に入っていくが、最初にすべてのタブをリセットしたとして、その時点でタブは1つのみ開いており中身はブランク状態となっている。そのタブを明示的に選択するには以下のようにする。