Pythonを使ってQiitaをいじる実験です。親記事: https://qiita.com/_____/items/d2d52823ea8ef763e3a7
トークンの取得、チェック
Qiitaが提供している開発者用ダッシュボード https://qiita.com/settings/applications にWebブラウザでログインして、read_qiita
, write_qiita
の権限をもつトークンを発行してもらう。トークンは、このタイミングでしか表示されないのできちんとどこかに保存する。
以下のようなプログラムを発行して、トークンを使って自分の情報が取得できることを確認する。
import urllib, urllib.parse, urllib.request
import json
token = 'XXXXXXX'
myname = '_____'
opener = urllib.request.build_opener()
opener.addheaders = [('Authorization', 'Bearer {}'.format(token)),]
urllib.request.install_opener(opener)
def api_authcheck():
url = "https://qiita.com/api/v2/authenticated_user"
data = (json.load(urllib.request.urlopen(url)))
assert (data['id'] == myname)
if __name__ == '__main__':
api_authcheck()
全投稿記事のダンプ
Qiitaやめたいときは自分の投稿をダンプしたいところ。自分の投稿記事が100を超えるとページネーションが必要( https://qiita.com/api/v2/docs#get-apiv2authenticated_useritems )だが、大多数のユーザには以下のプログラムで十分だろう。
def dump_allposts():
url = "https://qiita.com/api/v2/authenticated_user/items?per_page=100"
data = json.load(urllib.request.urlopen(url))
ret = [(x['id'], x['title'], x['body']) for x in data]
return ret
if __name__ == '__main__':
posts = dump_allposts()
for p in posts:
print(p[0],p[1])
これでいつでもQiitaをやめられるね!
最近の投稿の統計を監視
新規投稿したら、閲覧数やLikeなどが気になるところ。こんなプログラムを書いて、slack連携してみては?
def print_mypoststats():
url = "https://qiita.com/api/v2/authenticated_user/items?per_page=10"
data = json.load(urllib.request.urlopen(url))
posts = [(x['page_views_count'], x['likes_count'], x['comments_count'], x['title']) for x in data]
for post in posts:
#print ("{}views,{}likes,{}comments {}".format(*post))
print ("{1:3d} Likes,{2:2d}comments {3}".format(*post))
if __name__ == '__main__':
print_mypoststats()
閲覧数はAPI仕様では取得できるようなんだけど、実際にはNone
が入っていて取得できない。Qiita運営に要望出してもいいかもしれないなあ。