Большинство VOD на Twitch рано или поздно исчезают. Либо потому, что срок их доступности истек, либо потому, что они были явно удалены. Так что, если вы не закончили просмотр 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
Временная метка в квадратных скобках (час может состоять из одной или двух цифр).
Космос
Имя пользователя, за которым следует двоеточие
Космос
Сообщение
Новая строка
Переместите загруженный видеофайл в /stream/video.mp4
. (Замените фиктивный файл.)
Переместите загруженный файл чата в /stream/chat.txt
. (Замените фиктивный файл.)
Запустите node chat.mjs
, чтобы запустить HTTP-сервер Node.js, который будет обслуживать сообщения чата в вашем браузере.
Откройте index.html
в своем любимом браузере.
Пауза в любое время. Позиция воспроизведения запоминается и восстанавливается автоматически.
Используйте watch.bat
для возобновления (выполните шаги 4 и 5 за вас).
Чтобы увидеть эмоции, специфичные для канала, вам необходимо указать идентификатор канала. Есть много способов получить эту информацию, например, с помощью Twitch Channel ID Finder.
Эти эмоции будут загружаться автоматически при каждом запуске сервера чата. Перед запуском сервера обязательно настройте переменную CHANNEL_ID
вверху исходного файла chat.mjs
.
Глобальные эмоции Twitch предоставляются по умолчанию. Однако эксклюзивные смайлы для стримеров необходимо предоставлять вручную, поскольку для доступа к Twitch API требуется OAuth. После аутентификации сделайте запрос и сохраните ответ конечной точки как
в /emotes/
. Перед запуском сервера обязательно настройте переменную CHANNEL_ID
вверху исходного файла chat.mjs
.
Создайте приложение через консоль разработчика Twitch. Это даст «Идентификатор клиента» и «Секрет клиента».
Запросите токен доступа, используя 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
из ответа.
Получите идентификатор канала:
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}}'
Сохраните ответ в файл.
Если вас не волнуют имена пользователей в чате, измените переменную CHAT_USERNAMES
в исходном файле index.html
на false
.
CHAT_USERNAMES = true | CHAT_USERNAMES = false |
---|---|
Кратковременные отключения во время прямой трансляции приводят к рассинхронизации журнала чата. Чтобы устранить такую проблему, вы можете настроить переменную CHAT_OFFSET
в исходном файле index.html
. Обновите веб-страницу, чтобы применить изменения.
Если вы используете расширение для блокировки рекламы в своем браузере, например uBlock Origin, связь с сервером чата может быть заблокирована. Это происходит из-за блокировки соединений с localhost
. Либо внесите в белый список localhost:8787
, либо временно отключите расширение.