Skip to content
This repository has been archived by the owner on Jan 25, 2022. It is now read-only.

PytchatCore_

taizan-hokuto edited this page Nov 16, 2020 · 11 revisions

PytchatCore はチャットを閲覧するためのオブジェクトです。

<指定した動画がライブの場合>

get()を呼ぶと、最新のチャットデータを取得します。

一度get()を呼んだあと、続けてget()を呼んだ場合、次のチャットデータを自動的に読み込みます。

ライブ配信に対してget()を呼び出す間隔の推奨値は3~5秒です。

それより短ければよりリアルタイム性は高まりますが、あまりに短いとデータが空であるパターンが多くなるため効率は低くなります。

一方取得間隔が長すぎるとデータの取りこぼしを生じる場合があります。


<指定した動画がアーカイブ済みの場合>

最初にget()を呼ぶとアーカイブされたチャットデータの最初のチャットデータを読み込みます。
次にget()を呼ぶことで順次チャットデータを読み込みます。

seektime引数に時刻(秒)を指定することで、指定した時刻以降のチャットデータを順次読み込みます

使用例

PytchatCore オブジェクトは、pytchatをインポートして、create()関数を呼ぶことで取得できます。

import pytchat
import time
# PytchatCoreオブジェクトの取得
livechat = pytchat.create(video_id = "Zvp1pJpie4I")

while livechat.is_alive():
    # チャットデータの取得
    chatdata = livechat.get()
    for c in chatdata.items:
        print(f"{c.datetime} {c.author.name} {c.message} {c.amountString}")
        '''
        JSON文字列で取得:
        print(c.json())
        '''
    time.sleep(5)

※ items/json() は DefaultProcessor固有の機能です。

コンストラクタで指定可能なパラメータ一覧

パラメータ名 必須 備考 規定値
video_id str * 動画ID または動画IDを含むURL -
processor ChatProcessor チャットデータを加工するオブジェクト DefaultProcessor
interruptable bool Ctrl+Cでチャット取得を停止するか否か。pytchatを組み込んだアプリで不具合が生じる場合は、このパラメータをFalseに指定してください。 True
seektime int チャットリプレイの開始時間(秒)。アーカイブチャットのリプレイ時のみ有効。負の数を指定した場合、配信開始前に流れていたチャット(一部)を取得します。 0
force_replay bool 指定した動画IDがライブ状態であっても、強制的にアーカイブされたチャットを取得します。 False
hold_exception bool 内部で発生した例外を保持するかどうかを設定します。規定値はTrueです。Trueの場合、発生した例外を保持し、is_alive()関数がFalseになった後raise_for_status()関数を呼ぶことで、保持した例外を発生させることができます。Falseにした場合、例外を捕捉するため、get()の処理部分をtry...except節で囲む必要があります。 True
topchat_only bool Trueの場合、上位チャットのみを取得します。(設定しない場合、またはFalseの場合「すべてのチャット」を取得) False
logger logging.Logger ログ出力を取得する場合、任意のLoggerオブジェクトを設定します。 logging.NullHandler

get()

ChatProcessorによって加工されたチャットデータを取得します。

is_alive()

説明 戻り値の型
ライブ動画⇒配信が終わるまでTrue。
注:チャット取得開始時にすでに配信が終わっている場合はリプレイモードに切り替わります。
bool
アーカイブ動画⇒チャットデータが取得できなくなるまでTrue

is_replay()

説明 戻り値の型
リプレイモードで動作している場合True(※この関数は、get()の呼び出し以降でなければ正しい値を返しません) bool

terminate()

説明
pytchatを終了します。

raise_for_status()

内部に保持した例外を発生させます。 hold_exceptions引数がTrueの時のみ有効です。