Github の Issues を html ソースごとバックアップ Mac automator で簡単に

Githubはプログラムのソースコードは履歴付きできっちり管理してくれるしgit形式でのエクスポートも簡単です。が、バグ・要望トラッカーやプルリクエスト管理に使われるIssueのやりとりをバックアップする簡単な方法はありません。 ※APIはあるけれど、各イシューの最初のメッセージしか取得出来ませんでした。 ※※わたしのやり方が下手なだけかも。

というわけで、開発チームの議論の経過を保存しておくために、各イシューページを丸ごとHTMLソースとしてバックアップすることにしました。後ほどGithubにイシューリストを復旧するためのエクスポート、ではなく単にローカルで読めればいい程度のバックアップです。

必要なものはMacに最初から入ってるSafariとAutomatorだけ。

では始めます。

Safari でバックアップするイシューの確認

まずは、対象のレポジトリのIssueページからイシューの数を確認し、バックアップするURLリストを作成します。

IssuesページはこんなURLのはずです。

http://github.com/【アカウント名】/【レポジトリ名】/issues/【イシュー番号】

最後の数字は単純にインクリメントしていくだけなので、イシューの数に応じたURLリストを作っておきます。

こんな感じ。

ちなみに、プルリクエストもGithubのUI上はIssuesに表示されます。/【レポジトリ名】/pull/【番号】 といったディレクトリになってしまいますが、問題ありません。/【レポジトリ名】/issues/【番号】というURLにリダイレクトされます。

なお、プライベートレポジトリの場合、ここでちゃんと Safari で Github にログインして、ブラウザ上でイシューを閲覧できる状態にしておきましょう。

Automator で、をワークフロー仮組み

Automator を起動して、指定URLのソースをダウンロードするワークフローを組みます。

使うモジュールは二つだけ。[指定されたURLを取得]と[URLをダウンロード]です。

その2つを連結して、ダウンロードしたいURLを2,3個登録しておきます。

ここで一度、動作確認。

ワークフローを実行させてみて、想定通り対象のイシューページがソースごと保存されローカルで開けるか確認します。

問題なければ、任意の場所にワークフローを保存。

Automator ワークフローのソースを編集

では、大量にあるイシューページをまとめて登録します。ここからはエディタで。

保存したワークフローをエディタに投げ込むと、下のスクリーンショットのような階層が見えます。document.wflowというファイルにワークフローのソースが書かれているようです。

ソースコードを読み進めていくと先ほど Automator の画面で追加した数個のURLを指定している箇所があるはず。対象URLリストに合わせてこの部分を複製します。

で、保存。

ワークフローを Automator で開いて実行

今エディタで編集したワークフローを、Automatorで開きます。

[指定されたURLを取得] モジュール内に、エディタで追加した多数のURLが登録されていればOK。

実行すると、じゃんじゃかHTMLソースがダウンロードされます。

1ファイルあたり100k〜1MBくらいのデータ量になります。 ので、適当に圧縮してバックアップフォルダに投げ込んでおしまい。