LoginSignup
10
4

More than 3 years have passed since last update.

Qiita APIで自分の記事のLGTMとViewを取得する。

Last updated at Posted at 2020-10-03

概要

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_countnullになります。

アクセストークン発行方法

アクセストークンを発行し認証ユーザーとしてAPIアクセスします。
ユーザの管理画面で発行が可能です。

一番下の「新しくトークンを発行する」を押してください。

スクリーンショット 2020-10-03 10.10.08.png

  • 発行されたトークンは再表示できないことに注意してください。
  • トークンの削除は同じページで削除するボタンを押せば簡単にできます。

アクセストークン付きで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)"'

自分の記事の取得APIpage_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ライフを!

参考記事

10
4
0

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
10
4