Витрина¶
Витрина — приложение зрителя: список каналов, программа передач и плеер. Абонент открывает её на телевизоре или в браузере, входит под своей учётной записью и смотрит те каналы, которые дают ему подписки.
Раздаёт витрину сам сервер Catena — тем же адресом и портом, что и консоль оператора. По умолчанию она открывается на пути /tv/, а в зрительской поставке её обычно переносят на корень установки, уводя консоль под отдельный путь. Раскладка задаётся при установке.
Одно и то же приложение работает тремя способами:
- в браузере — обычная веб-страница;
- на телевизорах LG — пакет webOS;
- на телевизорах Samsung — пакет Tizen.
Что должно быть настроено¶
Витрина не показывает ничего сама по себе: она показывает то, что оператор завёл в консоли. Цепочка обязательна целиком, каждое звено:
- Стрим — вещание, которое реально идёт (Создание и управление).
- Канал — телеканал со ссылкой на этот стрим и номером (Каналы).
- Пакет — набор каналов, в который входит этот канал (Пакеты).
- Подписчик с учётной записью кабинета и подпиской на пакет (Подписчики).
Дальше — по желанию, но именно эти две вещи отличают витрину от простого списка ссылок:
- Архив (DVR) на стриме — без него зритель смотрит только прямой эфир, а любая прошедшая передача не открывается (Архив (DVR)).
- Программа передач — без неё сетка пуста, и смотреть можно только текущий эфир (Программа передач).
Канал, у которого нет стрима, в витрине виден, но не играет: плеер отвечает This channel has no broadcast configured.
Вход зрителя¶
Войти можно двумя способами, и оба ведут к одному результату — устройство получает свой токен. Отзыв одного устройства не трогает остальные.
Логином и паролем. Оператор выдаёт абоненту логин и пароль в карточке подписчика, блок Учётная запись кабинета. Абонент вводит их прямо на экране входа. На компьютере и телефоне это основной путь.
Кодом с экрана. Телевизор показывает шестизначный код и приглашение Enter this code in your account on a phone or a computer. Абонент открывает витрину на телефоне или компьютере, входит там паролем — это и есть его кабинет — и вводит код в блоке Sign in a TV. Телевизор входит сам в течение нескольких секунд, и пароль на пульте набирать не приходится.

Переключатель под формой (Sign in with a code instead и Sign in with a login and password) переводит экран между двумя способами. На телевизоре первым показывается код, в браузере — форма пароля.
Код живёт 10 минут и гаснет после первого использования. Пять неудачных попыток входа подряд запирают логин на минуту — счётчик сгорает сам, разблокировать учётную запись вручную не нужно.
Если абонент не может войти сам, код за него подтверждает оператор: карточка подписчика, блок Привязка устройства. Это путь поддержки — штатный вход замыкает сам абонент.
Экраны и пульт¶
Витрина стартует сразу в плеер: канал занимает весь экран, поверх ненадолго всплывает подсказка с номером, названием и текущей передачей.

Управление одинаково на пульте и на клавиатуре:
- Вверх и вниз — предыдущий и следующий канал.
- Влево и вправо — предыдущая и следующая передача текущего канала: так открывается догон из архива.
- OK или пробел — применить выбор, который висит в подсказке.
- Назад — отменить непринятое переключение, а в сетке — закрыть её.
- Жёлтая кнопка пульта — открыть и закрыть программу передач. На клавиатуре ей соответствуют F7 и ~.
Переключение каналов работает с задержкой на раздумье: стрелками зритель листает список, в подсказке видно, куда он попадёт, и канал переключается по OK либо сам через пару секунд. Промотать десяток каналов подряд можно, не заставляя плеер открывать каждый.
Программа передач¶
Сетку открывает жёлтая кнопка. Слева — каналы, справа — их передачи; стрелки ходят по сетке, OK открывает выбранную передачу.

Что показывает сетка, целиком определяется загруженным расписанием: без источника программы колонка передач пуста, и это не поломка витрины, а отсутствие данных — см. Программу передач.
Передачи, которых нет в архиве, витрина открыть не предлагает. Правило простое: передача доступна, если её интервал пересекается с окном архива канала. Причина отказа называется словами:
- This channel is not recorded, so only live is available — у стрима нет архива.
- This programme is no longer in the archive — передача уже вышла за глубину записи.
- This channel has no broadcast configured — у канала не назначен стрим.
Границы архива приходят вместе со списком каналов, поэтому решение принимается до нажатия — зритель не упирается в чёрный экран.
Кабинет и устройства¶
Кабинет — та же витрина, открытая на телефоне или компьютере: раздел Your account. В нём три вещи.
- Sign in a TV — поле для шестизначного кода с экрана телевизора.
- Your devices — список устройств, вошедших под этой учётной записью; текущее помечено (this device). Кнопка Revoke рядом со строкой отключает одно устройство: оно перестаёт показывать сразу.
- Sign out everywhere — отзыв всех устройств разом. Ссылка появляется, когда устройств больше одного, и нужна ровно тогда, когда зритель не знает, какая строка списка чужая.

Обычный Sign out гасит токен на сервере и только потом забывает его локально: иначе в списке подписчика остался бы живой токен, который уже никак не назвать.
Смена пароля устройства не отключает: пароль защищает вход, а не уже выданные токены. Чтобы отрезать чужое устройство, его отзывают — из кабинета или из консоли оператора.
Те же устройства оператор видит в карточке подписчика, блок Устройства, и может отозвать их оттуда — см. Подписчиков.
Сколько экранов одновременно¶
Число одновременных просмотров — свойство пакета, поле Экранов одновременно. У подписчика действует наибольший потолок среди его пакетов, а не их сумма; пустое поле означает один экран.
Зритель, упёршийся в потолок, видит на экране All your screens are busy: someone is watching on another device. Освободить экран можно, закрыв просмотр на другом устройстве, — или оператор поднимает потолок в пакете, и это действует немедленно, без повторного входа и без обрыва идущих просмотров.
Прочие отказы плеер тоже называет словами:
- This device is no longer signed in — sign in again — устройство отозвали.
- Nothing to play here: the archive does not reach this moment — запрошенного интервала в архиве нет.
Плейлист для стороннего плеера¶
Абоненту, который смотрит не в витрине, а в своём плеере, Catena отдаёт список каналов в M3U и программу передач в XMLTV — см. Плейлист и XMLTV.
Сценарии¶
Подключить нового абонента¶
- Заведите подписчика и задайте ему логин и пароль в блоке Учётная запись кабинета.
- Подпишите его на пакет — блок Подписки.
- Проверьте блок Доступные каналы: то, что там перечислено, зритель и увидит.
- Передайте абоненту адрес витрины, логин и пароль.
Зритель поменял телевизор¶
- На новом телевизоре абонент открывает витрину и видит код.
- Он вводит код в своём кабинете на телефоне — телевизор входит сам.
- Старый телевизор он отключает в списке Your devices кнопкой Revoke, иначе тот продолжает занимать экран.
Абонент жалуется, что ничего не играет¶
Смотрите, что именно написано на экране:
- All your screens are busy — потолок экранов; проверьте список устройств и поле Экранов одновременно в пакете.
- This device is no longer signed in — устройство отозвано, абонент входит заново.
- This channel has no broadcast configured — у канала не назначен стрим.
- Пустой список каналов — у подписчика нет ни одной подписки, а бесплатных пакетов в установке нет.
Если канал играет, но не открывается ни одна прошедшая передача, дело не в витрине: у стрима нет архива либо запись не достаёт до этого момента.
Что дальше¶
- Программа передач — откуда витрина берёт сетку.
- Плейлист и XMLTV — тот же каталог для стороннего плеера.
- Подписчики — учётные записи, привязка устройств и их отзыв.
- Пакеты — подписки и потолок экранов.