LoginSignup
1
1

More than 1 year has passed since last update.

【Python】TwitchAPIを使用して任意ゲームの視聴者数が多い上位5人のデータをCSV出力する

Last updated at Posted at 2023-03-06

1.初めに

こんにちは。YoutubeやTwitchで配信しておりますアニメ、漫画、ゲーム、Vtuber大好きオタクのVtuber
久遠楽 (https://twitter.com/kuonraku0210) です。
今回は前回作成した視聴者上位のデータを取得するスクリプトを更新して取得したデータをCSV出力してデータを分析できるようにしたいと思います。

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

2.実装

実際にコードを作成します。
基本的には前回のコードを一部修正という形です。

コード

dataCsv.pt
#ツイッチAPIを使用して取得したデータをCSV出力する
from twitchAPI.twitch import Twitch
from twitchAPI.helper import first
import asyncio
import csv

async def twitch_example():
    count = 0
    csvInf = []
    twitch = await Twitch('app_id', 'app_secret')
    async for tag in twitch.get_streams(game_id='516575',first=100):
        #配信者名、視聴者数を出力
        csvInf.append([tag.user_name,tag.viewer_count])
        count += 1
        if count > 5:
          #CSVファイルにデータを作成
          f = open('data.csv', 'w', newline='')
          writer = csv.writer(f)
          writer.writerows(csvInf)
          f.close()
          print('CSV出力を行いました。')
          break
    await twitch.close()

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

結果

dataCsv.pt
CSV出力を行いました。

作業用フォルダにdata.csvが出来たので確認してみます。

data.csv
A,14000
B,13000
C,12000
D,11000
E,10000

正しく出力されました。

3.応用

毎回実行するのは大変なので一定時間ごとに自動で実行するように改造したいと思います。
今回は10分間ごとに1時間実行するようにします

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

async def twitch_example():
    count = 0
    csvInf = [['視聴者数']]
    twitch = await Twitch('app_id', 'app_secret')
    setTime = 6
    for num in range(setTime):
        # 時刻設定用
        t_delta = datetime.timedelta(hours=9)
        JST = datetime.timezone(t_delta, 'JST')
        now = datetime.datetime.now(JST)
        d = now.strftime('%Y%m%d%H%M%S')
        async for tag in twitch.get_streams(game_id='516575',first=100):
            csvInf.append([tag.viewer_count])
            count += 1
            if count > 5:
                # CSVファイルにデータを作成
                f = open(d + '.csv', 'w', newline='')
                writer = csv.writer(f)
                writer.writerows(csvInf)
                f.close()
                count = 0
                csvInf = [['視聴者数']]
                print('CSVファイルを出力しました。')
                break
        if num == setTime - 1:
            break
        time.sleep(600)
    await twitch.close()


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

結果

AutorunCsv.pt
CSVファイルを出力しました
CSVファイルを出力しました
CSVファイルを出力しました
CSVファイルを出力しました
CSVファイルを出力しました
CSVファイルを出力しました

作業用フォルダに6つファイルが出来たと思います。
「出力時刻.csv」のうちどれか一つを確認してみます。

20YYMMDDhhmmss.csv
視聴者数
A,14000
B,13000
C,12000
D,11000
E,10000

実際に2023/03/05 21:45~22:35分までの
上位100人の視聴者数データを取得してみました。
image.png
22時に同接が増えていますね。有名な配信者さんが配信をつけたのでしょうか?
今回は視聴者数のみを取得していますのでそこまでのデータはわかりませんが今後データを増やしていけばいろいろと分析ができるようになると思います。

4.最後に

自動でデータを取得できるようになったので次はCSV出力し、取得したデータを自動でまとめて出力するようにしたいと思います。
また次回の記事を楽しみにしてください

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

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