• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Vítejte návštevníku! Přihlášení Registrace


Hodnocení tématu:
  • 2 Hlas(ů) - 1.5 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
iVysílání
#1
Toto téma je určené k výměně informací týkající se využití iVysílání, tzn. internetové podoby vysílání České televize, jako zdroje pro Live TV funkce a doplňky v Kodi (např. IPTV Simple Client) nebo i mimo něj (např. Tvheadend). A to jak pro využití jako zdroje streamů televizních kanálů, tak i dalších informací, typicky epg, resp. xmltv. Vytvořil jsem toto téma zejména proto, abychom diskusemi neplevelili téma iVysílání v subfóru Video doplňků, které se sice zabývá podobnou problematikou, ale s ohledem na způsoby i cíle řešení poměrně dost odlišnou.

Řešení pro příjem kanálů Sport Plus v Tvheadend a jeho prostřednictvím v Kodi

Abych byl konkrétní popíši stručně to, jak já kanály Sport Plus (Sport+), případně jiné kanály, které ve stejné logice iVysílání poskytuje (např. přenosy ze Senátu Parlamentu ČR, případně jiné pořady) přijímám a zpracováván. Pro potřeby popisu budu tyto kanály označovat jako iVysilani+, a spadají tedy do nich jak kanály programu Sport Plus, tak případně i kanály obsahující další vysílání (viz výše).

Vycházím z obvyklého modelu řešení (login - playlist - epg - streamer), které používám u ostatních OTT služeb,  který jsem ale pro potřeby iVysilani+ jen trochu zjednodušil:
  • playlist negeneruji, ale vytvářím ručně pomocí textového editoru
  • pro vytvoření zdroje streamu pro rouru směrovanou pomocí konstrukce pipe:// v playlistu do Tvheadend používám pouze script streamer.sh, ve kterém mám adresu streamu zadanou pevně. Tu adresu jsem si vytáhl z webového rozhraní služby iVysílání
  • generuji si epg z dat hbbtv zdroje České televize (credit @pbk:) pomocí scriptu epg.sh, stěžejní roli ale má python script epg.py, který je z tohoto scriptu volán. Výsledný formát dat je samozřejmě xmltv.
  • xmltv data epg do Tvheadend vkládám pomocí externího xmltv graberu.
Popisované řešení je určeno pro uživazele, kteří s TVheadend umí pracovat a kteří se i orientují v základních funkcích Linux systémů. Nečekejte tedy out-of-box řešení nebo podrobný popis (o video návodu ani nemluvě). Co ale popíši, to je logika řešení, která je s ohledem na to, jak vlastně v iVysílání zpacování vysílání kanálů iVysilani+ specifické, poměrně důležitá. Na závěr se pak také zmíním o specifice zpracování této části iVysílání i na straně Kodi. A na úplný závěr tohoto nezbytného úvodu ještě poznámka k ostatním kanálům iVysílání a jejich příjmu v Tvheadend. Já ji řeším odděleně. Je to právě kvůli specifice iVysilani+, takže v Tvhedend mám pro příjem iVysílání k vytvořeny dvě sítě iVysílani a iVysilani+. Jednu pro příjem klasických kanálů ČT z iVysílání, druhou právě pro příjem iVysilani+. Další popis se tedy týká pouze sítě iVysilani+.

Kanály iVysilani+

Vysílání kanálů iVysilani+ probíhá poměrně specificky. I když je program vysílání těchto kanálů znám často i několik dnů dopředu, to, na kterém "fyzickém kanálu" budou nakonec jednotlivé pořady vysílány, se určí často jen několik hodin před tím. Někdy třeba 12,  ale jindy také jen až jednu hodinu před zahájením vysílání pořadu. Proto tedy ani není možné vytvářet EPG v Tvheadend dříve než v okamžiku, kdy je toto přiřazení známo. Ve službě iVysílání jsou pro tyto kanály vytvořeny fixní interní kanály, které se pak využívají podle vcelku neznámé logiky. Dosud bylo zjištěno, že iVysilani+ má vytvořeno (resp. používá) množinu celkem 17 kanálů, které jsou označeny CH_25CH_31, CH_MOB_01 a CH_MP_01CH_MP_08. Dá se říci, že o tyto identifikace je celé řešení opřené. Používajíc se jak pro názvy služeb Tvheadend, tak i jako identifikace pro epg (tedy v xmltv). Vlastní jména kanálů iVysilani+, je ale možné si zvolit podle vlastního uvážení, jen je s tím třeba pak v další logice řešení počítat.

Já jsem si těch 17 kanálů v Tvheadend označil jendoduše, jak CT iVysilani+ 1CT iVysilani+ 17. Vidět je to na následujícím screenshotu. Všimněte si, že všechny kanály jsou označené jako Disabled, protože v tuto chvíli žádné epg pro tyto kanály ještě není známo, a to hlavně proto, že v tento den nejsou ani žádné pořady iVysilani+ v plánu vysílání. V logice pojmenování kanálů i číslování kanálů pokračuji podle toho, jak označuji jiné kanály České televize. Tady jenom dodám, že já ty klasické kanály přijímám primárně z DVB-T vysílání, jako zálohu používám vysílání OTT služby Sledovanitv.cz. Nepoužívám tedy pro ně příjem ze služby iVysilání.
   

Playlist iVysilani+

Jak už jsme uvedl výše, playlist negeneruji, vytvořil jsme ho ručně. Dá se samozřejmě editorem upravit, ale je třeba s případnými změnami počítat v logice dalšího zpracování. Zejméně ve scriptu epg.py a jeho konfiguračním souboru. config.py. Má současná produktivní verze vypadá takto:
 
Kód:
#EXTM3U
#EXTINF:-1 tvh-epg="0" tvg-logo="ctivysilani.png" group-title="iVysilani+" tvh-chnum="6.1" tvg-id="CH_25",CT iVysilani+ 1
pipe:///home/kodi/TVServer/playlist/ivysilani/streamer.sh CH_25
#EXTINF:-1 tvh-epg="0" tvg-logo="ctivysilani.png" group-title="iVysilani+" tvh-chnum="6.2" tvg-id="CH_26",CT iVysilani+ 2
pipe:///home/kodi/TVServer/playlist/ivysilani/streamer.sh CH_26
#EXTINF:-1 tvh-epg="0" tvg-logo="ctivysilani.png" group-title="iVysilani+" tvh-chnum="6.3" tvg-id="CH_27",CT iVysilani+ 3
pipe:///home/kodi/TVServer/playlist/ivysilani/streamer.sh CH_27
#EXTINF:-1 tvh-epg="0" tvg-logo="ctivysilani.png" group-title="iVysilani+" tvh-chnum="6.4" tvg-id="CH_28",CT iVysilani+ 4
pipe:///home/kodi/TVServer/playlist/ivysilani/streamer.sh CH_28
#EXTINF:-1 tvh-epg="0" tvg-logo="ctivysilani.png" group-title="iVysilani+" tvh-chnum="6.5" tvg-id="CH_29",CT iVysilani+ 5
pipe:///home/kodi/TVServer/playlist/ivysilani/streamer.sh CH_29
#EXTINF:-1 tvh-epg="0" tvg-logo="ctivysilani.png" group-title="iVysilani+" tvh-chnum="6.6" tvg-id="CH_30",CT iVysilani+ 6
pipe:///home/kodi/TVServer/playlist/ivysilani/streamer.sh CH_30
#EXTINF:-1 tvh-epg="0" tvg-logo="ctivysilani.png" group-title="iVysilani+" tvh-chnum="6.7" tvg-id="CH_31",CT iVysilani+ 7
pipe:///home/kodi/TVServer/playlist/ivysilani/streamer.sh CH_31
#EXTINF:-1 tvh-epg="0" tvg-logo="ctivysilani.png" group-title="iVysilani+" tvh-chnum="6.8" tvg-id="CH_31",CT iVysilani+ 8
pipe:///home/kodi/TVServer/playlist/ivysilani/streamer.sh CH_32
#EXTINF:-1 tvh-epg="0" tvg-logo="ctivysilani.png" group-title="iVysilani+" tvh-chnum="6.9" tvg-id="CH_MOB_01",CT iVysilani+ 9
pipe:///home/kodi/TVServer/playlist/ivysilani/streamer.sh CH_MOB_01
#EXTINF:-1 tvh-epg="0" tvg-logo="ctivysilani.png" group-title="iVysilani+" tvh-chnum="6.10" tvg-id="CH_MP_01",CT iVysilani+ 10
pipe:///home/kodi/TVServer/playlist/ivysilani/streamer.sh CH_MP_01
#EXTINF:-1 tvh-epg="0" tvg-logo="ctivysilani.png" group-title="iVysilani+" tvh-chnum="6.11" tvg-id="CH_MP_02",CT iVysilani+ 11
pipe:///home/kodi/TVServer/playlist/ivysilani/streamer.sh CH_MP_02
#EXTINF:-1 tvh-epg="0" tvg-logo="ctivysilani.png" group-title="iVysilani+" tvh-chnum="6.12" tvg-id="CH_MP_03",CT iVysilani+ 12
pipe:///home/kodi/TVServer/playlist/ivysilani/streamer.sh CH_MP_03
#EXTINF:-1 tvh-epg="0" tvg-logo="ctivysilani.png" group-title="iVysilani+" tvh-chnum="6.13" tvg-id="CH_MP_04",CT iVysilani+ 13
pipe:///home/kodi/TVServer/playlist/ivysilani/streamer.sh CH_MP_04
#EXTINF:-1 tvh-epg="0" tvg-logo="ctivysilani.png" group-title="iVysilani+" tvh-chnum="6.14" tvg-id="CH_MP_05",CT iVysilani+ 14
pipe:///home/kodi/TVServer/playlist/ivysilani/streamer.sh CH_MP_05
#EXTINF:-1 tvh-epg="0" tvg-logo="ctivysilani.png" group-title="iVysilani+" tvh-chnum="6.15" tvg-id="CH_MP_06",CT iVysilani+ 15
pipe:///home/kodi/TVServer/playlist/ivysilani/streamer.sh CH_MP_06
#EXTINF:-1 tvh-epg="0" tvg-logo="ctivysilani.png" group-title="iVysilani+" tvh-chnum="6.16" tvg-id="CH_MP_07",CT iVysilani+ 16
pipe:///home/kodi/TVServer/playlist/ivysilani/streamer.sh CH_MP_07
#EXTINF:-1 tvh-epg="0" tvg-logo="ctivysilani.png" group-title="iVysilani+" tvh-chnum="6.17" tvg-id="CH_MP_08",CT iVysilani+ 17
pipe:///home/kodi/TVServer/playlist/ivysilani/streamer.sh CH_MP_08
Soubor je samozřejmě obsažen v níže uvedeném zipu.

Generace EPG

Jak už jsem uvedl, generátor epg používá data z hbbtv serveru České televize. Lze použít i data přímo ze služby iVysílání, vyjde to přibližně nastejno. Jen tada data z hbbtv se zpracovávají lépe, protože jsou k diposzici přímo ve formátu json. Generace se spouští sciptem epg.sh, je tedy třeba toto spouštění v systému naplánovat. Jak často, to je otázka, já osobně používám 30 minutovou periodu, jiní používají 15 minut, ale je to asi jedno. Zátěž systému není nijak zásadní, píše nepatrná, takže jde jenom o to, jak rychle se případná změna v epg promítne do vašeho systému. Kritické to může být v případě, kdy se epg pro pořad objeví až těsně před zahájením jeho vysílání. Zatím jsem zanamenal nejkratší čas přibižně jednu hodinu. Většinou je ale těch hodin několik.

Generaci provádí ve scriptu spuštění python program epg.py. Generuje se soubor xmltv a do Tvheadend se dostane prostřednictvím externího xmltv graberu. Je tedy třeba mít tento graber v Tvheadend povolený. K uložení se ve scriptu používá aplikace socat. Není-li k dispozcii (např. v *ELEC systémech instalovaná není), je místo ní možné použít např. program curl. Detailní popis python scriptu epg.py v samostatné kapitole.

Python script epg.py

Tento script, mimo vlastní generaci xmltv, provádí jednu důležitou akci, v rámci které ty kanály, které nemají definovaný pořad (tedy epg), označí v Tvheadend jako Disabled. To má za následek, že se epg pro tyto kanály v Kodi nezobrazí. Výrazně to pomáhý v přehlednosti epg. Má to ale jednu potíž, že změna stavu Enabled/Disabled kanálu se do epg v Kodi promítá nespolehlivě. Nepřišel jsem na to, jak tuto změnu do Kodi pormítnou 100% spolehlivě jinak, než restartem PVR doplňku pvr.hts. Toho se dá dosáhnout restartem celého Kodi nebo explicitním restartem doplňku, které ale 100% spolehlivý také není. Já jsem si sice do Kodi vyrobil jednoduchý doplněk, který na rozhraní Tvheadend zjišťuje stav Enabled/Disabled kanálů se zadaným tagem, a při změně restart vyvolá, ale asi tak 1x z 20 až 30 restartů dojde k zamrznutí gui Kodi, který se dá odblokovat pouze restartem celého Kodi, což je ale při zamrznutém gui docela problém (musí se to provést buď z ssh monitoru, např. v *ELEC systému pomocí systemctl restart kodi, nebo jiným excterním restartem aplikace nebo celého systému, záleží na typu instalace). Dále ten doplněk také přidám a popíši, ale jeho používání je pouze na vlastní nebezpečí.

Python script se parametruje pomocí dat uložených v souboru config.py, které je plný komentářů, takže je celkem jednoduché pochopit logiku toho, jak funguje a jak je třeba ho nastavit. Jen je třeba zachovat logiku parametrů a označení mezi playlistem a konečným nastavením v Tvheadend, případně v Kodi. Proto ostatně píši v úvodu, že celé je to určené pouze pro zkušenější uživatele jak Tvheadend, tak Kodi.

Aktuální verze 0.2.0

V aktuální verzi jseme do generace EPG doplnil generaci tzv. fake programů, ktreé jsou předřazeny nebo následují skutečné programy. Cílem je, pokrýt ty dny, pro které existuje pro daný kanál alespoň jeden program, tak, aby bylo EPG naplněno od půlnoci 1. dne do půlnoci psledního dne. Mělo by to jednak EPG zpřehlednit a jednak by to mělo (tedy doufám) pokrýt ty stavy, kde se změní kanál pro již do EPG dříve vložený pořad. Jiné řešení jsem v manídce funkcí api TVhedend nenašel.

Jádo generace bylo pro potřeby nového řešení dost zásadně upraveno a současně s tím jsem doplnil pokročilou funkci protokolování. Z toho důvodu se i změnil obsah souboru config.py, kde je možné úroveň protokolování zadat. Pokdu se tam nezadá, budu protokolování probíhat v úrovni INFO.

Další změny jsou v souboru epg.sh, který jsem doplnil o načetění parametrů z konfiguračního soubor config.ini, a do něj přesunul všechny definice potenciálně editovaných parametrů.

Ty soubory, které se změnily a u kterých předpokládám, že si je v předcozí verzi 0.1.0 uživatelé pravděpodobně editovali, v generaci nejsou. Nahradily je soubory se stejným jménem doplněným postfixem .sample. Máte na výběr, ponechat si původní soubory a podle .sample souborů si je upravit a nebo původní soubory smazat a .sample soubory nakopírovat do souborů s původními názvy (bez .sample). Týká se to souborů:
  • epg.sh
  • config.py
  • playlist.m3u8
Uznávám, že je to poněkud krkolomné, ale nic lepšího jsem zatím nevymyslel. 11

Data ke stažení

Celé řešení je určené k běhu v systému na bázi Linux. Předpokladem je existence Python interpreteru (verze 3, ale bude to fungovat i na verzi 2), dále pak ffmpeg a samozřejmě instalace Tvheadend s odpovídající parametrizací sítě iVysilani+ (viz playlist, kde jsou odkazy na ikony, apod.). Řešení využívá api Tvheadend, proto je třeba pro uživatele (přihlašovací údaje je třeba zadat do config.py), kterým se k api přihlašuje, nastavit správné parametry. Samozřejmostí jsou znalosti týkající se použití metody pipe:// v Tvheadend a spouštění scriptů touto metodou.

Jak jsem napsal výše, není to out-of-box řešení a vyžaduje to jistou minimální úroveň znalostí Kodi, Tvheadend a konec konců i Linux based systémů. Mým záměrem není psát step-by-step návod pro úplné laiky. Strávil jsme s tím už hodně času, kdy jsem hledal optimální řešení a to, co jsem nakonec zrealizoval, funguje. Nemám příliš prostoru ani času se tomu věnovat do podoby detailního popisu a je taky možné, že jsem na něco důležité zapomněl. Takže když na něco narazíte, klidně se ptejte, ale nečekejte ode mne podporu a pochopení typu, Jak nastavit cron nebo příznak spustitelnosti. To by ten, kdo si chce hrát s Tvheadend na této úrovni, měl umět.

Celá instalace je jeden zip, které se rozbalí do adresáře, kde bude umístěno všechno, co je pro správnou funkci třeba. Je třeba nastavit správná práva, vlastníky, přístupy a příznaky spustitelnosti tam, kde je to třeba (streamer.sh a epg.sh). A samozřejme zajistit periodické spouštění scriptu epg.sh, buď cron nebo system-d. A pak samozřejmě, správně naparametrovat Tvheadend - uživatele, síť, služby, mapování, kanály, epg, včetně epg graberu.


Přiložené soubory
.zip   ivysilaniplus-0.2.0.zip (Velikost: 257,36 KB / Stažení: 67)
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
#2
EPG CT Sport Plus

Hraji si s příjmem iVysílání prostřednictvím Tvheadend. Po prvním nadšení, kdy se mi, na základě analýzy webového klienta, podařilo rozchodit klasickou kombinaci playlist, ve které jsou volání scriptu streamer.sh pomocí metody pipe:// s parametrem id kanálu, a epg.sh script, který mi dokáže vygenerovat xmltv pro vybrané kanály, jsem ztroskotal na jediné věci, a to je epg pro kanály CT Sport plus. Je jasné, že bez jejich epg je příjem těchto kanálů nepoužitelný. Serverová strana aplikace jednotlivé pořady rozděluje mezi několik kanálů, ale epg, které by obsahovalo relace jednotlivých programů k těmto kanálům, se mi z dostupných zdrojů nepodařilo získat. Zkoušel jsem jak api rozhraní GRAPHQL, tak rozhraní pro webového klienta, ale v žádném z nich jsem nenašel nic, podle čeho bych pro pořady našel relaci ke kanálům, na kterých budou vysílány. Takže sice dokáži zjistit, jaké pořady a kdy budou vysílány, ale ne, na kterém kanále. 8

Nemá nebo nezná někdo způsob, jak takovou relaci získat? Stačilo by mi to alespoň pro aktuální den.
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
#3
@JiRo: pokud jsi schopný zjistit id pořadu (idec), můžeš zkusit zavolat https://api.ceskatelevize.cz/video/v1/pl...ility=true.

Použil jsem to jako workaround u živého vysílání, pro které to vrací v platformChannel unikátní ID kanálu. Nevím jestli to bude fungovat i pro budoucí pořady a vyžadovalo by to volání pro každý pořad z ČT Sport Plus.

Bohužel v tomhle mají EPG API řešené trošku neštastně, kde na vstupu není unikátní ID kanálu 11
 
Citovat
#4
@waladir: Díky, za snahu. Měl jsi pravdu, nefunguje to. 4 Idec z epg získám a když s ním pošlu request, vrací to různé informace - časy, statusy o možnostech přehrávání, ale na jakém kanálu se to bude přehrávat, to mezi nimi není. To se zřejmě vybere teprve v okamžiku zahájení živého přehrávání. To je docela škoda, protože já vlastně tohle celé dělám právě kvůli Sport Plus kanálu, abych ho dostal do Live TV v Kodi. To se mi povedlo, ale bez EPG je to prakticky k ničemu.

Jediné, co bych snad nějak dokázal by bylo, aktualizovat xmltv v okamžiku předpokládaného zahájení vysílání každého pořadu. Bylo by to sice komplikované řešení a pro uživatele s ne úplně užitečnou informací, ale alespoň něco. Ani nevím, jestli se mi do toho chce. 11
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
#5
Tak bohužel trik funguje jen u aktuálně běžících pořadů, ne u vysílaných v budoucnu. V tom případě se vrátí chyba Forbidden.
 
Citovat
#6
@waladir: Tak nakonec to bylo jednodušší, než jsem si myslel, ale musel jsem se více ponořit do api, k čemuž jsem drze využil tvůj kód z doplňku. Mám tak k dispozici pouze nejbližší vysílané pořady na kanálech CT Sport+, ale to už bylo jasné dříve, že dlouhodobé epg pro tyto kanály k dispozcii nebude. Bude to samozřejmě znamenat periodickou obnovu epg pro kanály CT Sport+ s kratší periodou než pro ostatní, ale to už není tak složité.
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
#7
První pokus s přenesením epg CT Sport+ do Tvheadend a následně do Kodi byl úspěšný. Je to "řídké", ale takové ono to obsazení těchto kanálů pořady prostě je. Zatím tam nejsou žádné doplňující informace, případně informace o živém vysílání, ale i to se pokusím ještě doplnit.

   

A ještě mám další dva úkoly. První, celé to zautomatizovat a naladit generaci epg tak, aby se do epg dostalo co nejvíce infromací a co nejdříve. A druhá, pokusit se ve vzhledu v Kodi ty kanály, pro které nebude k dispozici žádné epg, skrýt. Ale to už je čistě záležitost vzhledu a do tohoto tématu to tak úplně nepatří.

A poslední poznámka. Zatím jsem epg ladil pro Tvhedend a pro příjem kanálu CT Sport+, protože epg pro ostatní CT kanály přijímám primárně z jiných zdrojů. Myslím si, že není problém to samé připravit pro všechny CT kanály a také pro IPTV Simple Client. Proto jsem taky toto téma umístil do Live TV & PVR subfóra. Tak trochu si říkám, že by ale nakonec bylo lepší doplnit takovou funkci spíše do doplňku iVysílání, a tak to chápejte jako zmínku pro @waladir:. 1
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
#8
@JiRo: přiznám se, že jsem o tom ani neuvažoval, ale uvidíme  4
 
Citovat
#9
Já na EPG Sport+ kanálů používám tento link: https://hbbtv.ceskatelevize.cz/online/se...nline.json
Aktualizuji to co 15min.
 
Citovat
#10
@pbk: Jo jo, já používám stejná data, jen přes api Graphql. Aktualizace mi běží po 30 minutách.

To, že je to takhle dostupné přímo, jsem nevěděl. Mohl jsem si ušetřit práci. Díky.

@pbk: Tak jsem si to porovnával a vidím mezi daty z api Graphql a https://hbbtv.ceskatelevize.cz/online/se...nline.json rozdíl. V datech přes api některé budoucí pořady chybí. Ale začínají až za více jak 2 hodiny, tak předpokládám, že se tam objeví později. Ale samozřejmě, čím dříve se ty pořady v epg objeví, tím lépe.
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
#11
Ahoj
Webgrad plus mame ini české televize a i sport plus epg..
Kdysi jsem spal požadavek a při dnešní aktulaizaci jsem je tam našel..

Panové super.. kdy bude ke stažení zakladní verze doplňku ... planujete tvheadend scriptík ?
 
Citovat
#12
@martinchromy1985: Aha, nevěděl jsem, kdo ten požadavek dával, teď už vím.

Díval jsme se na to už dříve a je to nedodělek. A protože nevidím důvod, proč by tam to ini pro ČT mělo být, protože zdrojů pro ČT je ve wg++ poměrně dost a většinou jsou kvalitní, tak jsem se tím nezabýval. V tom ini jsou chyby, takže ani výsledné EPG pro tradiční kanály ČT není pravděpoodbně 100% správně. Pravda, nezkoušel jsme to, jen jsme se díval do vygenerovaného xml, a těch chyb jsem tam viděl poměrně dost. Ale to by se snad ještě dalo opravit, pokud dá někdo autorům zpětnou vazbu. Ale u Sport+ kanálů je to ještě o chlup složitější, tam je třeba na to jít trochu jinak. A nejen tím, jak grabovat, ale i tím, že v případě Sport+ nejde o jeden kanál. Však o tom v tomto tématu výše píšeme...

   

Na vysvětlenou...

Teoreticky může Sport+ vysílat až na 12 17 kanálech současně. Tzn. že i EPG musí být generované ne pro jeden kanál Sport+, ale potenciálně pro jakýkoliv z těch 12 17 (včera bylo pro Sport+ například použito postupně až 6 nebo 7 kanálů). Jinak se to v Tvheadend nebo IPTV Simple Client provozovat nedá.

Teď právě mi wg++ vygenerovalo tři programy, všechny se začátkem 17:55, ale všechny s jedním společným kanálem Sport+, což samozřejmě nemůže fungovat. Naopak mi ale nevygenerovalo dva další, které ještě dneska na Sport+ kanálech budou vysílány. Viz výše vložený screenshot.

Další specifikou kanálů Sport+ je, že přiřazení programů na jednotlivé kanály se provádí až v den vysílání daného pořadu, s předstihem pouze několika hodin. Takže aby to nějak fungovalo, musí se EPG grabovat opakovaně, s nějakou kratší periodou. Někdo (@pbk:) má tu periodu 15 minut, já (zatím) 30. A i tohle by pro wg++ asi mohl být další problém.
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
#13
Testování iVysílání v Tvheadend je u konce, IPTV Simple Cilent jsem ještě nezkoušel, ale nevidím, že by tam mohl být nějaký problém. Podařilo se mi, díky informacím od @pbk:, výrazně zjednodušit generaci EPG pro Sport+ kanály. Generátor mi běží peridodicky každých 30 minut. Úloha je, díky doporučenému zdroji dat, celkem jednoduchá a rychlá, takže nevadí, když ji spouštím každých 30 minut (klidně by mohla bežet i častěji), což je pro Sport+ kanály nutností. Generuji pouze tyto sportovní kanály, protože jiné programy ČT z iVysílání přes Tvheadend přijímal nebudu. Na to používám jiné zdroje (DVB-T a OTT/IPTV služby). Ale vrátím se ke generaci celého programu, tedy všech kanálů, abych to měl kompletní v případě, pokud by někdo měl zájem využívat celé iVysílání jako zdroj pro Live TV.

Díky pokusům jsem rozšířil známou množinu kanálů, které rozhraní webu iVysílání nabízí, což je na jednu stranu dobře, na druhou stranu je to ale pak s problémem vysokého počtu kanálů ještě horší. Nyní je jich tedy celkem 17. A to je jeden z důvodů, který celé použití komplikuje. Mít v EPG celkem 17 kanálů vyhrazených pro Sport+ kanály a v nich mít aktivní nabídku pořadů pouze na části z nich (např. dnes to bylo za celý den pouze 5 pořadů na 5 kanálech) není příliš příjemné. Zkoušel jsem nějak jednoduše kanály bez obsahu zablokovat, aby se v Kodi nezobrazovaly, ale vždycky je to spojené s nějakou komplikací, hlavně pak nestandardním řešením. Navíc, každý postup musí být vždycky obsahovat zastavení/povolení PVR doplňku (Tvheadend) nebo změnu obsahu playlistu (IPTV Simple Client). Navíc, v případě dedikovaného Tvheadend serveru k tomu přibývá zajištění přenosu informace o tom, které kanály nemají žádné pořady (ještě možná zkusím databázi EPG v Kodi, jestli bych nemohl využít informace z ní). Řešení tohoto problému tedy snad existuje, i když je poměrně krkolomné a komplikované. Skoro si říkám, jestli tedy nepřijdu na nějaký jednoduchý trik, jestli vůbec stojí za to se do toho pouštět.
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
#14
iVysílání, externí přehrávač a platnost manifestu

Schválně jsem použil terminologii z doplňků pro Live TV, tedy externí přehrávač, aby bylo jasné o co běží. Prakticky to znamená při použtí externího přehrávače, případně i IPTV Simple Client, v případě, kdy playlist nebude obsahovat volání nějakého doplňku, ale přímo adresy steramů (MPEG-DASH manifesty). Tady je podstatnou informací, že platnost takového manifestu, alespoň podle toho, co jeho adresa obsahuje (údaj expiry), je 60 minut. Což znamená, že aktualizace playlistu se v tomto případě bude muset provádět každou hodinu.

Aktualizaci samozřejmě není třeba provádět v případě, kdy obsahem playlistu je volání doplňku (v Kodi) nebo scriptu (v Tvheadend), které si o aktuální manifest žádají až při spuštění kanáku.

Aktualizace EPG kanálů Sport+

Již nějakou dobu sleduji strategii, podle které se akualizuje EPG pro kanály Sport+ a nemohu říci, že je v tom nějaká pravidelnost. Včera se EPG pro první pořady, které začínaly odpoledne, objevilo někdy kolem 10 hodiny dopoledne, další pak přibyly později. Dnes se první pořad objevil někdy kolem 3 hodiny ranní, další pak někdy nad ránem. V spoučasné chvíli (8:50) je tedy k dispozici EPG pro dva pořady se začátky v 15:25 a 17:55, chybí ještě EPG pro pro pořad, který začíná ve 20:25. Je to v relaci s tím, co je vidět v této chvíli i na aplikaci iVysílání na Smart TV, kde jsou také jen dva pořady.
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
#15
Změna kanálu pořadu Sport+

Dnes došlo k další komplikaci, kdy došlo v průběhu dne k přesunu pořadu z jednoho kanálu na jiný. Díky tomu je ten pořad teď vidět v EPG obou kanálů. Jak toho původního, tak toho nového. To už je ale situace, kterou s ohledem na to, jak se EPG pro tyto kanály generuje, zatím jednoduše vyřešit nedokážu. Tak snad k tomu nebude docházet často.

   
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
#16
Obsah kanálů...

A aby to nebylo tak jednoduché, nyní mi teprve došlo, že ty kanály s dynamicky přidělovaným obsahem nejsou využívány jen pro kanály Sport+, ale vysílají se v nich i jiné typy pořadů. Konkrétně přenosy ze Sněmovny a Senátu Parlamentu. Takže tohle opět poněkud komplikuje situaci, a dynamiku toho celého to posouvá ještě o kousek dále, ale snad to není nic, co by se nedalo vyřešit, protože určitou míru dynamiky lze vyřešit nativními funkcemi Tvheadend.

Co to znamená? Nejspíše opřít příjem o kanály identifikované podle označení, které pro něj používá api, tedy CH_25, .... CH_32, CH_ CZ_MOB_01, CH_MP_01, ... CH_MP_8 a až rámci scriptu pro EPG jim dynamicky přidělovat jména podle toho, jaký obsah aktuálně vysílají. Bohužel ale ne všechno, co se v těch kanálech vysílá, je identifikovnáno v EPG. Typicky je to tak, že na stránkách iVysílání je k dispozici (tedy to, co jsem zatím zachytil) vysílání sportovních událostí (CH_26 až CH_32 a CH_MOB_01) a pak už jen vysílání ze Senátu Parlamentu (CH_25). Vše ostatní už identifikovaní v EPG není (např. vysílání ze Sněmovny Parlementu, které se vysílá na CH_26). Ale Parlament mě trápí nejméně, stejně to všechno dělám jen kvůli sportovním kanálům. Jen mě štve, že při sestavování EPG těchto kanálů a pořadů v nich, nejsou v České televizi důslední. Závěr je tedy takový, že i když dnes už sportovní kanály přijímat dokáži, včetně zobrazení jejich EPG (pochopitelně ale jen v rámci aktuálního dne), celé to ještě nakonec musím předělat. Alespoň si dodělám detailní monitorování toho, jak vlastně iVysílání tyhle kanály dlouhodobě využívá a podle toho budu moci navrhnout nějakou smysluplnou strategii, jak s tím v Tvheadend a Kodi pracovat ještě lépe.

To je zatím pro tuto chvíli vše. Když bude mít někdo nějaké poznatky nebo nápady, může přispět.
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
#17
Změna kanálu pořadu Sport+ pokračuje

Tak ukazuje se, že to, co jsem pokládal za mimořádnou událost, tedy že v průběhu dne došlo k přesunu pořadu z jednoho kanálu na jiný, bude zřejmě standardní záležitost. Dnes k tomu došlo opět. Od rána 3:00 se postupně plnilo EPG pořady v jednotlivých sportovních kanálech a v 8:00 se některé pořady přesunuly z původních kanálů do jiných. Takže teď jsou v EPG 2x a někdy dokonce to původní umístění koliduje s jinými pořady, které byly do původního kanálu nově vloženy. V této podobě je to samozřejmě absolutně nepoužitelné.

Používám pro toto EPG externí grabber, a tam nemám možnost existující záznam v databázi smazat. Ještě musím tedy vyzkoušet, zda to u interního půjde a zpracovávat EPG i Vysílání přes něj. Což bude znamenat spouštět i ten interní vždy po každé změně EPG, což ale problém není.

Povolení/zakázání kanálů iVysílání

Přemýšlel jsme o tom, jak zajistit, aby kanály iVysílání, které nemají žádný program (podle EPG) a běží na nich buď video smyčka nebo nějaký náhradní stream, vypadly ze seznamu kanálů v Kodi. Řešení se nabízelo několik, od úpravy skinu (kde to ale možné ze známých důvodů není), přes zásah do databází (aktuálně EPG16.db a TV46.db) ve všech klientech Kodi až po vlastní Tvheadend. Správné a koncepční řešení je jasně to poslední, kde to ale naráželo na to, že se mi nedařilo v api Tvheadend najít tu správnou metodu a jít cestou zásahu do konfiguračních souborů jsem pokládal až za tu nejzaší možnost. Nehledě na to, že ani ta by patrně nakonec nevedla k úspěchu, protože aby se taková změna do běžícího Tvheadend promítla, je zpravidala nutný restart celé aplikace, což je samozřejmě prakticky nepoužitelné. Takže jsem nakonec použil osvědčený způsob, "když nevíš nebo neumíš, tak se zeptej", a spravil to dotaz na fóru Tvheadend.

Postup pro povolení/zakázání kanálu v Tvheadend tak může vypadat takto:
 
Kód:
curl -d 'node=[{"uuid":"your_channel_uuid","enabled":false}]' http://user:pass@your.ip.address/api/idnode/save

Hodnotu uuid kanálu lze najít tabulce, která se dá získat takto:
 
Kód:
curl http://user:pass@your.ip.address:9981/api/channel/list?limit=10000

a její začátek pak může vypadat nějak takto:
 
Kód:
{
    "entries": [
        {
            "key": "76a283f8bf73f661c55c22bc5b96ce7e",
            "val": "CRo RADIOZURNAL"
        },
        {
            "key": "a15c91b683b3e8cb94932149ed2a7e74",
            "val": "CT 1"
        },
        {
            "key": "b2c15203426393152f0ab497d7fb4dc4",
            "val": "CRo DVOJKA"
        },
        {
            "key": "2c9772ce5abc1e0ef763ced8b9606f98",
            "val": "CT 2"
        },
        {
            "key": "31c6cf0907aec916dd933742429562de",
            "val": "CRo VLTAVA"
        },
        {
            "key": "bff219cb73822385ca0e861923a1bb29",
            "val": "CT D/art"
        },
        {
            "key": "030543be8842421324874ac5c81d556f",
            "val": "CRo D-DUR"
        },
        {
            "key": "98b82b5c42120c5c6d47f10836a2db5d",
            "val": "CT 24"
        },
        {
            "key": "c5ba25e132e5161608dbd6e877ab4b2c",
            "val": "CRo JAZZ"
        },
        {
            "key": "ea935239401dcadc50bf140d7531733b",
            "val": "CT sport"
        },
        {
            "key": "646fc73456703f283035ed665924a82e",
            "val": "CT sport+ 1"
        },
        {
            "key": "81dcd21d2f17ee7e0ff4694e57a1d5ac",
            "val": "CT sport+ 2"
        },
        {
            "key": "45f554b93ff62589e64473b046df327e",
            "val": "CT sport+ 3"
        },
        {
            "key": "7978eb56c97f6b9496213260a3ff9d94",
            "val": "CT sport+ 4"
        },
        {
            "key": "7f9bc2b6382845c8bb302be8a0a2bf92",
            "val": "CT sport+ 5"
        },
        {
            "key": "efa58a564b22ad2f9b5d723b6c4b2c29",
            "val": "CT sport+ 6"
        },
        {
            "key": "9e955d75f7bfd8474b04544efc171c47",
            "val": "CT sport+ 7"
        },
        {
            "key": "7e24256a29bb0b26ba00d20bfb229c96",
            "val": "CT sport+ 8"
        },
        {
            "key": "019a9ecc5d1fbe4fdf7bb41d9128efd8",
            "val": "CT sport+ 9"
        },
        {
            "key": "a28aa2738ec49a23904070db8c4efa72",
            "val": "CT sport+ 10"
        },
        {
            "key": "d78298ef4ddabb80a43e1962b01594d4",
            "val": "CT sport+ 11"
        },
        {
            "key": "adf2f6df56d2282876e7f7af27f5b899",
            "val": "CT sport+ 12"
        },
        {
            "key": "c0a434d26cfa7130ac199a49dcb22fe2",
            "val": "CT sport+ 13"
        },
        {
            "key": "79a7b05447345a3bc0d96cb4eeec3a5f",
            "val": "CT sport+ 14"
        },
        {
            "key": "3f1ea2ab5e4c3c5dca4a3469c6ff9c9e",
            "val": "CT sport+ 15"
        },
        {
            "key": "e160ff6300c373622ec174fb6baf3c9a",
            "val": "CRo RADIO WAVE"
        },
        {
            "key": "706adbbd9f9753cf371cb0353a1b02de",
            "val": "CT iVysilani 1"
        },

Příklad je pro použití curl, s kterým jsem v této podobě nebyl moc úspěšný. Server vracel kód 401 a žádná data. Pro první pokusy jsem nakonec použil wget, který sice také nahlásili 401, ale přesto data stáhl. Pro praktické použití v python scriptu je samozřejmě třeba použít vhodnou metodu, např. request.

Pro to, aby api Tvheadend fungovalo správně, je potřeba aby uživatel v Tvheadend, pod kterým se k api přihlašujete, měl nastavenou položku Web interface a v základním nastavení Tvheadend, Configuration > General > Base > HTTP Server Settings byla položka Authentication type nastavena na Plain nebo Both plain and digest.
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
#18
Dynamická generace playlist - jiná metoda příjmu sportovních kanálů

Výše popisované a diskutované řešení a obtíže, které se díky specifickému chování na straně serveru služby iVysílání objevují, by možná bylo možné obejít tak, že by součástí změny v EPG byla i odpovídající změna v playlistu. Já zatím, v Tvheadend mám playlist statický, a dynamiku do celého řešení dostávám právě skrze EPG a možnosti změny názvu kanálů a jejich ikon, případně i nově prostřednictvím zákazu/povolení kanálů. Pro použití v IPTV Simple Client a také (snad) v Tvheadend, ale tam pouze při použití Bouqets umožňující automatické mapování, by ale bylo možné potřebnou dynamiku zajistit tak, že by se při každé změně v EPG změnil i playlist. Ponese to sebou zase jiné komplikace, o některých zatím jen tuším, jiné se možná objeví později, ale plánuji vyzkoušet i tuto cestu.
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
#19
Ty mě budeš tím seriálem tak dlouho dráždit, až se práci s Tvheadend a Webgrab++ také naučím.  1
X96max plus 4/32 + CE 21 + skin Confluence DS / TV Samsung QE55Q6FNA
X96max plus 4/32 + CE 20.5 + skin Confluence DS

AVR Denon 1600H / Dali Spektor 5.1
Win10pro + Kodi19.5
NAS Synology 215j 3TB Raid1
Router Turris 1.1
 
Citovat
#20
@jkmh: No, pro běžné používání nejsou Tvheadend ani Wg++ žádná výzva, většinou chodí po "vybalení z krabice", ale jak po nich chce člověk něco extra, tak to je už jiná. 1
Jsem (až na výjimky) pouhým čtenářem fóra.
Nepokračuji tedy ani v tématech, která jsem založil.
To platí i pro doplňky Kodi a další aplikace, které jsou s takovými tématy spojené.
 
Citovat
  


Přejít na fórum:


Prochází: 2 host(ů)