Skip to content

potapello/videoalerts

Repository files navigation

Videoalerts

Многофункциональное, полностью настраиваемое приложение для отображения на стриме различных коротких видео, отправленных зрителями. Работает с Twitch чатом, поддерживаемые видео: Memealerts, Youtube и Tiktok.

Приложение состоит из сервера на Node.js и клиента, автоматически размещаемого в localhost. Пользователи отправляют видео через команду в чате, сервер считывает команду и получает видео. Клиент получает список видео с сервера, формирует их внешний вид и отображает их.

Также приложение имеет множество других функций: "СпамПушка", окно сообщений модераторов, возможность самостоятельной разметки оверлея, напоминания рандомными эффектами, возможность подключить TTS для модераторов, контроль сервером через команды в чате, контроль сервером через tester, настройка таймаутов для пользователей, возможность разрешить видео из любых источников.

Как начать

СНАЧАЛА ЧИТАЕМ ЭТО! Перейдите в список релизов Releases и скачайте последний (на данный момент есть билды только для Windows x64). Распакуйте папку videoalerts куда угодно и попробуйте запустить videoalerts.exe. Если сервер запустился, (будет сообщение в консоли Server running on...), то следующие 5 шага можно пропустить. Если сервер не запускается, то можете попробовать способ ниже.

  1. Скачайте репозиторий как ZIP и распакуйте куда удобно (не клонируйте репозиторий, если не планируете редактировать код).

  2. Запустите файл install.bat, он установит всё нужное автоматически, после установки он запустит сервер. После сервер лучше запускать через start.bat. Если сервер не запустился, пункты 3 и 4 ниже можете пропустить.

  3. Установите Node.js на свой ПК (не ниже 24.12.0 LTS).

  4. Перейдите в распакованную папку videoalerts, откройте в ней cmd (Shift+ПКМ, "Открыть окно команд") и выполните npm install.

  5. После этого сервер можно запускать через start.bat.

После установки сервера необходимо его настроить:

  1. Откройте файл "options.cfg", здесь вы можете настроить сервер (после любых изменений в "options.cfg" нужно перезапускать сервер).
  2. Найдите "channel" и укажите логин своего (или стримера) Twitch. Также вы можете настроить "moderators" и другие настройки (все имена нужно писать в нижнем регистре).
  3. Попробуйте запустить сервер.

Если сервер работает, нужно настроить клиент в OBS и протестировать:

  1. Откройте OBS, добавьте источник Browser на сцену с url = http://localhost:3000. Разместите источник в иерархии выше захвата игры или окна.
  2. Установите размер 1920x1080 (размер по умолчанию). Вы можете использовать другой размер, но сначала нужно указать его в "options.cfg".
  3. Добавьте фильтр Color Key для Browser, измените цвет на #00ff00, зелёный фон (если он был) должен исчезнуть.
  4. Откройте чат Twitch и используйте команду "!ma" для видеоалерта.
  5. Проверьте OBS, ваш видеоалерт должен появиться .
  6. Рекомендую направить аудио источника Browser на отдельный канал микшера и установить громкость около -10dB (чтобы слышать, включите режим у микшера "Только прослушивание", или "Прослушивание и вывод" если вы не выводите звук с рабочего стола).

Сначала запускаете Videoalerts сервер, а после OBS. В ином случае, после запуска сервера перейдите в OBS и обновите источник Browser, чтобы тот подключился к серверу!

Для отладки

Вы можете перейти по адресу http://localhost:3000/tester в своём браузере. На этой странице можно тестировать сервер: следить за клиентом, отправлять любые команды, управлять "СпамПушкой", видеть полный список видео на сервере, удалять видео (все или выборочно).

Если в браузере перейти по адресу http://localhost:3000/?dedug, то можно протестировать работу полотна, нажмите на любую свободную область, чтобы вызвать тестовый memealert. В этом режиме также отображается ID каждого видео и дополнительная информация в углу.

Если у вас возникли проблемы, создайте Issue на GitHub или свяжитесь со мной напрямую! (ТГ: @potapell0)

Как использовать команды

Команда !ma <url> [модификатор] (все пользователи)

<url> обязательный параметр. Это ссылка на видео для видеоалерта. По умолчанию можно отправлять следующие ссылки:

  • Memealerts cdns.memealerts.com (можно получить на сайте https://memealerts.com/, нажав ПКМ на открытом видео и скопировав прямую ссылку).
  • Youtube видео и shorts youtube.com, youtu.be.
  • Tiktok видео и наборы изображений tiktok.com.

Вы также можете разрешить отправку прямых ссылок на видео из любых источников (установите allowUnknownSourceVideos=true в options.cfg). Не рекомендуется для Twitch, пользователи могут легко отправить запретку!

[модификатор] необязательный параметр. Пользователи могут применять модификаторы к видеоалертам. По умолчанию включены, выключить можно в конфиге allowModifiers. Список модификаторов:

  • pos [x] [y] устанавливает позицию видеоалерта.
  • rotate видео будет вращаться.
  • faster, slower устанавливает скорость воспроизведения (x1.5 и x0.7).
  • speed [x] устанавливает пользовательскую скорость воспроизведения, диапазон -> [0.25; 3.0].
  • party бесконечное изменение цвета (hue-rotate) и тряска.
  • cursed видеоалерт будет чёрно-белым.
  • wide, tall делают видеоалерт широким/высоким.
  • invert инвертируют цвета видеоалерта.

Если пользователь не выбирает модификатор сам, сервер с некоторым шансом может выбрать случайный. Шанс настраивается переменной randomModifierChance в конфиге, можете выставить 0 чтобы выключить это.

Важно: модификаторы скорости не действуют на Youtube. На Tiktok-картинки не действуют ВСЕ модификаторы и эффекты!

Команда !mod <действие> [аргументы] (только для модераторов)

<действие> обязательный параметр. Действие, которое нужно выполнить:

  • rema удаляет все видеоалерты с сервера.
  • pb [x] [y] устанавливает значения события "СпамПушки" count\total в X\Y.
  • serv включает/отключает команду !ma для всех пользователей.
  • timeout [s] высталяет таймаут s секунд для всех запросов пользователей. Команда timeout off убирает этот таймаут. Настройка действует до следующего перезапуска сервера.

Команда !msg <режим> [текст] (только для модераторов)

Показывает сообщения на экране, в углу сверху слева (по умолчанию). Это может использоваться модераторами для таких сообщений, как: Стример ушёл покушать :), Смотрим "Kill la Kill", 3 серия и т.п.

<режим> обязательный параметр. Может быть:

  • fast [текст] сообщение появится/изменится на некоторое время, до 30 секунд, в зависимости от длины.
  • set [текст] показывает/изменяет сообщение, само не пропадёт.
  • hide прячет все типы сообщений принудительно.

Элементы и их настройка

СпамПушка

СпамПушка - это событие, которое начинается, когда заполняется счётчик видеоалертов, отправленных пользователями. Во время него автоматически отправляется много рандомных видеоалертов из последних 25-ти отправленных ранее пользователями. На отправленные событием видеоалерты может автоматически примениться случайный модификатор с шансом ~50-60%. Событие длится определённое время, после счётчик обнуляется.

Событие поддаётся настройке в файле конфигурации:

  • vasgEnabled включить событие.
  • vasgLabelText изменить название события.
  • vasgTotalCount сколько нужно отправить видеоалертов, чтобы событие началось.
  • vasgEnableSaves включает сохранение прогресса счётчика.
  • vasgSpammingTime как долго длится событие, в секундах.
  • vasgSpammingIntensivity настроить интенсивность спама (от 0 до 3, по умолчанию 1).

Рандомные эффекты

Когда сервер бездействует определённое время (никто не отправляет видеоалерты), сервер покажет такое уведомление (пример): "На следующий Videoalert будет применён эффект Фулскрин на 30 секунд!". Ещё есть эффекты Спам (отправляет есколко копий) и Продление (видеоалерт будет отображаться дольше). Это сделано для того, чтобы напоминать пользователям о возможности отправлять видеоалерты. Тикток-картинки не работают с эффектами. Можно отправлять видеоалерты с модификаторами, они "стакаются" с эффектами.

Событие поддаётся настройке:

  • allowRandomEffects включить событие.
  • randomEffectWait сколько именно сервер должен бездействовать, в минутах.
  • efct[имя] вкл/выкл отдельных эффектов.
  • efct[имя][настройка] настройки отдельных эффектов.

Разметка элементов оверлея

На клиенте сервера помимо видеоалертов также отображается и оверлей. Он содержит такие элементы: Прогрессбар СпамПушки, Окно сообщений модераторов, Уведомления (система, события), Уведомления о событиях неактива. Все эти функции по умолчанию включены, но это можно настроить:

  • vasgEnabled включает СпамПушку.
  • messageBoxEnabled включает окно сообщений модераторов.
  • disableSystemNotifications выключает системные уведомления.
  • disableEventNotifications выключает уведомления о событиях.
  • allowRandomEffects включает случайные эффекты (событие неактива).

Также можно изменить отдельно позиции всех этих элементов. Расположение работает через привязку к одному из 4 углов Anchor и указанию отступа от углов Offset.

  • markMessageBox** - окно сообщений модераторов.
  • markSpamGoal** - прогрессбар СпамПушки.
  • markNotifications** - уведомления системы, событий.
  • markRandomEffect** - уведомления о событиях неактива.

Подключение TTS для модераторов

Вы можете подключить бесплатный TTS API, это позволит модераторам отправлять вам озвученные сообщения. Нужно получить ключ для этого API, для этого нужно сделать следующее:

  • Зарегистрироваться на RapidAPI.
  • Перейти сюда TTS API, и подписаться на бесплатный план (для этого НЕ НУЖЕН платёжный аккаунт).
  • Вот здесь Playground найдите переменную x-rapidapi-key.
  • Скопируйте её значение в конфиг, apiTTSkey (это должна быть примерно такая строка: abcdefg123456789abcdefgh123456abcdfg12345678asdfgh).
  • Вы также можете выбрать другой голос (apiTTSvoice в конфиге), список всех доступных голосов тут TTS API, листайте вниз.

Если всё сделано правильно, то модераторы смогут пользоваться командой !tts текст... для озвучивания сообщений на стриме!

Прочие настройки

  • sourceAllow** вкл/выкл поддерживаемые источники видео для алертов.
  • requestVideoTimeout** настройка таймаутов для запросов пользователей.
  • tiktokDenyAdVideos выключает рекламные тиктоки.
  • randomVideoMax** рандомизация некоторых переменных в заданном диапазоне.
  • localNetworkAddress включает распространение сервера по локальной сети. Это позволит подключиться по адресу, который отобразится в консоли, с любого устройства в одной локальной сети с сервером (экспериментально).
  • videoDisableShadows выключает тени у видеоалертов.

About

Custom videoalerts for Twitch streams. Supports cdns.memealerts.com, youtube videos & shorts, tiktok videos & images. Works on Node.js server.

Topics

Resources

License

Stars

Watchers

Forks

Contributors