/

Local TV Guide: настройка локальной программы передач 2026

Главная Статьи Local TV Guide: настройка локальной программы передач 2026

Дата публикации

11.05.2026

Local TV Guide: настройка локальной программы передач 2026

Если каналы открываются, но в гайде пусто или показывает программу какого-то чужого региона — это не проблема CCcam. Это отдельная история про EPG. Local tv guide на ресивере — отдельная подсистема, которая не имеет никакого отношения к расшифровке. Настроить её можно и нужно независимо от того, какой у вас CardSharing-сервер.

Что такое локальная TV-программа и зачем она нужна на ресивере

EPG (Electronic Program Guide) — это база данных с расписанием передач. Ресивер показывает её в гайде: название передачи, описание, время начала и конца. Без EPG вы смотрите канал вслепую — не знаете что идёт сейчас и что будет через час.

На большинстве ресиверов Enigma2 (VU+, Dreambox, Formuler, Zgemma) EPG по умолчанию пытается собирать данные из транспортного потока. Работает это не всегда.

Разница между EPG из потока DVB и внешней XMLTV программой

DVB EPG — это EIT таблицы (Event Information Tables), которые вещатель включает прямо в транспортный поток. Ресивер читает их в фоне, пока вы смотрите канал. Плюс — работает без настройки. Минус — многие вещатели дают EIT только на 1-2 дня вперёд, а некоторые региональные каналы вообще не передают EIT.

XMLTV — внешний файл с программой передач. Ресивер загружает его по HTTP или берёт с локального носителя, парсит и складывает в свой кэш. Данных там обычно на 7-14 дней, что удобнее. Но настраивать нужно вручную.

Почему встроенная EPG часто бесполезна для локальных каналов

Спутниковые пакеты, которыми пользуются через CCcam/OScam, часто включают сотни каналов из разных стран. EIT от польских или турецких каналов ресивер получит нормально. А вот локальный региональный канал из вашего города — скорее всего без EPG вообще.

Кроме того, некоторые операторы намеренно вырезают EIT из зашифрованных мультиплексов. Данные есть, но доступны только через собственный EPG-сервис оператора — который вам, конечно, недоступен.

Как EPG связана с CCcam/OScam (на самом деле — никак)

Это частое заблуждение. CCcam и OScam занимаются исключительно Control Words — ключами расшифровки. Они получают CW от сервера и отдают их декодеру. К расписанию передач это не имеет отношения от слова совсем.

EPG — отдельный модуль ресивера. Даже если выключить CCcam, EPG продолжит работать на FTA каналах. Если EPG пустая — проблема не в кардшаринге, а в источнике программы передач.

Источники XMLTV для локальной программы передач

XMLTV — открытый формат. Файл представляет собой XML с перечнем каналов и передач. Вот минимальная структура:

<?xml version="1.0" encoding="UTF-8"?>
<tv generator-info-name="WebGrab+Plus">
  <channel id="channel.one.ru">
    <display-name lang="ru">Первый канал</display-name>
  </channel>
  <programme start="20260511060000 +0300" stop="20260511070000 +0300" channel="channel.one.ru">
    <title lang="ru">Утренние новости</title>
    <desc lang="ru">Выпуск утренних новостей</desc>
  </programme>
</tv>

Атрибут start должен содержать таймзону — об этом ниже в разделе проблем.

Открытые XMLTV grabber-ы: tv_grabber_wg, WebGrab+Plus

WebGrab+Plus (WG++) — де-факто стандарт для генерации XMLTV. Работает на Linux, Windows, в Docker. Берёт данные с сайтов телепрограмм через конфигурируемые siteini-файлы. Последняя стабильная версия — 3.2.0.

Классический tv_grab_* из пакета xmltv-utils в Debian/Ubuntu — более старый подход. Для некоторых стран (Великобритания, Финляндия, Нидерланды) грабберы актуальны и поддерживаются. Для постсоветского пространства — WG++ работает лучше.

Где брать списки сайтов-источников по странам

WG++ использует siteini-файлы — это конфигурации для парсинга конкретных сайтов с программами. Официальный репозиторий siteini.pack обновляется сообществом. Найти его можно через поиск "WebGrab+Plus siteini.pack github" — он открытый, там несколько сотен конфигов под разные страны.

Для России и СНГ обычно работают конфиги под крупные агрегаторы программ. Для Польши — под TVN, TVP. Для Германии — под tvspielfilm. Качество зависит от активности поддерживающего.

Формат XMLTV: структура файла, channel-id, programme-id

Атрибут id у тега <channel> — это внутренний идентификатор. Он должен совпадать с атрибутом channel у каждой <programme>. Формат произвольный, но принято использовать обратный домен: perviy.russia.ru, hbo.us.

EPG Importer на Enigma2 соединяет этот id с реальными DVB-каналами через channels-файл. Это ключевой момент — без правильного маппинга данные не отобразятся.

Как сопоставить channel-id из XMLTV с SID каналов в lamedb

lamedb — база каналов Enigma2, лежит в /etc/enigma2/lamedb. Каждый канал там имеет DVB-триплет: namespace, tsid, onid, sid. Именно эти числа нужно указать в channels-файле EPG Importer.

Открыть lamedb можно любым текстовым редактором — он в читаемом формате. Ищите строку с названием канала, рядом будет запись вида 1:0:1:3F4:7DC:282:EEEE0000:0:0:0: — это и есть нужные идентификаторы.

Установка и настройка EPG Importer на Enigma2 (OpenATV, OpenPLi, VTi)

EPG Importer — самый популярный плагин для загрузки внешней программы на Enigma2. Работает на всех основных прошивках: OpenATV 7.x, OpenPLi 9.x, VTi 14.x.

Установка плагина

Через SSH на ресивер:

opkg update
opkg install enigma2-plugin-extensions-epgimport

После установки перезапустите Enigma2 или перегрузите ресивер. Плагин появится в меню Расширения.

Структура папки /etc/epgimport/ — sources файлы

Плагин читает все *.sources.xml файлы из /etc/epgimport/. Каждый sources-файл описывает один или несколько источников. Стандартные источники уже есть после установки — файлы вида rytec.sources.xml. Кастомный добавляется рядом.

Создание custom источника: XML формат

<?xml version="1.0" encoding="UTF-8"?>
<sources>
  <source type="gen_xmltv" name="MyLocalGuide">
    <description>Локальный гайд с домашнего сервера</description>
    <url>http://192.168.1.100/epg/guide.xml.gz</url>
    <channels>/etc/epgimport/myguide.channels.xml</channels>
  </source>
</sources>

Сохранить как /etc/epgimport/myguide.sources.xml. Параметр type="gen_xmltv" говорит плагину что файл в формате XMLTV. Расширение .gz плагин распаковывает на лету.

Файл channels: маппинг XMLTV id на DVB triplet

<?xml version="1.0" encoding="UTF-8"?>
<channels>
  <channel name="Первый канал">
    channel.one.ru:EEEE0000:7DC:282:3F4
  </channel>
  <channel name="Россия 1">
    rossiya.one.ru:EEEE0000:7DC:282:3F5
  </channel>
</channels>

Формат: xmltv_channel_id:namespace:tsid:onid:sid. Все числа — в hex. Берёте из lamedb. Это самая трудоёмкая часть — нужно вручную сопоставить каждый канал. Но делается один раз.

Планировщик импорта: автоматический запуск раз в сутки

В настройках EPG Importer есть встроенный планировщик. Выставить время около 4:00 — когда ресивер в режиме ожидания. Включить "Import on wake-up" если ресивер выключается на ночь.

Принудительный запуск через OpenWebif (порт 80 на ресивере):

wget -qO- 'http://127.0.0.1/web/saveepg'

После импорта данные пишутся в /etc/enigma2/epg.dat. Этот бинарный файл — кэш EPG, который Enigma2 читает при старте.

Настройка WebGrab+Plus для собственного XMLTV источника

Если публичные XMLTV источники не покрывают ваши каналы — собирайте сами. WG++ — это именно для этого.

Установка WG++ на Linux сервер рядом с OScam

# Debian/Ubuntu
apt-get install mono-runtime
wget https://webgrabplus.com/sites/default/files/download/SW/V3.2.0/WG++V3.2.0_Setup_Linux.tar.gz
tar -xzf WG++V3.2.0_Setup_Linux.tar.gz -C /opt/wgplus

WG++ работает через Mono — .NET runtime для Linux. На Raspberry Pi и небольших серверах работает нормально, только не ждите скорости на больших списках каналов.

Структура WebGrab++.config.xml

<settings>
  <filename>/opt/wgplus/guide.xml</filename>
  <mode>m</mode>
  <postprocess run="yes" pass="2">MDB</postprocess>
  <user-agent>Mozilla/5.0 (compatible)</user-agent>
  <logging>on</logging>
  <channel update="i" site="tvprogramma.pro" site_id="perviy" xmltv_id="channel.one.ru">
    Первый канал
  </channel>
</settings>

Режимы: m — merge (добавляет к существующим данным), f — full (пересобирает полностью), c — clear (только то что нашёл). Для ежедневного обновления лучше m.

Siteini файлы: что внутри, как обновлять

Каждый siteini — это скрипт на специальном языке WG++, который описывает как парсить конкретный сайт: какие XPath-пути, как извлекать время, описание, жанры. Обновлять вручную не нужно — достаточно периодически обновлять весь пакет siteini.pack из репозитория.

Запуск по cron

0 4 * * * /opt/wgplus/run.sh >> /var/log/wgplus.log 2>&1

Скрипт run.sh просто запускает mono /opt/wgplus/WebGrab+Plus.exe. Запускать в 4 утра — в это время большинство сайтов-источников под минимальной нагрузкой.

Хостинг готового guide.xml для ресиверов: nginx

location /epg/ {
    root /opt/wgplus;
    add_header Content-Type application/xml;
    gzip_static on;
}

Если guide.xml.gz уже есть рядом с guide.xml, nginx отдаст сжатую версию через gzip_static on. Ресиверы с EPG Importer это понимают.

Сжатие в .xml.gz

gzip -k /opt/wgplus/guide.xml

Типичный guide.xml для 200 каналов весит 15-40 МБ. В gz — 2-5 МБ. При нескольких ресиверах в сети это заметно. Флаг -k сохраняет оригинал рядом.

Решение типичных проблем с локальной EPG

EPG настроена, импорт проходит без ошибок, но что-то всё равно не работает. Вот реальные диагностические команды.

EPG импортирована, но не отображается в гайде

Первое что проверять — channels файл. Скорее всего SID в нём не совпадают с lamedb.

# На ресивере:
cat /etc/enigma2/lamedb | grep -A2 "Первый канал"

# Лог импорта:
tail -f /tmp/epgimport.log

В логе ищите строки вида "channel not matched" — они покажут какой xmltv_id не нашёл пару в channels файле.

Время передач сдвинуто на несколько часов

Классика. Атрибут start в XMLTV должен выглядеть так: 20260511060000 +0300. Если grabber пишет без таймзоны — 20260511060000 — ресивер считает что это UTC и добавляет смещение вашего часового пояса. Итог: сдвиг на 3 часа для Москвы, на 2 для Варшавы.

Фикс в WebGrab++.config.xml — указать timezone="3" для источника, или поставить postprocessor который добавит таймзону автоматически.

Часть каналов получает данные, часть — нет: неверный SID/TSID

Каналы переезжают между транспондерами. Если провайдер переставил канал — его TSID и SID в lamedb обновятся после пересканирования, но в вашем channels файле останутся старые числа. Решение: пересканировать каналы, открыть новый lamedb, сравнить триплеты.

# Быстрая проверка что в epg.dat вообще что-то есть:
cat /etc/enigma2/epg.dat | strings | head -50
ls -la /etc/enigma2/epg.dat

EPG исчезает после перезагрузки ресивера

Если /etc/enigma2/ примонтирован как tmpfs (некоторые прошивки так делают для защиты flash) — epg.dat пропадает при ребуте. Проверить:

mount | grep enigma2

Если tmpfs — либо перенастроить точку монтирования на постоянный раздел, либо вынести epg.dat на USB:

mv /etc/enigma2/epg.dat /media/usb/epg.dat
ln -s /media/usb/epg.dat /etc/enigma2/epg.dat

На ресиверах с маленьким flash (8-16 МБ) это вообще необходимо — epg.dat легко разрастается до 20-30 МБ.

OpenWebif показывает данные, но в гайде ресивера пусто

Кэш не применился. После импорта через EPG Importer нужно или перезагрузить enigma2, или принудительно сохранить:

wget -qO- 'http://127.0.0.1/web/saveepg'

Если и это не помогает — удалить epg.dat и запустить импорт заново. Иногда файл портится.

Кириллица в названиях передач превращается в кракозябры

Проблема кодировки в XMLTV файле. Файл должен быть в UTF-8 без BOM. Если grabber пишет UTF-8 с BOM (особенно грешит Windows) — первые байты EF BB BF ломают XML парсер ресивера.

# Проверить и убрать BOM:
file guide.xml
sed -i 's/^\xEF\xBB\xBF//' guide.xml

Также проверьте что siteini файл для источника указывает правильную кодировку сайта — некоторые старые сайты отдают данные в Windows-1251.

Альтернативные методы: OpenTV EPG, MHW, Sky EPG

XMLTV — не единственный способ получить local tv guide. Некоторые спутниковые пакеты несут EPG прямо в транспортном потоке, причём в расширенных форматах с данными на неделю вперёд.

OpenTV EPG: 7-дневная программа из транспортного потока

OpenTV EPG (он же "Cross-EPG") используется рядом крупных спутниковых пакетов. Отличается от стандартного EIT тем, что содержит данные на 7 дней и богатые метаданные. Плагин CrossEPG для Enigma2 умеет его читать.

CrossEPG настраивается через /etc/crossepg/. Файл crossepg.conf указывает транспондеры для сканирования EPG. После сбора данные конвертируются в тот же формат что и EIT и складываются в epg.dat.

MediaHighway (MHW1/MHW2): EPG формат на некоторых пакетах

MHW/MediaHighway — формат EPG используемый Canal+ и некоторыми другими платными пакетами. Enigma2 поддерживает его нативно через плагин OpenTV-EPG-Importer. Если ваш пакет использует MHW — данные появятся автоматически после настройки плагина, без внешних источников.

Sky EPG: формат используемый Sky UK/DE/IT

Sky EPG — проприетарный формат Sky. Содержит расписание на 7+ дней. Для Enigma2 есть плагины которые умеют его читать с соответствующих транспондеров Astra 28.2E (Sky UK) и Astra 19.2E (Sky DE). Если вы принимаете эти спутники — это бесплатный источник качественной EPG для европейских каналов.

Когда лучше использовать поток EPG, когда — XMLTV

Лучший результат — комбинация. Для каналов которые сами несут хороший EIT (крупные новостные, спортивные) — оставить поток. Для региональных и нишевых каналов без EIT — подключить XMLTV. EPG Importer и CrossEPG умеют работать вместе, не конфликтуют.

Логика такая: поставить CrossEPG как основной источник для европейских каналов, EPG Importer с кастомным XMLTV — для всего остального. В EPG Importer есть опция "Don't overwrite existing data" — она не затирает данные которые уже пришли из потока.

Настроенный таким образом local tv guide покроет 90%+ каналов даже на сложных мультиязычных подборках.

Связана ли локальная TV-программа с работой CCcam или OScam?

Нет. EPG — отдельная подсистема ресивера. CCcam и OScam отвечают только за расшифровку — они передают Control Words декодеру. Программа передач приходит либо из DVB потока через EIT таблицы, либо из внешнего XMLTV файла. Если EPG пустая — ищите проблему в источнике программы, не в кардшаринге.

Где взять XMLTV файл с программой для моего региона?

Через WebGrab+Plus собрать самостоятельно из открытых siteini под нужные сайты-источники. Siteini.pack содержит конфиги для большинства стран. Альтернатива — публичные XMLTV агрегаторы, которых можно найти поиском. Выбор зависит от региона и того, какие сайты с программами там доступны.

Почему EPG Importer импортировал данные, но в гайде пусто?

Скорее всего channels файл содержит неверные DVB триплеты. Откройте lamedb на ресивере (/etc/enigma2/lamedb), найдите нужный канал и проверьте его namespace:tsid:onid:sid. Сравните с тем что написано в вашем channels XML. Расхождение хотя бы в одном числе — канал не найдёт пару. Также проверьте /tmp/epgimport.log на строки "not matched".

Как часто нужно обновлять локальную программу передач?

Раз в сутки достаточно. Большинство источников публикуют данные на 7-14 дней вперёд, так что ежедневное обновление поддерживает актуальность. Cron-задание лучше ставить на 3-5 утра — в это время нагрузка на сайты-источники минимальна, и вероятность таймаута при парсинге ниже.

Куда EPG Importer на Enigma2 сохраняет данные после импорта?

В файл /etc/enigma2/epg.dat — это бинарный кэш EPG. После импорта нужно либо перезагрузить enigma2, либо вызвать saveepg через OpenWebif: wget -qO- 'http://127.0.0.1/web/saveepg'. Без этого шага данные могут не отобразиться в гайде даже при успешном импорте.

Можно ли использовать одну XMLTV программу для нескольких ресиверов в сети?

Да, и это правильный подход. Поднять nginx или lighttpd на роутере или домашнем сервере, отдавать guide.xml.gz по HTTP на внутреннем IP. На каждом ресивере в sources файле EPG Importer прописать этот URL. WG++ собирает данные один раз, все ресиверы берут готовый файл — трафик и нагрузка на источники минимальные.

Что делать если время передач в EPG сдвинуто на несколько часов?

Проблема таймзоны в XMLTV. Атрибут start должен быть в формате YYYYMMDDHHMMSS +TZ, например 20260511183000 +0300. Если grabber пишет время без таймзоны — ресивер считает что это UTC и сдвигает по локальной зоне. Фикс: добавить таймзону в конфиг WebGrab++ или использовать postprocessor для добавления смещения к уже сгенерированному файлу.

О статье

  • Практические советы и инструкции
  • Материалы по спутниковому ТВ
  • Поддержка и помощь 24/7