LiveChatAsync オブジェクト
asyncioでチャットを取得します。
※指定した動画がアーカイブ済みの場合、自動的にリプレイモードになります。
from pytchat import LiveChatAsync
from concurrent.futures import CancelledError
import asyncio
async def main():
livechat = LiveChatAsync("Zvp1pJpie4I", callback = func)
while livechat.is_alive():
await asyncio.sleep(3)
#チャットの取得と並行で行いたい処理をここに書きます。
#callbackに指定した関数は、バックグラウンドで自動的かつ定期的に呼び出されます。
#引数に、ChatProcessorによって加工されたチャットデータが渡されます。
async def func(chatdata):
for c in chatdata.items:
print(f"{c.datetime} [{c.author.name}]-{c.message} {c.amountString}")
await chatdata.tick_async()
if __name__=='__main__':
try:
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
except CancelledError:
pass
パラメータ名 |
型 |
必須 |
備考 |
規定値 |
video_id |
str |
* |
動画ID、または動画IDを含むURL (https://www.youtube.com/watch?v=xxx ) |
- |
processor |
ChatProcessor |
|
チャットを加工するオブジェクト |
DefaultProcessor |
buffer |
buffer |
|
チャットデータを蓄積するバッファ |
Buffer(maxsize=20) |
interruptable |
bool |
|
Ctrl+Cでチャット取得を停止するか否か |
True |
callback |
func |
|
一定間隔でチャットデータを渡す関数 |
None |
done_callback |
func |
|
チャット取得終了時に呼び出す関数 |
None |
direct_mode |
bool |
|
Trueの場合、bufferを使用しません。このパラメータをTrueにする場合、callbackにも任意の関数を指定する必要があります。 |
False |
seektime |
int |
|
チャットリプレイの開始時間(秒)。アーカイブチャットのリプレイ時のみ有効。負の数を指定した場合、配信開始前に流れていたチャット(一部)を取得します(アーカイブされているデータのみ)。 |
0 |
force_replay |
bool |
|
指定した動画IDがライブ状態であっても、強制的にアーカイブされたチャットを取得します。 |
False |
logger |
logging.Logger |
|
ログ出力を取得する場合、任意のLoggerオブジェクトを設定します。 |
logging.NullHandler |
説明 |
戻り値 |
チャットデータをbufferから取得します。 |
ChatProcessorによって加工されたチャットデータ |
※callbackパラメータに関数を指定している場合、get()は使用できません(IllegalFunctionCall例外が発生します)
説明 |
戻り値の型 |
ライブ動画⇒配信が終わるまでTrue。 注:チャット取得開始時にすでに配信が終わっている場合はリプレイモードに切り替わります。 |
bool |
アーカイブ動画⇒チャットデータが取得できなくなるまでTrue |
説明 |
戻り値の型 |
リプレイモードで動作している場合True(※この関数は、get()の呼び出し以降、またはcallbackの呼び出し以降でなければ正しい結果を返しません) |
bool |
説明 |
バックグラウンドのチャット取得を一時停止します(※callbackを指定しているときのみ有効) |
説明 |
バックグラウンドのチャット取得を再開します(※callbackを指定しているときのみ有効) |
is_alive()がfalseになった後でこの関数を呼び出すと、終了原因に応じた例外を発生させます。
発生する例外:
- アーカイブの終端に到達したことによりチャットストリームが終了したとき。
- チャットデータが存在しない、またはライブ配信終了によりチャットデータを取得できなくなったとき。