4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Twitch APIをPythonで利用する(備忘録)

Last updated at Posted at 2023-03-05

1.自己紹介

こんにちは。YoutubeやTwitchで配信しておりますアニメ、漫画、ゲーム、Vtuber大好きオタクのVtuber
久遠楽 (https://twitter.com/kuonraku0210) です。

今回はPythonを利用して配信活動をより便利にすることを目的として学習しようと思いました。
プログラミングに関しては初心者でQitaに投稿をしたことがないので拙い個所もあるかと思いますが暖かい目で見守ってください。

2.チュートリアル

実際にAPIを使ってツイッチ上のデータを取得したいと思います。
今回は指定したユーザーのIDを取得します。
ソースコード

from twitchAPI.twitch import Twitch
from twitchAPI.helper import first
import asyncio

async def twitch_example():
    #Twitch developersで取得したクライアントIDとシークレットキーを入力する
    twitch = await Twitch('app_id', 'app_secret')
    #自身のTwitchユーザー名を入力
    #ここは表示名ではないことに注意
    user = await first(twitch.get_users(logins='your_twitch_user'))
    #ユーザーidを取得する
    print('あなたのIDは:' + user.id)
    await twitch.close()

#実行
asyncio.run(twitch_example())

結果

あなたのIDは:788638159

3.APIを活用する

これでTwitchAPIとの連携が出来たので、次は任意ゲームで視聴者数が多い上位の人の名前と視聴者数を取得したいと思います。
ソースコード

from twitchAPI.twitch import Twitch
from twitchAPI.helper import first
import asyncio

async def twitch_example():
    #人数を制限する
    count = 0
    #Twitch developersで取得したクライアントIDとシークレットキーを入力する
    twitch = await Twitch('app_id', 'app_secret')
    #今回はvalorantを選択
    #game_idを変えれば好きなゲームにすることが出来る
    async for playerInf in twitch.get_streams(game_id='516575'):
      count+=1
      print(playerInf.user_name,playerInf.viewer_count)
    #上位5人を取得
    if count > 5:
      break
    await twitch.close()

# run this example
asyncio.run(twitch_example())

結果

A 14000
B 13000
C 12000
D 11000
E 10000

4.応用

画面上に出力するだけではデータの活用が出来ないのでこれをCSV出力し活用できるようにします。
ソースコード

from twitchAPI.twitch import Twitch
from twitchAPI.helper import first
import asyncio
import csv

async def twitch_example():
    count = 0
    #CSV用の変数
    csvInf = [['配信者名','視聴者数']]
    twitch = await Twitch('app_id', 'app_secret')

    async for playerInf in twitch.get_streams(game_id='516575'):
        csvInf.append([playerInf.user_name,playerInf.viewer_count])
        count+=1
        if count > 5:
            # CSVファイルにデータを作成
            f = open('output.csv', 'w', newline='')
            writer = csv.writer(f)
            writer.writerows(csvInf)
            f.close()
            break
        print('データの出力を行いました。')
    await twitch.close()

# run this example
asyncio.run(twitch_example())

結果

画面上
データの出力を行いました。
output.csv
配信者名,視聴者数
A,14000
B,13000
C,12000
D,11000
E,10000

4.最後に

まだまだプログラミングについては勉強中ですがやっぱり自分のしたい機能を完成させることが出来るととても達成感がありました。
配信者の一覧取得とかなかなかできずにふて寝したんですが次の日にあっさり解決しました・・・笑
拙い文章ですが最後までお付き合いいただきありがとうございます。
こうしたコードの方がいいなどがあればドシドシ送ってください。
また勉強して記事を作成したいと思います。

【宣伝】
APEXやヴァロラントなどのFPSをメインに毎日20時頃から配信をしているのでよければチャンネル登録していただければ嬉しいです。

4
5
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
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?