概要
Qiita APIについてのメモ。
Qiita API v2ドキュメント - Qiita:Developerを見れば全てわかりますが、自分に必要なところだけメモしてます。
この記事では、QiitaAPIの以下がわかります。
- API利用制限について
- LGTMの履歴の取得
- 自分の全記事のView数の取得
- アクセストークンの発行と使い方
APIの利用制限
認証ユーザー | 1時間に1000回 |
認証なし | 1時間に60回 |
Qiita API v2の使い方
LGTMの取得
ドキュメント
LTGM取得APIは以下
GET /api/v2/items/:item_id/likes HTTP/1.1
実践
この記事のLGTMを取ります。Swift Combine初めの1歩 - Qiita
記事URLはhttps://qiita.com/Sho-heikun/items/cc28fc8a41b9932ecfb1
となっていて、末尾のIDがitem_id
です。
よってURLは以下になります。
https://qiita.com/api/v2/items/cc28fc8a41b9932ecfb1/likes
こちらをブラウザのURLに貼り付ければ、結果を見られます。
LGTMの押された時間のみ表示
レスポンスの定義は以下となっており、userのデータが含まれます。
HTTP/1.1 200
Content-Type: application/json
[
{
"created_at": "2000-01-01T00:00:00+00:00",
"user": {
"description": "Hello, world.",
"facebook_id": "qiita",
"followees_count": 100,
"followers_count": 200,
"github_login_name": "qiitan",
"id": "qiita",
"items_count": 300,
"linkedin_id": "qiita",
"location": "Tokyo, Japan",
"name": "Qiita キータ",
"organization": "Increments Inc",
"permanent_id": 1,
"profile_image_url": "https://s3-ap-northeast-1.amazonaws.com/qiita-image-store/0/88/ccf90b557a406157dbb9d2d7e543dae384dbb561/large.png?1575443439",
"team_only": false,
"twitter_screen_name": "qiita",
"website_url": "https://qiita.com"
}
}
]
今回はuserの情報は不要のため、jqでfilterします。
$ curl -s 'https://qiita.com/api/v2/items/cc28fc8a41b9932ecfb1/likes' | jq -r ".[].created_at"
2020-10-01T16:56:51+09:00
2020-10-01T02:33:46+09:00
2020-10-01T02:30:21+09:00
2020-10-01T00:43:09+09:00
2020-10-01T00:09:44+09:00
2020-09-30T12:54:58+09:00
2020-09-30T10:28:42+09:00
2020-09-30T09:15:20+09:00
2020-09-29T18:29:32+09:00
2020-09-29T17:59:22+09:00
2020-09-29T17:10:01+09:00
2020-09-29T16:10:12+09:00
2020-09-29T15:42:24+09:00
2020-09-29T14:03:53+09:00
2020-09-29T11:34:36+09:00
2020-09-29T10:42:48+09:00
2020-09-29T09:25:19+09:00
2020-09-28T23:52:41+09:00
2020-09-28T23:41:49+09:00
2020-09-28T23:35:23+09:00
無事取得できましたが、実はこちらは20件しか表示されていません。
per_pageの指定でより多くの件数を取得できます。
注意点として、per_pageは100が最大のため、100以上の場合はpageで調整します。
pageの初期値は1、pageの最大値は100に設定されています。また、per_pageの初期値は20、per_pageの最大値は100に設定されています。
[ページネーション]より(https://qiita.com/api/v2/docs#%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%8D%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3)
https://qiita.com/api/v2/items/cc28fc8a41b9932ecfb1/likes?per_page=100
View数の取得
ドキュメント
View数を取得できるのは記事取得API
GET /api/v2/items/:item_id HTTP/1.1
実践
先ほどのLGTMのurlを少し変えるだけです。
https://qiita.com/api/v2/items/cc28fc8a41b9932ecfb1
しかし、ユーザ認証をしていないとView数を表すpage_views_count
がnull
になります。
アクセストークン発行方法
アクセストークンを発行し認証ユーザーとしてAPIアクセスします。
ユーザの管理画面で発行が可能です。
一番下の「新しくトークンを発行する」を押してください。
- 発行されたトークンは再表示できないことに注意してください。
- トークンの削除は同じページで削除するボタンを押せば簡単にできます。
アクセストークン付きでAPI実施
curl -sH 'Authorization: Bearer 【アクセストークンを入れる】' https://qiita.com/api/v2/items/cc28fc8a41b9932ecfb1
記事のViewを取得する
こんな感じで記事のView数とLGTM数を取得できます。
curl -sH 'Authorization: Bearer 【アクセストークンを入れる】' https://qiita.com/api/v2/items/cc28fc8a41b9932ecfb1 | jq ".page_views_count, .likes_count"
自分の全ての記事のView数を取得する
最終的に以下のコードになりました。
curl -sH 'Authorization: Bearer 【アクセストークンを入れる】' \
"https://qiita.com//api/v2/authenticated_user/items?page=1&per_page=3" \
| jq -r ".[].id" \
| xargs -P 3 -I {id} curl -sH 'Authorization: Bearer 【アクセストークンを入れる】' https://qiita.com/api/v2/items/{id} \
| jq '"\(.title), VIEW: \(.page_views_count), LGTM: \(.likes_count)"'
自分の記事の取得APIのpage_views_count
はあるのですが、null
です。
なので、1つ1つのidを入力に先ほどの記事取得APIでView数を取得します。
上を叩くと以下のような結果になります。
"Swift enum型を復習する, VIEW: 115, LGTM: 3"
"Swift Combine初めの1歩, VIEW: 1198, LGTM: 28"
"iOSDC 2020 1日目に参加しました。, VIEW: 196, LGTM: 5"
まとめ
良いQiitaライフを!