見出し画像

twitch api を pythonで触ってみた②[v3.5]

前回:


前回は、TwitchAPI の get_streams 関数を用いて、ライブ中のストリーマーの情報を抽出しました。

今回は、ユーザのフォロワーを抽出していこうと思います。
get_users_follows 関数を使うのですが詳細は以下のURLを参照。

抽出用のコードは以下になります。
前回は出力がAsyncGeneratorだったので、そのまま async for に突っ込めたのですが、今回は AsyncIterTwitchObject というものらしく、一度 await してから async for にかけないとエラーが出ます。

# -*- coding: utf-8 -*-

import configparser
from typing import AsyncGenerator
from twitchAPI.twitch import Twitch
from twitchAPI.helper import first
import asyncio
import pandas as pd
import datetime, os

# JST
JST = datetime.timezone(datetime.timedelta(hours=9), 'JST')

# twitchAPIの設定ファイルの読み込み
inifile = configparser.ConfigParser()
inifile.read('config.ini')
clientID = inifile.get('TwitchAPI', 'clientID')
secretID = inifile.get('TwitchAPI', 'secretID')

async def twitch_get():
    # twitchAPIの読み込み
    twitch = await Twitch(clientID, secretID)
    # follows
    users_list = []
    follows = await twitch.get_users_follows(to_id='50988750')
    i = 0
    async for follow in follows:
        i += 1
        print(i, '>>', follow.to_dict())
        if i > 120:
            break
    await twitch.close()  

asyncio.run(twitch_get())

データを引っ張ってきているところは以下の部分になります。
>  twitch.get_users_follows(to_id='50988750')
to_id には user_id が入ります。
意味合いとしては、to_id の user_id を持つユーザをフォローしているユーザの抽出になります。
to_id を from_id にすると、from_id の user_id を持つユーザがフォローしているユーザの抽出になります。 

また、余談ですが、await したものから直接 to_dict() で引っ張ってくることもできます。ただ、一度の出力の上限が100件らしく、それ以上は引っ張ってこれない仕様になっております。(after変数にcursor を入れれば取ってこれるらしいが、引っ張て来れる情報にcursorの情報がないので難しそうです。httpの場合は、以下の感じで cursor の情報が付与されるらしい。)

{
   "total": 12345,
   "data":
   [
      {
         "from_id": "171003792",
         "from_login": "iiisutha067iii",
         "from_name": "IIIsutha067III",
         "to_id": "23161357",
         "to_name": "LIRIK",
         "followed_at": "2017-08-22T22:55:24Z"
      },
      {
         "from_id": "113627897",
         "from_login": "birdman616",
         "from_name": "Birdman616",
         "to_id": "23161357",
         "to_name": "LIRIK",
         "followed_at": "2017-08-22T22:55:04Z"
      },
      ...
   ],
   "pagination":{
     "cursor": "eyJiIjpudWxsLCJhIjoiMTUwMzQ0MTc3NjQyNDQyMjAwMCJ9"
   }
}

ちなみに出力はこんな感じです。

TwitchAPIに関しては、一般ユーザから引っ張ってこれる面白そうな情報は他にあまりなさそうなので、次回以降はこの情報を使って、ユーザ間のフォロー関係やactive数の推移なんかを可視化できたらなと思っています。


この記事が気に入ったらサポートをしてみませんか?