LoginSignup
37
22

More than 3 years have passed since last update.

Qiita API v2 を使って自身の全投稿をエクスポートするJavascriptを書いた

Last updated at Posted at 2018-01-02

きっかけ

「Qiita」運営会社、スマホゲームのエイチームが買収 - ITmedia ビジネスオンライン
というニュースが昨年末駆け巡った。

image.png
image.png

まあすぐ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

License

CC BY 4.0

CC-BY icon.svg

37
22
11

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
22