Qiita記事のいいね・Views・ストック数を取得するツールを作った

## はじめに

Qiita記事の参照数、いいね数はわかるけどストック数が見えないのがずっと気になっていました。
そんな中[Qiita APIを利用して記事のViewsとストック数がまとめて取得できるAPIを作ってみた](https://qiita.com/kai_kou/items/3f10ce93f4aa3b57b2d0)という素敵ツールが公開されたのでよし早速使ってみよう！
と思ったらAWS前提。もうちょっと気軽に使いたいな～

ということで、公開されていたコードを参考にpythonで記事情報が表示できる~~パクリ~~ツールを作りました。

## ツールについて

qiitaの自記事に関する閲覧、いいね、ストック数を取得するCLIツールです。

### 公開場所

以下githubに公開しています。
https://github.com/developer-kikikaikai/get_qiita_informaion
1stverブランチ: 本記事作成時のツール
masterブランチ: QiitaAPIv2に依存しない汎用ツールに仕様変更。[こんなの](https://qiita.com/developer-kikikaikai/items/646e9f1ca8e1475e2dec)

### 使い方

Usage: python3.6 main.py conf_path [option]

|option|説明|
|:---|:---|
|all|自身の記事情報一覧をJson形式で表示します。|
|view itemid|指定されたitem idのViewsを表示します。|
|stock itemid|指定されたitem idのストック数を表示します。|
|like itemid|指定されたitem idのいいね数を表示します。|
|all itemid|指定されたitem idのViews、ストック数、いいね数を表示します。|
|その他|利用方法(この表示)がされます|

### 動作確認環境

Linux (Ubuntu 18.04 x python3.6)
Windows 10 ( x python3.7, こちらには以下パッケージ追加が必要でした。)

```:Windowsのパッケージ追加
python -m pip install --upgrade pip
pip install requests
```

### 更新ポイント

- アクセストークン取得前提だけど、閲覧数以外は別の手段でも取得可能。
- APIで欲しい情報を抜き出しているのはいいけど、文章本文等無駄にしている情報が沢山あるのがもったいない

### 実際の出力例

こんな感じで各記事のタイトル, Views(view), いいね数(like), ストック数(stock)が表示されます。
これは複数の記事を表示していますが、itemidを指定して1つの記事に対する情報を表示することも出来ます。

```console:
>python main.py ..\conf\access_setting.json all
{
    "5937efef00f4cc52e288": {
        "title": "C言語で デザインパターンにトライ ～Factory Methodパターン  クラス生成メソッドだけ定義しておくから、実 際の生成処理は継承先に任せた！",
        "view": 66,
        "like": 1,
        "stock": 2
    },
    "e62c912702a28ab07360": {
        "title": "gitのコミット指定方法(ハッシュ値、HEAD、HEAD~)を理解して、コマンドを有効活用しよう！",
        "view": 166,
        "like": 0,
        "stock": 1
    },
    "9b70f7bc81adfca8a7e7": {
        "title": "開発者が直接masterリポジトリを参照できない！そんな閉じた環境でもストレスフリーなgit運用をしよう",
        "view": 194,
        "like": 5,
        "stock": 5
    },
    "421d4ab74e161d993074": {
        "title": "プログラミングの変数名、関数名を命名する際に便利なサイト・記事",
        "view": 159,
        "like": 2,
        "stock": 4
    },
    "1572019427833bd2e915": {
        "title": "JavaCVのOpenCV機能を利用した動画の透過合成・クロマキー合成",
        "view": 188,
        "like": 0,
        "stock": 0
    }
}

```

必要な設定はこのような感じ。自分の記事をまとめて取得することが出来ます。

```json:access_setting.json
{
	"//api_ver":"versionは2で固定。API変更にも耐えられるよう設定を持つようにしました。",
	"api_ver":2,
	"data":{
		"//get_owndata":"←yesだとアクセストークンを利用して自分の記事が取得できます(viewが見えるようになる)。noだと起動が速くなる代わりにアクセストークンを使わず、itemidを指定する前提です。",
		"get_owndata":"yes",
		"access_token":"後で記述するアクセストークンを記載",
		"//item_count":"取得する記事数を指定。all指定の際に使います。"
		"item_count":5
	}
}
```

### アクセストークンの取得

Viewsを見るためにアクセストークンというものを作成します。
以下サイトでアクセストークンを発行します。
https://qiita.com/settings/tokens

すると以下の場所にアクセストークンが表示されるので、必ずメモするようにしてください。再表示されないので

<img width="666" alt="access_token.png" src="https://qiita-image-store.s3.amazonaws.com/0/252277/6ed5c1dc-60c8-f89f-b9ad-8bc4586be27c.png">

取得したアクセストークンを、設定ファイルの`access_token`に記載してあげれば閲覧数と自分の記事一覧も取得できるようになります。

## その他改善点

- allで自記事一覧を取得する際はアクセストークンが必要。しかし別の手段でもitem一覧は取得可能らしい。(閲覧数、限定公開記事情報くらいしか差はなさそう)

[参考:みんな大好きQiitaのバックアップツールを作ったので公開](https://qiita.com/i-tanaka730/items/6ba423abbcddde62c187)

- APIで欲しい情報を抜き出しているのはいいけど、文章本文等無駄にしている情報が沢山あるのがもったいない

本文情報もダウンロードしてるので、記事数が多いと無駄に重いのにそのほとんどの情報を捨ててるというもったいない状態。それこそバックアップ機能とかがいいよな～と思ったけど節操無さすぎなので止めました。

仕様把握も甘いので、絶対アップデートしよう。
⇒[アップデートしました](https://qiita.com/developer-kikikaikai/items/646e9f1ca8e1475e2dec)

## 参考

[Qiita APIを利用して記事のViewsとストック数がまとめて取得できるAPIを作ってみた](https://qiita.com/kai_kou/items/3f10ce93f4aa3b57b2d0)
[みんな大好きQiitaのバックアップツールを作ったので公開](https://qiita.com/i-tanaka730/items/6ba423abbcddde62c187)
[公式API](https://qiita.com/api/v2/docs)