Импорт EPG/XMLTV¶
База EPG наполняется из источников трёх видов:
EIT из принимаемых потоков — настройка «Извлекать EIT в базу данных EPG» у потока (SPTS и MPTS, Модификация потока);
EIT с DVB-адаптеров — настройка «Экспорт EPG» адаптера (DVB-приёмник);
внешние источники XMLTV — по ссылке на веб-ресурс или из локального файла.
EIT, извлечённый из потоков и с DVB-адаптеров, накапливается в общем встроенном источнике «поток-импорт»; каждый внешний источник XMLTV ведёт собственную базу. Идентификатор канала уникален в пределах своего источника; названия каналов и тексты событий хранятся на нескольких языках.
Настройка источников¶
Источники настраиваются на экране «Настройки EPG» (Настройки EPG). На вкладке «Импорт» — общие параметры: «Включить импорт», «Хранить историю, дней» (глубина хранения прошедших событий) и «Автоочистка осиротевших каналов» (удаление каналов, у которых не осталось событий).
Внешние источники XMLTV добавляются на вкладке «Источники»: имя,
«URL / путь источника», «Включено», «Интервал обновления, с» (по умолчанию
раз в час), «Кодировка контента» (автоопределение или принудительно GZip),
учётные данные и Cookies для закрытых веб-источников, «Сохранять
загруженную копию» для диагностики. Источник — адрес http или https
либо абсолютный путь к файлу на узле; Cookies передаются в заголовке
Cookie только хосту источника. После изменения включённого источника
(например, его адреса) данные загружаются сразу, не дожидаясь интервала
обновления.
С версии 2.0.2.418 у источника есть таймаут загрузки — параметр fetch-timeout
источника в файле настроек или через API (от 0 до 3600 секунд, 0 — прежние 30 секунд);
с версии 2.0.2.419 его задаёт поле «Тайм-аут загрузки, с» (Настройки EPG).
Это предел ожидания
каждой отправки и каждого приёма данных: первого байта ответа и любой паузы в
передаче. Он нужен медленным источникам, которые собирают файл по запросу.
Соединение устанавливается не дольше 30 секунд, вся передача длится не дольше
30 минут (или двух таймаутов, если это больше). Истёкший таймаут — неудачная
загрузка: он записывается в журнал и показывается в ошибке источника.
Очередь загрузок и повторы¶
С версии 2.0.2.418 внешние источники загружаются, разбираются и применяются по
одному: пока идёт один, остальные ждут своей очереди, и на вкладке «Состояние
источников» такой источник показан ожидающим, с номером позиции в очереди
(Queued: position N); с версии 2.0.2.419 он отмечен ещё и синей точкой.
Повторные «Обновить сейчас» для ожидающего источника сливаются в одну загрузку.
После запуска службы источники начинают загрузку не одновременно, а по очереди с
интервалом: первый через 10 секунд, каждый следующий на секунду позже. Поэтому
пик памяти при перезапуске узла с несколькими большими лентами остаётся на уровне
одной ленты, и после загрузки память возвращается системе.
Неудачная загрузка повторяется не через полный интервал обновления, а через 2, 5 и 15 минут, затем каждые 30 минут (но не реже интервала обновления); время следующей попытки показано в поле «Следующее обновление». С версии 2.0.2.419 это поле на время неудач называется «Следующая попытка», а рядом показано поле «Неудачных загрузок подряд» (База данных EPG). Счёт неудач сбрасывают успешная загрузка, правка источника и перезапуск службы. Пустой ответ источника с этой версии тоже считается ошибкой.
База данных EPG¶
Накопленная программа передач просматривается на экране «База данных EPG» (База данных EPG). На вкладке «База данных» выбирается источник, доступны поиск каналов и фильтр по набору каналов; расписание канала листается по дням, текущая передача подсвечена. Для каждого канала можно изменить:
«Название канала» — имя для экспорта XMLTV;
«Часовой пояс» — если время событий при импорте не было привязано к UTC;
«URL значка» — иконка канала;
«Наборы каналов» — членство в наборах для выдачи внешним потребителям (EPG для OTT middleware).
Ручные правки могут быть перезаписаны при следующем обновлении источника — веб-интерфейс предупреждает об этом.
Вкладка «Состояние источников» показывает ход импорта: время последнего и следующего обновления, число каналов и событий, ошибки; кнопка «Обновить сейчас» запускает обновление источника немедленно, не дожидаясь расписания.
С версии 2.0.2.420 изменения программы во внешних источниках распознаются надёжнее: изменением считается и обмен текстом между двумя полями передачи. Лента, которая не изменилась с прошлого обновления, заново не разбирается, но её каналы по-прежнему считаются обновлёнными, поэтому «Автоочистка осиротевших каналов» их не удаляет; до версии 2.0.2.420 такие каналы могли пропасть. Первое обновление после перехода на 2.0.2.420 ничего в базе не переписывает, и правки названий каналов, сделанные в веб-интерфейсе, сохраняются.