EPG в плеере
В основном автоматическое, и работает в 2 режимах:
- Полный
- источник XMLTV поддерживается плеером, в таком случае серверная часть пытается максимально точно подобрать значки и программу к каналам. Для каналов, по которым этого сделать не удалось, работает автопоиск EPG, согласно приоритетам, на сервере.
- Стандартный
- источник XMLTV не поддерживается плеером, в таком случае сразу работает автопоиск EPG, согласно приоритетам, на сервере
Терминология
В статье используются термины, значение которых Вы должны знать, вот их список с пояснениями:
IPTV
поставщик ip телевидения.M3U
/M3U8
это плейлист, ссылку на который Вы вбиваете в плеерEPG-FOSS
формат программы, совместимый с этим плеером, легко создается из XMLTV этим инструментомЗаголовок плейлиста
/#EXTM3U
первая строка в плейлисте, в ней как правило могут содержаться глобальные установки листа, стандарта толком нетurl-tvg
параметр плейлиста, относящийся к секции #EXTM3U, в нем прописываются источники телепрограммы для каналов, иногда пишут несколько источников через,
EPG
/телегид
телепрограмма для канала, обычно ищется по источникам из url-tvg, имеет несколько форматовXMLTV
иJTV
#EXTINF
строка в которой содержатся данные канала(для каждого своя строка), в основном имя, но сюда пишут также группу, кол-во часов архива, идентификатор для url-tvg и прочие полезные данные, стандарта толком нетtvg-id
параметр канала, относящийся к секции #EXTINF используется для привязки EPG к каналу (в основном XMLTV), часто бывает цифровым, что ведет к проблемам если указано несколько url-tvg в листе с каналами от разных IPTV.tvg-name
параметр канала, относящийся к секции #EXTINF используется для привязки EPG к каналу (не точно, но в основном для JTV). Обычно сюда пишут "сырое имя" канала, например каналы СТС, СТС +2, СТС +4, будут иметь одинаковый tvg-name, но разные tvg-shift, 0,+2,+4 соответственно.tvg-source
параметр канала, относящийся к секции #EXTINF используется этим плеером, для приоритизации EPG, непосредственно для канала, подробнее тут
Автопоиск
Работает как и в оригинальном плеере, но с изменениями, которые на мой взгляд лучше влияют на качество поиска.
Имеется поддержка приоритетных источников, в первую очередь поиск выполняется по url-tvg
которые, удалось обнаружить в заголовке плейлиста, или явно указаны в tvg-source
, если определены этих два параметра, то второй логично дополняет первый.
Плеер пытается найти EPG для канала по следующим атрибутам (указаны в порядке очереди поиска, регистр символов не учитывается):
Обратите внимание
tvg-id
предназначен для привязки канала к одному url-tvg
. Если в плейлисте несколько url-tvg, да еще и tvg-id цифровой, это может привести к проблемам.
Пример: У Вас объединенный плейлист двух IPTV
с несколькими url-tvg, tvg-id у обоих цифровой (допустим начинается с 1), ни один плеер не сможет по tvg-id
в такой ситуации корректно сопоставить EPG.
graph TD
E(Конец)
auto_id[Поиск EPG по:\ntvg-id]
auto_name[Поиск EPG по:\ntvg-name]
auto_name2[Поиск EPG по:\nназванию канала]
prio_url-tvg[Приоритет по url-tvg\n<i>если есть в листе\nи поддерживается сервером</i>]
prio_tvg-source[Приоритет по tvg-source\n<i>если указан</i>]
S(Старт) ==> prio_url-tvg ==> prio_tvg-source
prio_tvg-source ==> auto_id ==> E(Конец)
auto_id ==>|tvg-id нет| auto_name
auto_name ==> E(Конец)
auto_name ==>|tvg-name нет| auto_name2
auto_name2 ==> E(Конец)
1. tvg-id
если в заголовке плейлиста указан и поддерживается источник url-tvg
, то соответствие сначала будет искаться по этим источникам.🪧 если
url-tvg
пуст, то поиск по tvg-id
игнорируется2. Если предыдущий шаг не дал результата, или был пропущен, то далее поиск ведется по атрибуту
tvg-name
и далее по названию канала
, все с учетом приоритетных источников, из url-tvg или tvg-source.
Кастомизация автопоиска
Для желающих настроить лист "под себя" осталась возможность из оригинального плеера влиять на подбираемую программу.
В FOSS версии этот процесс переработан, теперь нет привязки к одному серверу, можно указать свой, можно "гвоздями прибивать" программу к телеканалам, можно грузить другие иконки.
Таким образом поддержку любого провайдера в плеере можно довести до 100%, даже без желания разработчика.
Подробнее тут