概要
Qiita APIをPythonからリクエストして記事の作成・読込・更新・削除をするソースを記載
実行した環境
OS : CentOS7
Version : Python3.6
API : QiitaAPI v2
必要なPythonライブラリ
requestsのみ。以下でインストール。
pip install requests
事前準備
Qiitaのアクセストークン取得する必要あり
Qiitaアクセストークン取得の手順
1.右上のアイコンー>設定ー>アプリケーションー>新しくトークンを発行するを選択
2.read_qiitaとwrite_qiitaにチェックを入れる
3.発行後に表示されるアクセストークンを保存する
(※注意:アクセストークンの再表示不可)
CRUDの各ソースコード
※取得したアクセストークンをxxxxxxxxxxxxxxxxxxxxxxxの部分に記載する
実行方法
各ソースに対してpython ***.py
と実行する
1.投稿作成
import requests
import json
url = 'https://qiita.com/api/v2/items'
token = 'xxxxxxxxxxxxxxxxxxxxxxx'
headers = {
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/json'
}
title = 'test Title'
body = 'test Text'
tag = [{'name': 'test'}]
post_data = {
'body': body,
'title': title,
'tags': tag,
}
r = requests.post(url, headers=headers, data=json.dumps(post_data))
print(r)
print(r.text)
2.投稿取得
import requests
import json
url = 'https://qiita.com/api/v2/items?page=1&per_page=100&query=created%3A%3E2018-02-26'
token = 'xxxxxxxxxxxxxxxxxxxxxxx'
headers = {
'Authorization': 'Bearer ' + token,
}
r = requests.get(url, headers=headers)
ans = json.loads(r.text)
maxArrayLength = len(ans)
for j in range(0,maxArrayLength):
print( str(ans[j]["id"]) + ":" + str(ans[j]["user"]["organization"]))
※投稿は1ページ当たり(per_page)100件が限界。101件目を見たい場合、page=2にする
※queryで抽出条件を記載することが可能
3.投稿更新(POSTではなくPATCH)
import requests
import json
qid = 'yyyyyyyyyyyy'
url = 'https://qiita.com/api/v2/items/{}'.format(qid)
token = 'xxxxxxxxxxxxxxxxxxxxxxx'
headers = {
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/json'
}
title = 'update Title'
body = 'update Text'
tag = [{'name': 'test'}]
post_data = {
'body': body,
'title': title,
'tags': tag,
}
r = requests.patch(url, headers=headers, data=json.dumps(post_data))
print(r)
print(r.text)
※yyyyyyyyyyyyは、更新したい記事ID(URLの最後に記載されている英数字)を入力
4.投稿削除
import requests
import json
qid = 'yyyyyyyyyyyy'
url = 'https://qiita.com/api/v2/items/{}'.format(qid)
token = 'xxxxxxxxxxxxxxxxxxxxxxx'
headers = {
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/json'
}
r = requests.delete(url, headers=headers)
print(r)
print(r.text)
※yyyyyyyyyyyyは、削除したい記事ID(URLの最後に記載されている英数字)を入力
(参考)QiitaAPIの公式ドキュメント
※Python3の文字コード問題
CentOSで実行すると以下のメッセージが表示されることがある
UnicodeEncodeError: 'ascii' codec can't encode character
・対応方法
まず以下のコマンドで文字コードを確認
echo $LANG
Cと返ってくる場合、言語設定をja_JP.utf8に修正する必要がある
localectl set-locale LANG=ja_JP.utf8
上記コマンドを実行して言語設定をja_JP.utf8に変更して一度再起動
※参考:https://qiita.com/toshihikoyanase/items/47407551d8f3d4e8c39a