1.初めに
こんにちは。YoutubeやTwitchで配信しておりますアニメ、漫画、ゲーム、Vtuber大好きオタクのVtuber
久遠楽 (https://twitter.com/kuonraku0210) です。
今回は前回作成した視聴者上位のデータを取得するスクリプトを更新して取得したデータをCSV出力してデータを分析できるようにしたいと思います。
前回
Twitch APIをPythonで利用する(備忘録)
2.実装
実際にコードを作成します。
基本的には前回のコードを一部修正という形です。
コード
#ツイッチ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())
結果
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())
結果
CSVファイルを出力しました
CSVファイルを出力しました
CSVファイルを出力しました
CSVファイルを出力しました
CSVファイルを出力しました
CSVファイルを出力しました
作業用フォルダに6つファイルが出来たと思います。
「出力時刻.csv」のうちどれか一つを確認してみます。
視聴者数
A,14000
B,13000
C,12000
D,11000
E,10000
実際に2023/03/05 21:45~22:35分までの
上位100人の視聴者数データを取得してみました。
22時に同接が増えていますね。有名な配信者さんが配信をつけたのでしょうか?
今回は視聴者数のみを取得していますのでそこまでのデータはわかりませんが今後データを増やしていけばいろいろと分析ができるようになると思います。
4.最後に
自動でデータを取得できるようになったので次はCSV出力し、取得したデータを自動でまとめて出力するようにしたいと思います。
また次回の記事を楽しみにしてください
【宣伝】
APEXやヴァロラントなどのFPSをメインに毎日20時頃から配信をしているのでよければチャンネル登録していただければ嬉しいです。