前書き
以前、「Qiita に投稿した記事の VIEW数 、いいねの数 、ストックされた数 を CSV に出力する方法(「Python + Qiita API v2」で作成)」で、Python と Qiita API v2 を使用して、Qiita に投稿した自分の記事の VIEW数 、いいねの数 、ストックされた数 を CSV に出力する方法を紹介しました。しかし、記事が 100件 を超えると取得できない作りになっていたので、今回は記事が 100件 を超えても取得できるように修正した内容を紹介します。
実行した環境
- Windows 10(64bit)
- Python 3.6.4 :: Anaconda, Inc.
100件超え対応後のプログラム
Python のプロラム
Python から Qiita API v2 を使用して、タイトル、 VIEW数 、いいねの数 、ストック数を取得し、標準出力にCSV形式で一覧表示させるプログラム(100件超え対応版)です。
下記プログラムソースのxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
の部分には、自分のアクセストークンで置き換えてください。
アクセストークンは Qiitaページの「設定」-「アプリケーション」-「個人用アクセストークン」から取得可能です。
# -*- coding: utf-8 -*-
"""
Created on Thu Nov 17 23:12:00 2022
@author: yasushi
"""
import requests
import json
page = 1
per_page = 100
total_views_cnt = 0
total_likes_cnt = 0
total_stocks_cnt = 0
print("作成日,タイトル,URL,ビューカウント,いいねカウント,ストックカウント")
while True:
url = 'https://qiita.com/api/v2/authenticated_user/items'
headers = {"content-type" : "application/json", "Authorization" : "Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}
params = { "page" : str(page), "per_page" : str(per_page)}
res = requests.get(url, headers=headers, params=params)
list = res.json()
if len(list) == 0:
break
for item in list:
item_id = item['id']
title = item['title']
likes_cnt = item['likes_count']
create_date = item['created_at']
item_url = item['url']
total_likes_cnt += likes_cnt
url = 'https://qiita.com/api/v2/items/' + item_id
res = requests.get(url, headers=headers)
json = res.json()
views_cnt = json['page_views_count']
total_views_cnt += views_cnt
url = 'https://qiita.com/api/v2/items/' + item_id + '/stockers'
res = requests.get(url, headers=headers)
users = res.json()
stocks_cnt = len(users)
total_stocks_cnt += stocks_cnt
print(create_date + ", " + title + ", " + item_url + ", " + str(views_cnt) + ", " + str(likes_cnt) + ", " + str(stocks_cnt))
page += 1
print("合計, , , " + str(total_views_cnt) + ", " + str(total_likes_cnt) + ", " + str(total_stocks_cnt))
前回との違いは、while
文でループさせ、page
をインクリメントさせているところです。list
が 0件 だった場合、while
文を抜けるようにしています。
起動用のbat
インストールされている Python で、先程作成したgetview.py
を呼び出し、結果を日付時刻付きのファイル(viewcount_yyyyMMddHHmmss
)にリダイレクトしています。
「C:\DK\Anaconda3\envs\tf_env
」の部分は、Python をインストールしたディレクトリに置き換えてください。
@echo off
set PY_PATH=C:\DK\Anaconda3\envs\tf_env
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
set time2=%time: =0%
set hh=%time2:~0,2%
set mn=%time2:~3,2%
set ss=%time2:~6,2%
set filename=%yyyy%%mm%%dd%-%hh%%mn%%ss%
%PY_PATH%\python getview.py > viewcount_%filename%.csv
pause
実行
上記で作成したgetview.bat
を実行(ダブルクリック)すると、viewcount_yyyyMMdd_HHmmss.csv
が作成されます。
参考
Qiita API v2ドキュメント
Qiita に投稿した記事の VIEW数 、いいねの数 、ストックされた数 を CSV に出力する方法(「Python + Qiita API v2」で作成)
以上