• 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:
  • 5 Hlas(ů) - 4.2 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Playlist - struktura, obsah a parametry
#1
Úvodem

V celé řadě témat tohoto fóra se hovoří o playlistech, a to v různých souvislostech. Nikde ale není zcela jasně a konkrétně řečeno, jaká je jejich struktura, obsah a význam jejich parametrů. Částečně proto, že většina návštěvníků tohoto fóra to, jak má takový playlist vypadat, ví. Na druhou stranu, i když to ví, nebo si alespoň myslí, že to ví, tak mnohdy jsou to spíše jen sesbíraná fakta a návody, mnohdy ne úplně 100% správná, která ale o podstatě, zejména významu a obsahu, moc neříkají. Prostě to tak lidé dělají, protože to někde viděli.

Playlisty obecně v Kodi zajišťují nebo podporují poměrně širokou množinu funkcí. Vzhledem k tomu, že jsme v subfóru Live TV & PVR, hodlám se v tomto tématu věnovat pouze playlistům používaných pro tyto účely a žádám ostatní, aby sem nezatahovali témata týkající se funkcí videa, hudby nebo tzv. chytrým seznamům stop. Na tuto problematiku si založte vlastí témata. To, co tu najdete bude kromě nezbytného úvodu, kdy popíšu playlisty, které nás zajímají poněkud obecněji, věnováno pallyistům pro PVR addon IPTV Simple Client a také playlistům pro aplikaci TV backend serveru Tvheadend. V druhém případě se sice nejedná o aplikaci Kodi, ale je s Kodi velmi úzce svázaná a navíc je pro ni v Kodi k dispozici jeden z nejčastěji používaných PVR addon, takže že si myslím, že to bude užitečné.

A na závěr úvodu jen poznámka. Mnozí namítnou, že je takovéto téma zbytečné, protože lze o celé problematice najít na internetu a v příslušných fórech poměrně vyčerpávající informace. Podle mne to ale zbytečné není. Kdyby to zbytečné skutečně bylo, tak bychom nebyli svědky neustále se opakujících debat o tom, jak mám playlist vypadat, co je vlastně jeho obsahem, atp., které i dneska na tomto fóru probíhají.

No a na úplný závěr úvodu... Budu rád, pokud mě na případně zjištěné nedostatky tohoto popisu upozorníte. Snažil jsme se poctivě většinu věcí, o kterých tu píši, ještě jednou ověřit, ale chybička se přeci jen může vloudit. Nehledě na to, že se i mezi různými verzemi a instalacemi Kodi mohou vyskytovat rozdíly. To samé platí i pro případy, kdy nebude popis dostatečně ilustrativní. Rozhodně v tomto případě nikoho nepošlu do háje, a budu se snažit text, poznámky a příklady doplnit tak, aby to bylo jasné pokud možno každému. 

Co je to playlist?

Přeskočím historii a přejdu rovnou k typu playlistu, který nás zajímá. Jde o tzv. rozšířený (extended) typ playlistu, obsahující adresy streamů na kterých může být k dispozici trvale vysílaný obsah, tedy například OTT vysílání TV nebo Rádií. Obecně je jedno, jestli jde o vysílání rozhlasového nebo televizního kanálu. Jeho struktura vypadá následovně:

Kód:
#EXTM3U
#EXTINF:-1,<jméno_kanálu_1>
<adresa_streamu_1>
#EXTINF:-1,<jméno_kanálu_2>
<adresa_streamu_2>
...
#EXTINF:-1,<jméno_kanálu_n>
<adresa_streamu_n>

Pozn. - Jak IPTV Simple Client, tak Tvheadend, umožňují na místě adresy streamu použít i jiný typ parametru. V případě IPTV Simple Client to může být volání Kodi addon, v případě Tvheadend to může být volání libovolné aplikace v systému. Tomuto tématu se hodlám věnovat až v závěru mého povídání. Co se týče IPTV Simple Client, můžete se zatím o tom něco dozvědět v jiném mém příspěvku Jak dostat video addon O2TV Go do LiveTV na tomto fóru.

Pozn. - U čísla -1 v řádku začínajícím #EXTINF bych se rád zastavil. U playlistů, které místo na streamy odkazují na soubory, je místo čísla -1 uváděno číslo, udávající délku přehrávaného osbshu v minutách. U trvale vysílaného streamu tento údaj nemá smysl, proto se do toho parametru zadává hodnota -1 (nekonečná délka) nebo 0. Chybu nezpůsobí ani to, když toto číslo bude chybět úplně. Já osobně doporučuji do playlistů obsahující trvale vysílané stream hodnotu -1 uvádět vždy. Aby to bylo zřejmé.

Jak IPTV Simple Client, tak Tvheadend používají kromě tohoto obecného schématu ještě další obsah, kterým základní obsah playlistu rozšiřují o další infromace. Nazval jsem je rozšířené parametry. Nejsou povinné, ale umožní do navazujících aplikací dostat další zajímavé i potřebné informace. Ta rozšíření jsou si pro IPTV Simple Client i Tvheadend dost podobná, ale pozor! I stejně vypadající parametry mohou obě aplikace zpracovávat méně či více odlišným způsobem. A už v žádném případě to neznamená, že by šlo o nějaké rozšíření standardu playlistu. Naštěstí to v drtivé většině případů funguje tak, že zadáte-li rozšířený paramatr který daná aplikace nezná, tako ho prostě v tichosti ignoruje. Je třeba vždy vědět, pro jaký účel (jakou aplikaci) se daný playlist vytváří a podle toho přizpůsobit tvar i obsah popisu těchto rozšíření. Struktura playlistu s rozšířením pak obecně vypadá takto:

Kód:
#EXTM3U [<rozšířené_parametry]
#EXTINF:-1[ <rozšířené_parametry>],<jméno_kanálu_1>
<adresa_streamu_1>
#EXTINF:-1[ <rozšířené_parametry>],<jméno_kanálu_2>
<adresa_streamu_2>
...
#EXTINF:-1[ <rozšířené_parametry>],<jméno_kanálu_n>
<adresa_streamu_n>

Obecně jsou rozšíření parametry zadávány jako dvojice <identifikace_parametru>=<parametr>, konkrétně například tvd-id="ČT1". Je-li v daném řádku více parametrů (tedy více dvojic), oddělují se mezerou.

Kódování znaků souboru playlistu, typy souborů
Credit @playman22

Je třeba si dát pozor na to, jakým editorem a s jakými parametry soubor playlistu vytváříte. Zvlášť, pokud jde o národní znaky. Platí obecná zásada, že by mělo být použito co nejuniverzálnější kódování, což v konečném důsledku vede k doporučení používat UTF-8, což obecně platí pro celé Kodi. Pro správnou funkci načítání EPG bychom měli v každém případě dodržet soulad mezi kódováním použitým v playlistu a kódováním v souboru xmltv s daty EPG. To je podmínkou správné funkce párování kanálů v playlistu a xmltv. Nejčastěji se problém v této oblasti projeví tak, že kanály s identifikací používající národní znaky (ČT1, ČT2, ...) mají EPG prázdné, zatímco u jiných (Nova, Prima, ...) je EPG v pořádku. 

Co se týče typů souborů (tedy tradiční rozdíl DOS/Windows nebo Unix), tak v případě typu souboru playlistu je to jedno. Je možná jak ve Windows, tak v Linux (či jeho distrech typu *ELEC) použít libovolný z obou typů.

Tady trochu odbočím, ale myslím, že to bude užitečné. Kdo to myslí s Kodi vážně, měl by začít používat některý z editorů vyšší úrovně - Notepad++PSPad a jim podobné, spíše než ty jednoduché, jako je Notepad z Windows. I když i u něho si můžete při uložené zvolit typ kódování. Jednak tyto soubory poskytují celou řadu možností zobrazení parametrů editovaných souborů a nástroje, jak řadu parametrů a vlastností změnit, jednak nabízí nespočetné možnosti formátování (včetně barvení) textu pro celou řadu typů strukturovaného obsahu (programovací jazyky, soubory xml, json, atp.). Jen na ukázku, na první obrázku je screenshot zobrazení souboru xmltv v editoru Notepad, na druhém pak ten samý soubor, jak je zobrazen v editoru Notepad++.
[attachment=5925][attachment=5926]

Popis parametrů playlistu IPTV Simple Client

Rozšířené parametry v řádku #EXTM3U

tvg-shift="<hodiny>"

Posune časové údaje v datech xmltv pro všechny kanály o zadaný počet hodin. Konkrétně tedy řádek může vypadat #EXTR3MU tvg-shift=2 nebo #EXTR3MU tvg-shift=-1. Tento parametr se použije v případě, že jsou časové údaje ve vámi použitém xmltv posunuté vzhledem ke skutečnému času zahájení a ukončení vysílání všechn pořadů ve všech kanálech vůči času ve vaší aktuální lokalitě nebo pokud došlo k nějaká špatné interpretaci časových údajů v xmltv (ať už z jakýchkoliv příčin, například přechodu na letní čas). Pokud ale vše funguje tak, jak mám tedy jsou správné údaje v xmltv, včetně posunu vůči UTC, správně nastavený čas a lokalita v Kodi a také správná funkce IPTV Simple Client, není třeba tento parametr vůbec používat.

Rozšířené parametry v řádku #EXTINF

tvg-shift="<hodiny>"

Zajistí shodnou funkci jako v případě použití v řádku #EXTM3U, jen s tím rozdílem, že se časový posun provede pouze u kanálu, u kterého je použit.

tvg-id="<xmltv_id_kanálu>"

Zajistí párování daného kanálu v playlistu vůči xmltv. Páruje se zadaná hodnota parametru <xmltv_id_kanálu> vůči id kanálu v xmltv, tedy vůči obsahu tagu channel, označovaného také jako channel-id. Pokud není tento parametr použit (a není-li použit ani tvg-name) páruje se podle <jména_kanálu> z playlistu vůči obsahu xmltv tagu channel. V případě, že se v jednom řádku použije jak tvg-id tak tvg-name, použije se vždy tvg-name.

tvg-name="<xmltv_jméno_kanálu>"

Zajistí párování daného kanálu v playlistu vůči xmltv. Páruje se zadaná hodnota parametru <xmltv_jméno_kanálu> vůči jménu kanálu v xmltv, tedy vůči obsahu tagu display-name. Mál-li to fungovat i v případě, že ve jménu kanálu jsou mezery, je třeba je v tomto parametru nahradit znakem podtržítko.

Příklad - V souboru xmltv máme například EPG pro kanál ČT 1 s hodnotami channel-id ČT1 a display-name ČT 1 a chceme definovat playlist pro kanály ČT 1 a ČT 1 HD. Chceme, aby oba kanály tedy využívaly stejné EPG. Řádky #EXTINF v plalyistu by pak pro oba kanály mohly vypadat například takto:

#EXTINF:-1,tvg-id="ČT1",ČT 1
#EXTINF:-1,tvg-id="ČT1",ČT 1 HD

nebo v jiné variantě

#EXTINF:-1,tvg-name="ČT_1",ČT 1
#EXTINF:-1,tvg-name="ČT_1",ČT 1 HD

Pozn. Není důvod využívat oba parametry tvg-id i tvg-name současně, obvykle postačí si jeden vybrat a toho se držet. Není ale třeba používat žádný, to v případě, odpovídají-li jména všech kanálů z playlistu channel-id v xmltv. To se dá dobře zajistit, pokud si XMLTV vytváříte sami, například pomocí aplikace WebGrab+. Pokud však používáte nějaká externí data xmltv, často je třeba parametr pro explicitní párování použít. Otravné vkládání podtržítek místo mezer pak jasně preferuje používání parametru tvg-id.

tvg-chno="<číslo_kanálu>"

Vnutí danému kanálu zadané číslo. Jinak, jak známo, není-li tento parametr použit, jsou čísla kanálů z playlist přiřazována sekvenčně, počínaje číslem kanálu, zadaném v nastavení IPTV Simple Client. Zadání parametru také způsobí, že případné další sekvenční přiřazení následujícího čísla kanálu z playlistu, se začne počítat od posledního takto zadaného čísla. 

tvg-logo="<identifikace_souboru>"

Adresa (url) loga kanálu. Buď obsahuje celou cestu odkazující na příslušný soubor, například pro tolik populární sadu od @marhycz, by takový adresa loga pro ČT 1 vypadala takto https://marhycz.github.io/picons/640/ct1.png. IPTV Simple Client ale umožňuje část cesty zadat jednorázově v nastavení. Zadáme-li tedy například v nastavení addon část cesty jako https://marhycz.github.io/picons/640/, můžeme pak do parametru tvg-logo vložit pro daný příklad pouze ct1.png. Říznout se to dá samozřejmě i jinde, ale musí to s ohledem na typ adresy mít příslušnou logiku. Samozřejmě není třeba používat pouze soubory z internetu, máte-li loga umístěná někde u sebe (v počítači nebo na domácí síti), stačí v nastavení addon zadat příslušnou část místní cesty. I tady platí, pokud není parametr definován, pokusí se celou adresu loga addon sestavit s pomocí jména kanálu.

group-title="<skupina_kanálů_1>;<skupina_kanálů_2>;...<skupina_kanálů_n>"
Credit @playman22

Kanál se zařadí do skupiny kanálů. Lze lze zadat více skupin než jednu, oddělovačem jména skupiny je znak ; (středník/bodkočiarka). Skupiny kanálů se pak dají využívat v Kodi k filtrování obsahu jak seznamu kanálů, tak zobrazení EPG.

radio="true"

Tak trochu speciální typ parametru. Při jeho použití se daný kanál místo do seznamu kanálů Televize zařadí do seznamu kanálů Radio. Při jeho použití je ale třeba dát pozor na vazbu s předchozím parametrem, tedy group-title. Označíme-li tímto parametrem nějaký kanál, která je zároveň zařazen do nějaké skupiny, označí se automaticky příznakem Radio všechny kanály, které jsou do této skupiny zařazeny. Rozhodující pro zařazení do skupiny radio je první použití, rep. nepoužití tohoto parametru při zařazení prvního kanálu do dané skupiny. 

Jinak řečeno, nebude-li mít kanál, který bude v playlistu jako první zařazen do dané skupiny nastaven parametr radio=true, budou všechny kanály z této skupiny, bez ohledu na to, zda budou mít tento parametr nastavený, zařazeny do seznamu kanálů Televize. A naopak, tedy, bude-li mít kanál, který bude v playlistu jako první zařazen do dané skupiny nastaven parametr radio=true, budou všechny kanály z této skupiny, bez ohledu na to, jak budou mít tento parametr nastavený, zařazeny do seznamu kanálů Radio. Této komplikaci se dá vyhnout bud tím, že nepoužijete zařazení do skupiny nebo budete důsledně dbát na to, aby kanály Radia a Televize neskončily v jedné skupině.

Popis parametrů playlistu Tvheadend

...bude doplněno později
 
Citovat
#2
Úžasná práce. Sice jsem už toto téma měl téměř dopsané, ale musel jsem nutně odejít od PC a mezitím už tady visí toto téma. Připínám a děkuji, snad to nováčkům pomůže.
Soukromý server - Ubuntu 18.04, TVHeadend 4.2.8-36
Dell Latitude E6420 - W10, TVHPlayer Beta, Kodi 18.5
Lenovo Vibe P1ma - Android 5.1, TVHClient + Yatse, Kodi 18.5
 
Citovat
#3
Super návod!
Inak group-title ide použiť v Simple Clientovi aj na viac skupín než len jednu. Treba skupiny oddeliť bodkočiarkou napr. group-title="CZ;HD;Dokument"

X92.. X96 max.. T95Z plus.. M8s plus..
 
Citovat
#4
@playman22 Super, díky. Ten středník, to jsem nevěděl. Opravím.
 
Citovat
#5
V 1. příspěvku jsem doplnil popis týkající se playlistu pro IPTV Simple Client a také obecné zásady tvorby souboru playlistu.
 
Citovat
#6
Při startu SKYLINK LIVE se mi stále objevuje hláška, že "Playlist M3U nemohl být vytvořen". Jinak ale vše funguje a programy se dají sledovat. Je někde návod, jak nakonfigurovat SKYLINK LIVE, aby tato hláška zmizela ?
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)