📝 はじめに
こんにちは、piyovateです!
第2回までで使用機材の選定や仕様整理を行いました。
第3回となる今回は、SNS APIを使って実際にデータを取得し、コンソール上に出力するところまでをテストしました。
現在は Windows 11 上の開発用PCで動作を確認しており、Raspberry Pi 5 上での動作は次回以降に移行予定です。
⚡ 使用API
- Qiita:Organizationメンバーの投稿から「いいね数」を集計
- X (旧Twitter):ユーザーのフォロワー数を取得
💡 テスト環境の構築
1. Python環境の準備
必要なライブラリを一括インストール
pip install requests selenium webdriver-manager
2. WebDriverの準備(Qiita用)
Google Chrome と同期した ChromeDriver が webdriver-manager
経由で自動取得され、自動的に利用されます。
🔧 テスト用コードの概要と全文
ここでは、QiitaとXのAPIを使ってどのようにデータを取得し、表示するかを実際のコードとともに説明します。
✅ Qiita API: qiita_Organization.py
📘 解説
- Qiitaの組織ページから、Seleniumを使って投稿者のユーザー名を抽出します。
- 各ユーザーの投稿に対してAPI経由で「いいね数(likes_count)」を取得し、合計を算出しています。
- API制限対策として、1秒ごとのインターバルを設けています。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import requests
import time
import re
ORGANIZATION_NAME = "technosphere" # Qiita組織名
QIITA_TOKEN = "YOUR_QIITA_TOKEN" # Qiitaトークン
qiita_organization_url = f"https://qiita.com/organizations/{ORGANIZATION_NAME}"
def get_organization_members():
service = Service(ChromeDriverManager().install())
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(service=service, options=options)
driver.get(qiita_organization_url)
time.sleep(5)
article_links = driver.find_elements(By.CSS_SELECTOR, "a[href*='/items/']")
authors = set()
for link in article_links:
href = link.get_attribute('href')
match = re.match(r"https://qiita.com/([^/]+)/items/", href)
if match:
authors.add(match.group(1))
driver.quit()
return authors
def get_likes(username):
headers = {"Authorization": f"Bearer {QIITA_TOKEN}"}
page = 1
per_page = 100
total_likes = 0
while True:
url = f"https://qiita.com/api/v2/users/{username}/items?page={page}&per_page={per_page}"
response = requests.get(url, headers=headers)
if response.status_code != 200:
print(f"{username} さんのQiita APIエラー: {response.status_code}")
print("詳細:", response.text)
break
items = response.json()
if not isinstance(items, list) or not items:
break
for item in items:
total_likes += item.get('likes_count', 0)
page += 1
return total_likes
members = get_organization_members()
total_like_count = 0
for member in members:
likes = get_likes(member)
print(f"{member} さんのQiita合計いいね数: {likes}件")
total_like_count += likes
time.sleep(1)
print(f"Qiita合計いいね数: {total_like_count}件")
✅ X API: x_count.py
📘 解説
- 任意のX(旧Twitter)ユーザー名から、そのユーザーIDを取得します。
- ユーザーIDを元に、公開プロフィール情報をAPI経由で取得します。
- そこから「フォロワー数(followers_count)」を抽出して表示します。
import requests
USERNAME = "technosphere_co" # 任意のXユーザー名
CONFIG = {
"BEARER_TOKEN": "YOUR_BEARER_TOKEN", # XのBearerトークンを入力
"BASE_URL": "https://api.twitter.com/2",
"HEADERS": lambda token: {
"Authorization": f"Bearer {token}"
}
}
def get_follower_count(username):
token = CONFIG["BEARER_TOKEN"]
headers = CONFIG["HEADERS"](token)
user_url = f'{CONFIG["BASE_URL"]}/users/by/username/{username}'
resp_user = requests.get(user_url, headers=headers)
if resp_user.status_code != 200:
print("ユーザー取得エラー:", resp_user.status_code, resp_user.text)
return
user_id = resp_user.json()["data"]["id"]
detail_url = f'{CONFIG["BASE_URL"]}/users/{user_id}?user.fields=public_metrics'
resp_detail = requests.get(detail_url, headers=headers)
if resp_detail.status_code != 200:
print("詳細情報取得エラー:", resp_detail.status_code, resp_detail.text)
return
data = resp_detail.json()["data"]
followers = data["public_metrics"]["followers_count"]
print(f"@{username} のXフォロワー数は {followers} 人です。")
get_follower_count(USERNAME)
🔍 実行結果
@technosphere_co のXフォロワー数は 8 人です。
koyama-technoさんのQiita合計いいね数: 2
PiyovateさんのQiita合計いいね数: 19
Qiita合計いいね数: 21
🧠 注意点
- X APIは Bearer Token が必要です
- Qiita APIはパーソナルアクセストークンが必要です
- Seleniumを使う場合、Google ChromeとChromeDriverのバージョンが一致している必要があります
🖌️ 次回の予定
- Raspberry Pi上でのAPIコード実行
- PyQt6を用いた可視化用GUIの作成
- バックエンドとの部分的な結合(取得値のリアルタイム表示)
次回もお楽しみに!
📝 補足:FacebookとInstagramについて
FacebookおよびInstagramのAPIについては現在キー取得中のため、
別途 番外編として解説予定です。
これらのSNSはAPIの制限やポリシーが比較的厳しく、ビジネスアカウントの登録や審査が必要になるケースもあるため、
タイミングを見て丁寧にご紹介します。
🔗 シリーズリンク
- 次回:coming soon
- 前回:🌟 Raspberry PiでSNSフォロワーカウンターシステムを作る【第2回:買うべきもの決定編】
- 第1回:🌟 Raspberry PiでSNSフォロワーカウンターシステムを作る【第1回:仕様決定会議編】
📚 シリーズ全記事はこちら:🌟 Raspberry PiでSNSフォロワーカウンターシステムを作る