This repository has been archived by the owner on Jan 25, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 48
ChatProcessorのカスタマイズ
taizan-hokuto edited this page Jul 24, 2020
·
19 revisions
ChatProcessorは、LiveChatオブジェクトから定型的なデータ(chat_components:後述)を受け取り、
任意の形式に加工したデータを返すオブジェクトです。
pytchatには組み込みのChatProcessorとして以下のクラスを同梱しています。
- DefaultProcessor : チャットデータへのアクセスを容易に行うための標準的なProcessor
- CompatibleProcessor : Youtube APIが返すJSONデータと互換性のあるProcessor
- JsonfileArchiver : チャットデータを1行ずつJSON形式でファイルに保存するProcessor
- SpeedCalculator : チャットの勢いを算出するProcessor
- SuperchatCalculator : スーパーチャットの金額を集計するProcessor
自作したChatProcessorは、LiveChatオブジェクトのコンストラクタのprocessorパラメータで指定することができます。
from pytchat import LiveChat
import MyProcessor
chat = LiveChat("video_id", processor = MyProcessor())
ChatProcessorを複数使用する場合は、タプルで指定します。
chat = LiveChat("video_id", processor = (Processor1(), Processor2()) )
data1, data2 = chat.get()
process関数は、chat_componentを要素とするリスト(chat_components)を引数にとります。
class MyProcessor:
def process(self, chat_components):
#...process chatdata...
chat_components の要素である chat_component は、video_id、timeout、chatdataをキーに持つ辞書です。
chat_component = {
"video_id" : "xxxxxxxxxxx", #動画ID
"timeout" : 7.5231, #チャットデータのタイムアウト時間
"chatdata" : {"addChatItemAction":{"item":{"liveChatTextMessageRenderer":[......}}} #Youtubeから取得したチャットデータ
}
chatdata は Youtubeから取得したjson形式のチャットデータをpython辞書形式に変換したものです。
finalize関数は、チャット加工の終了処理を行うためのインターフェイスです。
チャット取得が終了したとき(接続エラーもしくはCtrl+Cによる停止、他の例外発生による停止を含む)、LiveChat オブジェクトから呼び出されます。