Exemple de code pour obtenir une liste d'articles publiés par les utilisateurs dans Python 3 et Qiita API v2.
Dans ce post, j'appelle l'API à chaque fois pour télécharger le JSON, mais en réalité il vaut mieux le sauvegarder localement et s'y référer en raison de sa gentillesse envers le serveur (et du nombre de fois limité).
import json
import urllib.request
from pprint import pp
def get_qiita_user_url(username):
if not isinstance(username, str):
raise TypeError()
return f"https://qiita.com/api/v2/users/{username}"
def fetch_qiita_user(username):
url = get_qiita_user_url(username)
with urllib.request.urlopen(url) as f:
return json.load(f)
def get_qiita_useritems_url(username, page, per_page):
if not isinstance(username, str):
raise TypeError()
if not isinstance(page, int) or not isinstance(per_page, int):
raise TypeError()
if not (1 <= page <= 100) or not (1 <= per_page <= 100):
raise ValueError()
return f"https://qiita.com/api/v2/users/{username}/items?page={page}&per_page={per_page}"
def fetch_qiita_useritems(username, page, per_page):
url = get_qiita_useritems_url(username, page, per_page)
with urllib.request.urlopen(url) as f:
return json.load(f)
def fetch_qiita_userallitems(username):
userinfo = fetch_qiita_user(username)
itemcount = userinfo["items_count"]
useritems = []
for page in range(1, 100):
fetched = (page - 1) * 100
if fetched > itemcount:
break
useritems.extend(fetch_qiita_useritems(username, page, 100))
page += 1
return useritems
#Spécifiez votre nom d'utilisateur pour le moment
username = "katabamisan"
useritems = fetch_qiita_userallitems(username)
titles = [entry["title"] for entry in useritems]
pp(titles)
Selon la documentation de l'API Qiita v2, l'API renvoie une réponse contenant un objet qui représente une erreur en cas d'échec. D'un autre côté, ʻurllib.request` de Python 3 lève une exception car le code d'état à ce moment est une erreur. Ce message ne traite pas spécifiquement les objets d'erreur, en supposant que l'appelant de la fonction gère l'exception.
Recommended Posts