Титры под твой трек: 117 BPM, такт ≈ 2,05 с. Фон рисуется прямо в браузере, видео генерировать не нужно. Он сам выбирает время суток по Москве и сезон по дате. Карточки и списки собираются только из того, что было в эфире.
демо-данные: ники и цифры выдуманы для примераЧасти и удары найдены по громкости, басу и смене гармонии. Карточки встают на сильные доли, смена части совпадает со сменой кадра фона.
| Часть | Время | Такты | Что в музыке | Что на экране |
|---|
Один пейзаж на весь трек: вид с обрыва на долину, потом холм, потом побережье. Время суток берётся по Москве в момент запуска титров: до 10:00 рассвет, с 10:00 до 17:00 день, после 17:00 закат. Сезон по дате: с декабря по февраль зима, с марта по май весна, с июня по август лето, с сентября по ноябрь осень.
| Кадр | Время | Что происходит |
|---|
Карточка появляется, только если за эфир есть нужное значение больше нуля. Нет подарочных подписок, значит такой карточки нет, а остальные занимают её время. Что не поместилось в карточки, всё равно попадёт в «Роли эфира» в бегущих титрах. Порядок в таблице задаёт приоритет.
| Роль на экране | Откуда берётся | Что означает |
|---|
Ровно с 1:04 слева открывается окно, справа идут титры. Клипы играют по очереди, каждый свою длину. Если вместе они длиннее окна (около 36 секунд), длинные подрезаются поровну, короткие идут целиком. Сломанный клип пропускается. Музыка играет вполсилы (CONFIG.musicVolume = 0,5: трек записан очень громко), а пока идёт клип, приглушается ещё сильнее, до 12% (CONFIG.duck), и потом возвращается. Звук самих клипов усиливается в 1,6 раза (CONFIG.clipBoost) с мягким ограничителем, чтобы не трещал. В превью клипы это заглушки без звука, но музыка под ними тише так же, как будет с настоящими. В конце список уходит вверх, а надпись «И все-все-все» остаётся на экране. Вторая строка сама подстраивается под время суток: «спасибо за это утро», «за этот день» или «за этот вечер». Первую строку и вторую можно заменить своим текстом: CONFIG.endTitle и CONFIG.endLine ('auto' оставляет выбор по времени суток).
Страница берёт JSON по адресу из CONFIG.dataUrl или из параметра ?data=. Все поля необязательны. Пустые и нулевые значения страница пропускает сама. В списке participants у каждого: messages (сообщений в чате), interactions (всё, что человек сделал в эфире, сообщения тоже входят) и, если бэкенд умеет, active_pct (в скольких процентах эфира человек был на связи, например доля пятиминуток, где он что-то делал). Всё, кроме имени, необязательно. Порядок в титрах по взаимодействиям. У трёх главных ролей под ником три строки: сообщения, взаимодействия и «на связи N% эфира». Если active_pct есть не у всех троих, третьей строкой идёт доля всех сообщений чата (считается сама по totals.messages). У остальных «в ролях» две строки. Что именно входит во взаимодействия, на экране не пишется. У клипа duration в секундах необязателен: без него страница сама измерит длину, когда клип загрузится. Список donors (те, кто задонатил в эфире: name и, если известна, amount в рублях) выводится в бегущих титрах блоком «Поддержали донатом»; анонимные донаты показываются числом из totals.donations_anonymous. Если страница открыта как локальный файл, у API должен быть включён CORS.