В то время, когда крупные и не очень компании пытаются "впарить" за бешеные деньги кабельщикам различного рода услуги по электронному телегиду (EPG) - сервис DVB.BY предоставляет такой инструмент бесплатно. А учитывая, что здесь же находится одна из
крупнейших баз данных по программе передач - использование сервиса является "манной небесной".
Итак, пользование разделом
Мои EPG предоставляется всем зарегистрированным пользователям без исключения!
Регистрация, собственно, тоже бесплатная и ни к чему не обязывающая (хоть тут повезло)! Были реализованы интересные фишки в EPG, например ЖАНРЫ и ВОЗРАСТНОЕ ОГРАНИЧЕНИЕ -
в популярном бесплатном cherryepg Вы такого не найдёте!Если о сервисе в двух словах, то сервер DVB.BY генерирует для вашей сети файл EIT.TS, который вы скачиваете и транслируете в мультиплексор, например в
Luminato, либо в
MPTS Astra когда в качестве модулятора RESI FSM.
1. Создание файла на сайте DVB.BYЗаходим в
Инструменты ->
EPG, жмём кнопку "
Мои EPG" и нажимаем "
Создать файл".
После того, как мы корректно создали новый файл, его мы сможем увидеть в перечне с соответствующим набором опций. Здесь стоит отметить, что если новые идентификаторы для всех файлов не подходили под формат ONID:TSID:PNR, то опция "скачать eit.ts" будет недоступна, т.к. понятое дело, генерить нЕчего, ибо иденты для канала отсутствуют.
2. Установка плеера у себя на сервере.Мне известно как минимум с десяток способов как раскрутить файлы со служебной информацией EIT. Надеюсь и Вам тоже))) Любой более-менее толковый язык программирования даёт возможность по работе с сокетами. Однако, рекомендовать стану только лучшее. Perl подходит для этой задачи очень даже хорошо. Посмотрите на код ниже, что может быть проще.. К тому же интерпретатор языка устанавливается в 99% случаев на сервера Linux.
#!/usr/bin/perl
use Socket;
use Time::HiRes qw(usleep);
use POSIX qw(ceil);
my $hash = "CHANGE_HASH_IN_PLAYER"; # hash 351e6cd5fcb04e42eeb2da944f714820 in the dvb.by
my $host = "127.0.0.1"; # route add -host 239.1.1.50 gw 192.168.1.20
my $port = 10001; #multicast port
socket( my $target, PF_INET, SOCK_DGRAM, getprotobyname('udp')) or die( "Error opening udp socket: $!");
my $ipaddr = inet_aton( $host);
my $portaddr = sockaddr_in( $port, $ipaddr);
my $filename = "$hash.ts";
system( "rm ./$filename");
system( "wget https://dvb.by/ru/epg/my/$hash.ts -O $hash.ts.gz");
system( "gunzip ./$hash.ts.gz");
my $size = -s "$filename";
my $mtsCount = $size / 188;
my $gap = ceil( 4170 / $mtsCount * 7 * 1000); # 7 пакетов в 1 мкс
while( 1){
my $buffer;
open my $file, '<', $filename or die "Cannot open file $!\n";
while(read $file, $buffer, 188) {
send( $target, $buffer, 0, $portaddr);
usleep( $gap);
}
close $file;
}
Если вы совсем не сильны в Perl-е - это не проблема. Обратите внимание на выделенные строки, значения в которых необходимо поменять на свои.
Возможно, на данном этапе у Вас появится вопрос. Где взять этот
$hash? Ответ:
из линка, созданного выше файла на DVB.BY.
Плеер работает в фоновом режиме в
screen-е (
apt-get install screen). Конечно, можно запустить его и через systemd или monit - это уже кому как больше нравится. Важным условием является его перезапуск каждые 5 минут, т.к. на некоторых телевизорах (в частности Samsung) может не отображаться текущая передача (команду перезапуска добавляем в cron). Да и к тому же, бывает так, что программа меняется среди недели и регулярное обновление с
dvb.by будет способствовать повышению её точности. Ниже копипаст для быстрой установки...
cd /usr/src
wget https://dvb.by/download/files/epgplayer.tar.gz
tar xvzf ./epgplayer.tar.gz
mcedit ./epgplayer/player.pl # не забываем вписать свой HASH потока
sed -i '/^.*run.sh/d' /etc/crontab
echo "*/5 * * * * root /usr/src/epgplayer/run.sh" >> /etc/crontab # и записываем в /etc/crontab
3. Добавляем поток в мультиплексор
Одной из базовых функций мультиплексора, является пропуск пидов через mpts. В нашем случае, pid 18. На рисунке ниже показано, как добавить созданное EPG в Астре (cesbo). По работе с другими модуляторами обращайтесь к их мануалам.
Буду рад, если что-то из написанного принесло Вам пользу. По всем вопросам касательно работы сайта, а также о сотрудничестве можно писать в
контакты, либо в телеграмм
@unidiag, что в принципе равнозначно, т.к. сообщения с сайта дублируются мне в мессенджер.
P.S. Мне пришло сообщение, почему я не рассказал о кастомной генерации XMLTV ? Извиняюсь, что сей функционал проигнорил и, честно сказать, подумав, даже не знаю что о нём писать. Да, в разделе
МОИ EPG можно генерировать XMLTV. Да, можно менять названия каналов и идентификаторы на свои. Вроде всё на этом)))