きっかけ
「Qiita」運営会社、スマホゲームのエイチームが買収 - ITmedia ビジネスオンライン
というニュースが昨年末駆け巡った。
まあすぐQiitaがどうこうなったりはしないだろうが、なにごともバックアップは必要だ。そもそもみんなだいすきpixivだって新宿某所をゴジラに襲われたらデータ全ロスするわけで、我々が愛用するインフラなんて結構脆かったりする。
先行事例
Qiita API v2 を使って自身の全投稿をエクスポートする Python スクリプトを書いた - Qiita
なんて記事を見つけた。
問題
- Python 2である
- 画像のダウンロードをやってくれない
- 投稿数が100を超えて取得できない
- HTMLデータやコメントなどのMarkdown以外のデータを保存してくれない
- Pythonわからない
という不満があった。自分がよくわかってるのはC++かJavaScriptだ。しかしC++でHTTPS通信とか地獄すぎる。JavaScriptしかないやろ。しかもasync
/await
がある。これはいい。
つくった
yumetodo/qiita_export_all: Qiitaの記事を画像とコメントも含めて全部DLする
使い方
細かいことはREADMEをみてもらうとして、git clone
してnpm start
すると
.
├── img
│ ├── 0_7.png
│ ├── 1_7.png
┊ ┊
├── items
│ ├── [ネタ]私のTLのみんながpure HTMLが何かを理解してくれない件
│ │ ├── comments
│ │ │ ├── 2017-02-02T145121+0900
│ │ │ │ ├── index.html
│ │ │ │ ├── info.json
│ │ │ │ └── README.md
│ │ │ ├── 2017-02-02T153542+0900
│ │ │ │ ├── index.html
│ │ │ │ ├── info.json
│ │ │ │ └── README.md
│ │ │ ├── 2017-02-02T160946+0900
│ │ │ │ ├── index.html
│ │ │ │ ├── info.json
│ │ │ │ └── README.md
│ │ │ ├── 2017-02-02T173054+0900
│ │ │ │ ├── index.html
│ │ │ │ ├── info.json
│ │ │ │ └── README.md
│ │ │ └── 2017-02-02T181039+0900
│ │ │ ├── index.html
│ │ │ ├── info.json
│ │ │ └── README.md
│ │ ├── index.html
│ │ ├── info.json
│ │ └── README.md
┊ ┊
のようなものができる。
なんでこんなDirectory構造かというと、GitHubではREADME.md
はDirectoryを開いたときに下に表示してくれるのでこうしている。まああと、そっくりそのままGitBookにしてしまうとかもできる気がする。
追記: 2020/03/06
v1.3.0をリリースしました。これによって、いちいちcloneしてこなくてもnpx qiita_export_all
のように実行できるようになりました。
https://github.com/yumetodo/qiita_export_all/releases/tag/v1.3.0