Twitch 上のほとんどの VOD は遅かれ早かれ消滅します。有効期限が切れたか、明示的に削除されたためです。したがって、時間内に VOD の視聴を終了しなかった場合、コンテンツは失われます。動画はダウンロードできますが、チャットはどうなるのでしょうか? 「Twitch VOD Offline Viewer」はこの問題を解決します。ビデオとチャットをダウンロードするだけで、通常の VOD と同じように、オフラインでもいつでも再生できます¹。

¹ チャット内のエモートは、画像をダウンロードできる場合にのみ表示されます。したがって、エモートを表示するには、インターネット接続が必要です。
Node.js ランタイム
推奨: TwitchDownloader を使用して目的のビデオをダウンロードします。「VOD ダウンロード」タブを参照してください。ただし、VOD をダウンロードするための他のツールでも使用できます。
ブラウザの<video>タグでサポートされているコーデック。
推奨: TwitchDownloader を使用して、対応するチャットをダウンロードします。「チャットのダウンロード」タブを参照してください。 「テキスト」と「相対」を選択します。
他の方法でチャット ファイルを生成する場合、予期される形式は次のとおりです。
[0:00:01] Alice: hi everyone HeyGuys [0:00:01] John: PogChamp [0:00:03] Bob: hey @Alice [0:00:07] Alice: nice to see you, Bob
角括弧内のタイムスタンプ (時間は 1 桁または 2 桁)
空間
ユーザー名、その後にコロンが続く
空間
メッセージ
改行
ダウンロードしたビデオ ファイルを/stream/video.mp4に移動します。 (ダミーファイルを置き換えます。)
ダウンロードしたチャット ファイルを/stream/chat.txtに移動します。 (ダミーファイルを置き換えます。)
node chat.mjs実行して、ブラウザーでチャット メッセージを提供する Node.js HTTP サーバーを起動します。
お気に入りのブラウザでindex.html開きます。
いつでも一時停止してください。再生位置は記憶され、自動的に復元されます。
watch.bat使用して再開します (手順 4 と 5 を自動的に実行します)。
チャンネル固有のエモートを表示するには、チャンネル ID を指定する必要があります。この情報を取得するには、Twitch Channel ID Finder を使用するなど、さまざまな方法があります。
これらのエモートは、チャット サーバーが起動するたびに自動的にダウンロードされます。サーバーを実行する前に、 chat.mjsソース ファイルの先頭にあるCHANNEL_ID変数を必ず調整してください。
グローバル Twitch エモートはデフォルトで提供されます。ただし、Twitch API へのアクセスには OAuth が必要なため、専用のストリーマー エモートを手動で提供する必要があります。認証されたら、リクエストを作成し、エンドポイントの応答を<CHANNEL_ID>.jsonとして/emotes/に保存します。サーバーを実行する前に、 chat.mjsソース ファイルの先頭にあるCHANNEL_ID変数を必ず調整してください。
Twitch 開発者コンソールからアプリを作成します。これにより、「クライアント ID」と「クライアント シークレット」が生成されます。
client_idとclient_secretを使用してアクセス トークンをリクエストします。
curl -L 'https://id.twitch.tv/oauth2/token'
-H 'Content-Type: application/x-www-form-urlencoded'
-d 'grant_type=client_credentials'
-d 'client_id={{client_id}}'
-d 'client_secret={{client_secret}}'応答からのaccess_tokenの値を保存します。
チャネルの ID を取得します。
curl -L 'https://api.twitch.tv/helix/users?login={{channel_name}}'
-H 'Authorization: Bearer {{access_token}}'
-H 'Client-Id: {{client_id}}'応答からのdata[0].id ( channel_id ) の値を保存します。
チャンネルのエモートを取得します。
curl -L 'https://api.twitch.tv/helix/chat/emotes?broadcaster_id={{channel_id}}'
-H 'Authorization: Bearer {{access_token}}'
-H 'Client-Id: {{client_id}}'応答をファイルに保存します。
チャットのユーザー名を気にしない場合は、 index.htmlソース ファイルのCHAT_USERNAMES変数をfalseに変更します。
CHAT_USERNAMES = true | CHAT_USERNAMES = false |
|---|---|
![]() | ![]() |
ライブ ストリーム中に短時間切断されると、チャット ログが同期されなくなります。このような問題を解決するには、 index.htmlソース ファイル内のCHAT_OFFSET変数を調整します。変更を適用するには、Web ページを更新します。
uBlock Origin などの広告ブロック拡張機能をブラウザで使用している場合、チャット サーバーの通信がブロックされる可能性があります。これは、 localhostからの接続がブロックされているために発生します。 localhost:8787ホワイトリストに登録するか、拡張機能を一時的に無効にします。