Оценете темата:
  • 0 гласа - средно 0
  • 1
  • 2
  • 3
  • 4
  • 5
My XMLTV Importer
#1
Information 
My XMLTV Importer
/ python скрипт за импортиране на EPG от различни разпространители /

Важно: Това не е EPG грабер! Не може да обхожда уеб страници и да експортира събраните данни.

Функционалности:
- Импортира XMLTV файлове и експортира резултата също в XMLTV. Може да се използва като Merger/Joiner;
- Филтрира желаните канали за потребителя и експортира в изходния файл единствено тях
- Приоритизира XMLTV източниците по техният номер в конфигурационния файл
- Поддържа Fail-Over т.е. при отпадане на основния източник, превключва автоматично към първия резервен и т.н. до последния конфигуриран източник (вижте конфигурационния файл)
- Кешира изтегляните от него отдалечени XMLTV файлове, за да се изтеглят дневно само по веднъж (не поддържа архиви и не прави сам разархивиране - това си е ваш ангажимент)
- Къстъм лога: може да добавя/заменя съдържаемите в източника лога на ТВ каналите с други, ръчно конфигурирани от вас

При стартирането си, скрипта опитва да достъпи основния конфигуриран източник на готово EPG разписание. Може това да е локален файл в XMLTV формат, а може и да бъде хостнат в интернет, като директен URL адрес без компресия! В раздела channels трябва да конфигурирате по показания начин ID-та (измислени от вас) на желаните ви канали в резултатния файл. Същите тези ID-та, трябва да асоциирате със съответните източници, например BNT.2.bg=BNT2, показва, че BNT.2.bg е ID-то във входния файл за дадения канал, а при нас, този канал ще има BNT2 като ID в резултатния файл и т.н. канал по канал и източник по източник. Резервните източници са с по-нисък приоритет, колкото е по-голям техния номер - използвайте показаната схема. Може да добавяте неограничен брой източници (стига да спазват формата за XMLTV). Не всеки XML файл спазва формата на стандарта XMLTV !

Инсталация:
Осигурете си python3 среда и при първото стартиране на скрипта, следете за липсващи python библиотеки. При липса на някоя от тях, инсталирайте я с pip.

Конфигуриране:
Отворете importer.conf и внимателно задайте желаните от вас пътища, списъци с канали, id-та и лога. Всичко, което може да се конфигурира е в този конфигурационен файл.


<< Линк за изтегляне >>


/ Продукта се разпространява под GPLv3 лиценз. Създаден е с Anthropic Claude AI и внедряването на нови функционалности в него не е планирано. Техническата поддръжка е ограничена до постове в тази тема на kodibg.org /
[Изображение: notrobosmall.jpg]
Отговори
#2
Благодаря много за отделеното време!

Имам един въпрос. Опитвам се да вдигна един контейнер с уеб сървър, чрез който да имам достъп до генерирания xml файл, но едно нещо не ми е ясно - кой файл да трябва да заредя в PVR/ TVheadend - този, който е от кеш директорията, или example.xml? Този от кеш директорията е значително по-голям и с повече съдържание. Просто искам да merge-на 1-2 файла и да подам генерирания файл на TVHeadend, но не знам кой файл да подам.

Благодаря предварително!
Отговори
#3
В importer.conf можеш:

- Да зададеш кои входни файлове да използва скрипта като източници
- Да укажеш кой да е основен източник и кой/кои - резервен/вни
- Да укажеш приоритета на резервните източници
- Да посочиш директория и име на резултатния файл. Предварително съм посочил example.xml в текущата директория. Може да укажеш /какъвто/ти/трябва/път/epg.xml

В кеш директорията се появяват само изтеглените от интернет входни файлове. Файла, който скрипта създава на изхода си е умишлено по-малък от входните, защото филтрира нежеланите канали и оставя само описаните в importer.conf. Предварително съм ви описал само 4-те БНТ-та и затова в резултатния файл се появяват само те! По този начин и с този скрипт можете да комбинирате различни източници, но не директно да ги слеете, а да "вземате" един канал от тук, а другия оттам - според вашите собствени предпочитания. Всеки вход, а също и изхода трябва да бъдат конфигурирани: кои канали и с какви ид-та да минават оттам! Конфигурирането на къстъм лога също се поддържа, но е опционално. Може и без него. Коментираните редове не се четат от скрипта и няма да причинят грешка. Като изключим логата и "автора" на резултатното разписание, входните данни се прехвърлят без промени към изхода т.е. при някакви неточности, трябва да се сърдите и да търсите причина в използвания от вас източник. За вход, трябва да използвате само неархивирани файлове.
[Изображение: notrobosmall.jpg]
Отговори
#4
Ясно, разбрах! В изходния файл ще има само тези канали, които съм сложил в конфига, а в кеширащия файл ще има всички канали от източника. Което си е логично, де. Благодаря още веднъж!
Отговори
#5
Бих се радвал, ако се направи и едно клипче визуално да се види. Благодаря!
Отговори
#6
В примерната конфигурация, която съм ви споделил зададох като основен източник Rytec:
Код:
[main_source]
# Path to the main source - can be a URL or local file path
# path = https://example.com/xmltv_main.xml
# Файла, където ви е изтеглено и разархивирано разписанието от Rytec. Виж: https://github.com/doglover3920/EPGimport-Sources/blob/main/rytec.sources.xml
path = ./rytecBG
В скрипта, през който автоматизирате стартирането на My XMLTV Importer задайте:
1. Изтеглянето на архива от Rytec
2. Разархивирането на архива
3. Стартиране на My XMLTV Importer

...например така (при Linux):
Код:
#!/bin/bash

#Работна директория
cd /път/до/вашата/целева/EPG/директория/

#Юзър агент
UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Safari/537.36"

#Rytec даунлоудър
wget --tries=3 --wait=20 --user-agent="$UA" "http:// избрания от вас Rytec mirror /rytecBG.xz" --output-document=rytecBG.xz
unxz -dkfq rytecBG.xz

python /път/до/директорията/на/MyXMLTVImporter/xmltv_importer.py
В importer.conf поправяме path = ./rytecBG с този, който ще бъде при нас: /път/до/вашата/целева/EPG/директория/rytecBG . След това стартираме bash скрипта, за да проверим дали се изтегля Rytec файла и дали се разархивира на правилното място. Ако всичко е наред, отваряме с текстов редактор подходящ за програмни кодове файла rytecBG (например Notepad++, Sublime Text или др.). В началото на файла има опис на каналите и техните ID-та. Избираме например <channel id="Evrokom.bg">, където ID-то е това между кавичките т.е. Evrokom.bg . Затова се връщаме отново в importer.conf и продължаваме с конфигурацията. В раздела за Rytec, описваме:
Код:
[main_source]
path = /път/до/вашата/целева/EPG/директория/rytecBG
# Channel mappings from source IDs to output IDs
# Format: source_id1=target_id1, source_id2=target_id2
channel_mappings =
    BNT1.bg=BNT1,
    BNT2.bg=BNT2,
    BNT3.bg=BNT3,
    BNT4.bg=BNT4,
    Evrokom.bg=Eurocom
където вляво от знака = поставяме ID-то на канала в източника, а вдясно от знака = поставяте ID-то което вие самите искате за този канал! Препоръчително е в ID-тата да липсва интервал т.е. " ". След всеки желан от вас канал, който сте описали поставяйте запетая освен на последния ред на описа. Може да продължите по същия начин и с другите източници, които конфигурирате да използвате. Въвел съм ви като онлайн източник МЕГА EPG на harrygg и EPGSHARE01 (който трябва предварително да се изтегля и разархивира - като при Rytec). За да имате алтернативен източник за канала Евроком (при евентуален технически проблем с Rytec), конфигурирайте при поне 1 резервен източник същия този канал (ако EPG-то го предлага), като поставите същия ID вдясно от знака =. Вляво, ще поставите каквото е ID-то на този канал в съответния източник - отваряте файла му и преглеждате описа в началото, където са изброени каналите и ID-тата им. Сега ще зададем този канал да се пропуска към резултатния ни файл по следния начин:
Код:
# List of channel IDs to include in the output
channels =
    BNT1,
    BNT2,
    BNT3,
    BNT4,
    Eurocom
Отбележете, че ID-то Eurocom е същото, като на конфигурираните източници в конфигурационния файл! Ако няма съвпадение, канала няма да бъде идентифициран и пропуснат към изхода. Остана да зададем къде да се експортира резултатния файл:
Код:
[output]
# Path to the output file
path = /път/до/вашата/целева/EPG/директория/epg.xml
Вече може да стартирате bash скрипта (който предварително изтегля компресираните EPG файлове) и My XMLTV Importer за да ви филтрира входните данни само до описаните от вас канали. Ако източниците нямат вградени лога на каналите, можете да ги добавяте сами по следния начин:
Код:
# Custom channel icons
# Format: channel_id1=icon_url1, channel_id2=icon_url2
channel_icons =
    BNT1=https://bnt.bg/box/img/BNT1.svg,
    BNT2=https://bnt.bg/box/img/BNT2.svg,
    BNT3=https://bnt.bg/box/img/BNT3.svg,
    BNT4=https://bnt.bg/box/img/BNT4.svg,
    Eurocom=https://eurocom.bg/wp-content/uploads/2024/07/eurocom-header-logo-300x169.png
Пътят до логото трябва да е валиден http или https адрес. Може да си копирате адреса до логото от официалния сайт на канала или другаде. Конфигурацията на логата е опционална т.е. не е задължителна! Ако входното разписание има конфигурирано лого и вие също посочите път до лого, в резултатния файл ще бъде именно вашето.

За да се изпълнява всичко това ежедневно, задайте съответната настройка в операционната система на устройството: при Windows - в Task Scheduler , а при Linux - в cron.
[Изображение: notrobosmall.jpg]
Отговори
#7
Обнових конфигурационния файл, добавяйки източника на разписание OpenEPG. Той предлага разписание за различни държави както некомпресирано, така и с компресия т.е. може директно да се използва като източник в My XMTV Importer.
[Изображение: notrobosmall.jpg]
Отговори


Отваряне на: