2
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Qiita APIを使用し過去に自分が書いた記事一覧情報を取得する

Posted at

はじめに

本記事では、Qiita APIを使用して、自分が書いた記事の一覧を取得し、それをJSON形式で出力する方法についてまとめてます。

対象の方

  • Qiita Apiを叩いて自分が書いた記事一覧を取得したい方
  • Qiita Apiを触ってみたい方
  • タイトルが気になった方

本記事のゴール

以下のように自分が作成した記事のタイトル、作成日時、リンクの一覧をJSON形式で出力する。

qiita_articles.json
[
    {
        "title": "記事のタイトル",
        "created_at": "記事の作成日時",
        "url": "記事のリンク"
    },
    {
        "title": "記事のタイトル",
        "created_at": "記事の作成日時",
        "url": "記事のリンク"
    },
    {
        "title": "記事のタイトル",
        "created_at": "記事の作成日時",
        "url": "記事のリンク"
    },
]

前提

Qiita Apiのアクセストークンが取得できている事

環境

Python 3.12.2

環境変数の準備

Qiita Apiのアクセストークンを環境変数として管理したいので.envファイルを作成。

.env
QIITA_ACCESS_TOKEN="XXXXXX"

.envファイルはgit管理の対象外としておきます。

.gitignore
.env

モジュールのインストール

環境変数を読み込むためにpython-dotenvをインストールします。

pip install python-dotenv

ソース

以下のソースで自分の書いた記事のタイトル、記事の作成日、記事のURLの3点を取得し、JSONファイルに書き出します。詳細はソース内のコメントの通りです。

main.py
import os
import json
import requests
from dotenv import load_dotenv

# .envファイルの内容を読み込見込む
load_dotenv()

# Qiitaのアクセストークンを設定
def get_qiita_token():
    qiita_token = os.environ.get('QIITA_ACCESS_TOKEN')
    if not qiita_token:
        print('環境変数 QIITA_ACCESS_TOKEN が設定されていません。')
        return None
    return qiita_token

# Qiita記事の一覧を取得
def get_qiita_articles():
    qiita_token = get_qiita_token()
    headers = {
        'Authorization': f'Bearer {qiita_token}'
    }

    articles = []

    # 全ての記事を取得
    page = 1
    while True:
        url = f'https://qiita.com/api/v2/authenticated_user/items?page={page}&per_page=100'
        response = requests.get(url, headers=headers)

        if response.status_code == 200:
            page_articles = response.json()

            # 記事がない場合、取得を終了
            if not page_articles:
                break
            articles.extend(page_articles)
            page += 1
        else:
            print('取得に失敗しました。')
            return None

    article_details = [
        {
            'title': article['title'],
            'created_at': article['created_at'],
            'url': article['url']
        } for article in articles
    ]
    return article_details

# 本スクリプトを実行
if __name__ == "__main__":
    result = get_qiita_articles()
    if result:
        with open('qiita_articles.json', 'w', encoding='utf-8') as f:
            json.dump(result, f, indent=4, ensure_ascii=False)
        print('JSONファイルが生成されました: qiita_articles.json')

実行 & 結果確認

次のコマンドでスクリプトを実行し結果を確認します。

python main.py

スクリプトを実行するとqiita_articles.jsonファイルが生成されます。
JSONの中身は以下のようになっているところまで確認。

qiita_articles.json
[
    {
        "title": "記事のタイトル",
        "created_at": "記事の作成日時",
        "url": "記事のリンク"
    },
    {
        "title": "記事のタイトル",
        "created_at": "記事の作成日時",
        "url": "記事のリンク"
    },
    {
        "title": "記事のタイトル",
        "created_at": "記事の作成日時",
        "url": "記事のリンク"
    },
]

参考

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0