1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qiita APIのPythonラッパーを今さら改造してみました

Posted at

Qiita APIを使いたい

Qiitaに投稿した自分の記事のViewsを一覧で確認しようとしました。

(´-`).。oO(Qiitaはエンジニア向けだからきっとAPIがあるんだろうなぁ)

と思っていたらありました。


ただHTTPリクエストを投げたり受け取ったりが面倒で

(´-`).。oO(こういうのはPythonで使えるように誰かがしてくれているんだろうなぁ)

と思っていたらちゃんと作ってくれている方がいました。


驚きなのが作成が2014年!
Qiitaはここ最近のサービスだろうと侮っていました…新参者が失礼いたしました。

で、こちらでも十分なのですが毎回to_jsonするのが面倒なので改造してみました。

qiita_py_nn

本家の方はqiita_pyでqiita_py2にしようかと思ったのですが、勝手にやったら怒られそうなのでqiita_py_nnとしました。

インストール
!pip install qiita_py_nn

QiitaClientを継承したQiitaClient2を追加しています。こちらでクライアント作成して下さい。(アクセストークンの発行方法はこちら

クライアント作成
from qiita_py_nn.client2 import QiitaClient2

access_token = '*********************'

client = QiitaClient2(access_token=access_token)

利用例

メソッドの呼び出し方は同じです。

get_user(ユーザ情報取得)

get_user
user_name = "nekoniii3"

user = client.get_user(user_name)

print(user.name, user.description)

print(user)
出力結果
ネコにいさんチャンネル 普段はYouTubeでITやAI関連の解説動画を投稿しているので是非見てください!

QiitaUser(description='普段はYouTubeでITやAI関連の解説動画を投稿しているので是非見てください!', facebook_id='', followees_count=1, followers_count=6, github_login_name=None, id='nekoniii3', items_count=23, linkedin_id='', location='', name='ネコにいさんチャンネル', organization='', permanent_id=3549938, profile_image_url='https://s3-ap-northeast-1.amazonaws.com/qiita-image-store/0/3549938/3695381b0559938998b2c227a9140a9c8b8364c1/large.png?1693573415', team_only=False, twitter_screen_name='nekonii3info', website_url='https://www.youtube.com/@nekoniisan')

.to_json()は不要でuser.name、user.descriptionなどで情報を得ることができます。


get_authenticated_user_items(自身の記事を取得)

list_user_items
items = client.get_authenticated_user_items()

for item in items:
    print(item.title, item.url)
出力結果
Cloud Functionsが消えた? CloudRun関数へ https://qiita.com/nekoniii3/items/d443f49de6480a6309b2
はじめてのリバースプロキシ Cloud Run CORSエラー回避 https://qiita.com/nekoniii3/items/e6cda24f17590603a9b6
Vercelでsessionを使う(Python Flask) https://qiita.com/nekoniii3/items/369e02f767e7d1c5fa1e

表示していませんがitem.page_views_countで見られた回数を取得できます。


list_user_items(指定のユーザの記事を取得)

list_user_items
user_name = "sakasegawa"

items = client.list_user_items(user_name)

for item in items:
    print(item.title, item.url)
出力結果
最近のコーディングにおけるLLMの使い方QA https://qiita.com/sakasegawa/items/d36d922040031093cacd
MS謹製のanything to Markdownライブラリ: markitdownを試す&PRを出してみた件 https://qiita.com/sakasegawa/items/4b55deeea9c93145c4da
Gemini Multimodal APIで画面共有しながらAIと会話をする & Gemini 2.0 の OCR 性能を測ってみる! https://qiita.com/sakasegawa/items/b332367135b435b85cbb

get_item(記事の情報を取得)

get_item
item_id = "e8aaf7762110a8be9b84"

item = client.get_item(item_id)

print(item.title, item.url)

print(item)
出力結果
【React初心者向け】Vercel v0で生成したページ・アプリをローカルで動かす  https://qiita.com/nekoniii3/items/e8aaf7762110a8be9b84

QiitaArticle(body='(2024/12/10追記)もっと簡単な方法がありました!→[『mozさんのnoteです』](htt', coediting=False, comments_count=0, created_at='2024-09-14T21:51:13+09:00', group=None, id='e8aaf7762110a8be9b84', likes_count=18, organization_url_name=None, page_views_count=7709, private=False, reactions_count=0, rendered_body=<p data-sourcepos="1:1-1:146">(2024/12/10追記)もっと簡単な, slide=False, stocks_count=11, tags=[{'name': 'React', 'versions': []}, {'name': 'Next.js', 'versions': []}, {'name': 'Vercel', 'versions': []}, {'name': '生成AI', 'versions': []}, {'name': 'v0', 'versions': []}], team_membership=None, title='【React初心者向け】Vercel v0で生成したページ・アプリをローカルで動かす ', updated_at='2024-12-12T22:25:34+09:00', url='https://qiita.com/nekoniii3/items/e8aaf7762110a8be9b84', user={'description': '普段はYouTubeでITやAI関連の解説動画を投稿しているので是非見てください!', 'facebook_id': '', 'followees_count': 1, 'followers_count': 6, 'github_login_name': None, 'id': 'nekoniii3', 'items_count': 23, 'linkedin_id': '', 'location': '', 'name': 'ネコにいさんチャンネル', 'organization': '', 'permanent_id': 3549938, 'profile_image_url': 'https://s3-ap-northeast-1.amazonaws.com/qiita-image-store/0/3549938/3695381b0559938998b2c227a9140a9c8b8364c1/large.png?1693573415', 'team_only': False, 'twitter_screen_name': 'nekonii3info', 'website_url': 'https://www.youtube.com/@nekoniisan'})

list_item_stockers(指定の記事をストックしたユーザを取得)

list_item_stockers
item_id = "e8aaf7762110a8be9b84"

item_stockers = client.list_item_stockers(item_id)

for user in item_stockers:
    print(user.id, user.name)
出力結果
girimax
takobuta 拓 大内
nyantata 

おわりに

ただ全てのメソッドではなく、以下のみ対応をしております。

get_item
get_user
list_user_items
list_items
list_tag_items
list_user_stocks
get_authenticated_user_items
list_users
get_authenticated_user
list_user_followees
list_user_followers
list_item_stockers


使って見て思いましたがlist_user_itemsなどで取得件数が指定できたらなぁ…なんて思いました。
不具合や改善要望ありましたらご連絡ください。

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?