今回は、PythonのコードからQiita APIを経由して編集を行うソースを解説します。
内容は以下の通りです。
必要なライブラリ
必須となるライブラリはrequestsのみ。
つぎのコマンドでrequestsをインストールしましょう。
pip install requests
ベアラートークンを取得する
Qiita APIを使用するためには、まずアクセストークンを取得する必要があります。以下は、Qiita APIのベアラートークンを取得する方法です。
- Qiitaにログインします。
- [設定] > [アプリケーション]を選択します。
- [新しいトークンを発行する]をクリックします。
- トークンに名前を付け、必要な権限を設定します。例えば、投稿の読み取りや書き込みのための権限を設定できます。
- [トークンを発行する]をクリックします。
トークンが生成されるので、そのトークンをコピーして安全な場所に保管します。 以上の手順で、Qiita APIのベアラートークンを取得することができます。取得したベアラートークンを使用して、Qiita APIを使用することができます。
ベアラートークンはだいたい次ぐらいの長さです。
5a92018081a8bb606ec0cb199da20543c432v343
ソースコード
まずソースコードはこれ
import requests import json import datetime import pytz BASE_URL = "https://qiita.com/api/v2/items" def putQiitaArticle(title, markdown, path="article", id=""): token = "ベアラートークンを発行してください。" headers = {"Authorization": f"Bearer {token}"} item = { "title": title, "id": id, "tags": [ { "name": "qiita" }, { "name": "test" } ], "private": False, "coediting": False, "tweet": False, "body": markdown } # idがなければ、新規で記事を投稿 if item["id"] == "": res = requests.post(BASE_URL, headers=headers, json=item) return res else: now = datetime.datetime.now(pytz.timezone('Asia/Tokyo')) item["title"] += now.strftime("【%Y/%m/%d %H時更新】") item_id = item["id"] res = requests.patch(BASE_URL + f"/{item_id}", headers=headers, json=item) return res
呼び出す部分のコードはこんな感じ
if __name__ == "__main__": res = putQiitaArticle("この記事はQiitaから投稿しています", "#test " ,"article", "c2acb400a27ab78c22b6").json() print(res)
コード解説
このコードは、Qiitaという技術系のブログサイトに記事を投稿または更新する関数putQiitaArticleを定義しています。
requests, json, datetime, pytzの4つのライブラリを使用しています。requestsライブラリは、HTTPリクエストを送信してレスポンスを受信するために使用されます。jsonライブラリは、JSON形式の文字列とPythonのオブジェクトとの相互変換を行うために使用されます。datetimeライブラリは、日時の操作を行うために使用されます。pytzライブラリは、タイムゾーンの操作を行うために使用されます。
この関数には、以下の引数があります。
この関数では、記事のタイトル、本文、タグ、公開範囲、共同編集、ツイートの可否などの情報を辞書型で定義しています。この辞書型は、JSON形式に変換してQiitaのAPIに送信されます。また、ベアラートークンをヘッダーに含めて認証を行います。
idが空文字列である場合は、新しい記事を投稿し、それ以外の場合は記事を更新します。記事を更新する場合は、タイトルに更新日時を付与しています。タイムゾーンは日本時間に設定されています。
記事の投稿や更新に成功した場合は、レスポンスが返されます。