概要
Qiitaで記事を書いたことある人なら知ってると思いますが、自分が書いた記事は閲覧数を見ることができます。
ただ、これは各々の記事の画面でしか見れないため、すべての記事の閲覧数を一覧で見るようなことはできません。
そこで、Qiita APIを使って取得したものを加工して一覧化します。
ググってみると既に同じようなことをやっている人はたくさんいましたが、PowerShellでやっている人が見当たらなかったのでWindows使いの人がサクッと試せるようにPowerShell版を残しておきます。
事前準備(トークン発行)
この画面から「個人用アクセストークン」を新しく発行します。すでに発行してある場合は不要です。
スコープはread_qiita
だけで十分です。
コード
Headerにトークンを付けてInvoke-RestMethod
を https://qiita.com/api/v2/authenticated_user/items に対して実行すると自分が書いた記事の一覧を取得できます。ただし、以下の注意点があります。
- デフォルトでは20個しか取得できない
-
per_page
またはpage
をパラメータに指定することで対応する
-
- 上記URLでは、閲覧数(
page_views_count
)がnull
で取得されてしまう- 最初にIDの一覧だけ取得し、次に各記事の情報を取得することで対応する
- 閲覧数以外の情報(LGTM数など)は上記URLからでも取得できる
下記コードではper_page
を適当に100にしていますが、100個以上記事を書いている人は適宜書き換えてください。
大きすぎる値を指定するとエラーになってしまうため、より汎用的なコードにしたい場合はpage
パラメータを使って0が返ってくるまでループさせてすべてのIDを取得するといいと思います。
$TOKEN = "ここに上記で発行したトークンを記載する"
# per_pageを指定しないと20個しか取れない(最大数が決まっているようで、1000とか指定するとエラーになる)
$ids = (Invoke-RestMethod -Headers @{Authorization = "Bearer ${TOKEN}"} https://qiita.com/api/v2/authenticated_user/items?per_page=100).id
$articles = $ids | %{
Invoke-RestMethod -Headers @{Authorization = "Bearer ${TOKEN}"} "https://qiita.com/api/v2/items/${_}"
}
# 見たいプロパティでソート(private公開になっているものは除外する)
$articles | ?{!$_.private} | Sort-Object -Descending -Property page_views_count | ft created_at, page_views_count, likes_count, title
出力結果
created_at page_views_count likes_count title
---------- ---------------- ----------- -----
2017-07-23T16:16:05+09:00 30931 17 PowershellでExcelの表をオブジェクト化して取得
2016-08-15T01:52:48+09:00 30805 15 [Powershell]自作オブジェクト作る練習
2018-03-18T22:30:34+09:00 14854 31 PowerShellで簡単にExcel触れるようにする方法を考えてみた
2018-03-22T07:32:44+09:00 10788 11 PowerShellで簡単な画像処理する
2018-01-07T07:48:28+09:00 6390 11 PowershellとRLoginで大量サーバ管理
2018-11-18T19:22:46+09:00 5704 18 FlaskでAPI作って素のJavaScriptでAPI実行する
以下略
PowerShellで調べて辿り着く人が多いんですかね。
ちなみにlikes_count
でソートするとこうなりました。コンテナのログの記事がなんかLGTMの割合高いですね。
created_at page_views_count likes_count title
---------- ---------------- ----------- -----
2018-03-18T22:30:34+09:00 14854 31 PowerShellで簡単にExcel触れるようにする方法を考えてみた
2019-07-29T02:58:20+09:00 3827 29 DockerコンテナのロギングにGrafana+Lokiを試してみた
2018-11-18T19:22:46+09:00 5704 18 FlaskでAPI作って素のJavaScriptでAPI実行する
2017-07-23T16:16:05+09:00 30931 17 PowershellでExcelの表をオブジェクト化して取得
以下略