Converter EPG XMLTV to OTT-play (by Alex) server side JSON

  • By prog4food
  • Last update: Sep 24, 2022
  • Comments: 0

EPG converter for OTT-play FOSS

Описание

Инструмент создания телепрограммы для OTT-Play FOSS, использует один поток, и буферное чтение из файла, что позволяет минимизировать нагрузку на систему при разборе файла, потребляет 1 поток и примерно 25 мб оперативной памяти при обработке 300 МБ файла, на современном процессоре тратит на это порядка 35 сек. Для любопытных есть бенчмарки.

Поддерживает работу с конфиг файлами, указание параметров через командную строку, и получение данных через stdin (а значит файл можно вообще не скачивать на диск). Пример конфига лежит в samples/sample_config.json

После каждого запуска актуализируется база данных по обработанным провайдерам chcache.db на ее основе в конце создается общий список каналов.
epgcache.tmp это данные epg последнего обработанного провайдера, пересоздается при обработке нового провайдера.

Аргументы командной строки

Общая схема: <app> [-l] [-e|-c OPTS]
Основные опции:
    -e <opts>  обработать XMLTV файл по параметрам из командной строки
    -с <opts>  обработать XMLTV файл по параметрам из конфиг файла
    -l         создать список поддерживаемых каналов (как правило необходимо в конце)
  ПРИМЕЧАНИЕ: Символ "," используется как разделитель в блоке <opts>
    
  -e xml_file|-,prov_id[,prov_order]
    xml_file   читать данные из файла <xml_file>
    -          читатать данные из потока stdin
    prov_id    идентификатор провайдера
    prov_order порядок сортировки провайдера (исползуется в приске каналов, по умолчанию 50)
  
  -c config_file[,prov_name]
    config_file  файл со списком для обработки
    prov_name    дополнительный фильтр, для выборки только одного провайдера

Примеры

Создать EPG для провайдера blabla из файла epg.xml:

ott-play-epg-converter -e epg.xml,blabla

Создать EPG для провайдера bestprov из конфиг файла conf1.json:

ott-play-epg-converter -c conf1.json,bestprov

Создать EPG для всех провайдеров из конфиг файла conf1.json:

А также создать список каналов для комопнента ott-play-epg-logic
ott-play-epg-converter -l -c provs.json

Создать EPG для провайдера blabla2 напрямую с сайта из gz архива:

curl --silent http://prov.host/epg.xml.gz | gzip -d -c - | ott-play-epg-converter -e -,blabla2

Пример обработки 4(и более) файлов:

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

zcat epgone.xml.gz | ott-play-epg-converter -e -,myfirstprov
curl --silent http://prov.host/epg.xml.gz | gzip -d -c - | ott-play-epg-converter -e -,otherprov1,49
curl --silent --compressed http://prov.host/epg.xml | ott-play-epg-converter -e -,otherprov2,51
...
zcat epglast.xml.gz | ott-play-epg-converter -l -e -,islastprov,99`)

Prebuild

Готовые бинарники я компилирую для Windows (x64, x86)/Linux (x64, arm64, arm7a-soft-float, arm7-hard-float)
Иногда буду добавлять версии для Android (arm64, arm7a-soft-float)
В теории можно завести на всем, что поддерживает GO и кросс-компил, но сборкой придется заняться самостоятельно.

Бенчмарки

В файле benchmarks.md есть немного тестов EPG от it999 на различных платформах.

Download

ott-play-epg-converter.zip