Twitch 上のほとんどの VOD は遅かれ早かれ消滅します。有効期限が切れたか、明示的に削除されたためです。したがって、時間内に VOD の視聴を終了しなかった場合、コンテンツは失われます。動画はダウンロードできますが、チャットはどうなるのでしょうか? 「Twitch VOD Offline Viewer」はこの問題を解決します。ビデオとチャットをダウンロードするだけで、通常の VOD と同じように、オフラインでもいつでも再生できます¹。
¹ チャット内のエモートは、画像をダウンロードできる場合にのみ表示されます。したがって、エモートを表示するには、インターネット接続が必要です。
Node.js ランタイム
推奨: TwitchDownloader を使用して目的のビデオをダウンロードします。「VOD ダウンロード」タブを参照してください。ただし、VOD をダウンロードするための他のツールでも使用できます。
ブラウザのタグでサポートされているコーデック。
推奨: 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 が必要なため、専用のストリーマー エモートを手動で提供する必要があります。認証されたら、リクエストを作成し、エンドポイントの応答を
として/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
ホワイトリストに登録するか、拡張機能を一時的に無効にします。