12.5.2019, 23:54
(Tento příspěvek byl naposledy změněn: 11.1.2020, 21:52 uživatelem Client.
Důvod úpravy: Nová verze scriptů, úprava popisu, odstranění starších verzí
)
O2TV
Aktualizace 2020-01-10
Popis pro připojení OTT služby O2TV do Tvheadend, navazuje na obecný popis a charakteristiku v https://www.xbmc-kodi.cz/prispevek-pripojeni-cz-sk-poskytovatelu-ott-iptv-k-tvheadendu?pid=67378#pid67378. Proti tomuto popisu je v celé koncepci (kromě celé řady drobnějších) jedna zásadní změna a to, že parametry už se needitují v jednotlivých scriptech, ale jsou uloženy v konfiguračním souboru config.json.
Typ řešení je typu onthefly.
Řešení je odvozeno od původního Kodi video addon Štěpána Orta, upraveného a adaptovaného na současné rozhraní a funkce služby. Mezi zásadní změny patří především rozšíření možností definice kvality zobrazení (dostupné již v navazujících addon a scriptech autora @JiRo a @pavuucek) a změna autentizace podle aktuálních pravidel a podmínek O2. Počinaje verzí 0.8 byly scripty upraveny s ohledem na snahu o jisté sjednocení, které organizuje @koperfield, jinak také moderátor subfóra Live TV & PVR.
Řešení obsahuje dále uvedené funkce, soubory a scripty.
Konfigurační soubor
Pro konfigurační soubor byl použit textový soubor typu json, který je poměrně návodný a umožňuje poměrně jednoduchou editaci libovolným textovým editorem. V aktuální verzi souboru jsou to uspořádané dvojice "název_parametru":"hodnota_parametru", viz příklad:
V instalační zip-u je uložen soubor config.json.sample, po stažení a rozbalení do vašeho adresáře soubor přejmenujte na config.json a zeditujte parametry podle vašich požadavků (nebo podle dosud provozované verze scriptů).
Význam jednotlivých parametrů je:
Provádí script login.sh. V současné verzi scriptů počínaje 0.9, jsou v tomto scriptu sloučeny dvě metody autentizace s použitím username a password, které služba o2tv používá. Script postupně vyzkouší jednu i druhou a pokud ani jedna nebude úspěšná, nahlásí chybu. Autentizace pomocí refresh tokenu, která byla zavedena ve verzi 0.8, byla až na další zatím vyřazena.
Kromě toho tento script provádí ukládání vybraných parametrů do souboru accesss.id, který následně používá soubor streamer.sh. Ten parametry nečte z config.json, protože čtení a parsování parametrů z json pomocí aplikace jq by zásadním způsobem prodlužovalo dobu přepínání kanálů, ale právě z access.id, které je asi o řád rychlejší. Proto je třeba script login.sh spustit pokaždé, pokud změníte nějaký parametr v config.json.
Vytvoření playlistu
Provádí script playlist.sh. Vytváří se soubor playlist.general.m3u8. Obsahem souboru jsou všechny kanály zaplaceného tarifu. Pokud uživatel chce playlist dále upravovat, doporučuje se, aby si vygenerovaný soubor zkopíroval a přejmenoval (např. playlist.m3u8). Protože při dalším spuštění scriptu dojde k jeho přepsání.
Ve vytvářeném playlistu, který odpovídá standardnímu formátu, je na místě adresy streamu uloženo volání scriptu streamer.sh (včetně úvodního pipe:// a absolutní cesty k souboru scriptu) a předávané parametry. V tomto řešení se předávají dva, volitelně tři, parametry:
Od verze 0.7 je generace playlistu přizpůsobena novým typům služeb (2019) a zároveň je přidána možnost volitelného použití loga kanálů z O2TV.
Kromě playlistu script vytváří ještě soubory channels.lst a channels_by_name.lst, které pomáhají zlepšit přehled a orientaci v nabídce kanálů a také nastavuje souboru scriptu streamer.sh příznak spustitelného souboru.
Ve verzi 0.8 je playlist generován pro všechny zaplacené kanály všech nabídek (offers) a protože to nemohu dost dobře vyzkoušet, budu zvědavý, jak se tato metoda osvědčí. Pokud s tím budou nějaké problémy, informujte mne prosím v tématu Připojení CZ/SK poskytovatelů OTT IPTV k TVHeadendu.
Streamer
Script streamer.sh provádí sestavení requestu a parsování odpovědi serveru služby. Vzhledem k tomu, že služba O2TV vrací odpověď ve formátu json s nabídkou více variant manifestů (jde o HLS, serever tedy nevrací adresu streamu, ale adresu HLS manifestu), jsou ve scriptu uplatněny zjednodušující algoritmy výběru požadovaného manifestu. Json data se neprohledávají, to by v tomto řešení (parsování json dat aplikací jq) značně prodloužilo dobu přepínání kanálů.
Možnost aktivování cache, které bylo k dispozici od verze 0.5, bylo od verze 0.8 zrušena. Doba platnosti streamů se totiž zkrátila tak, že používání cache víceméně ztratilo smysl.
Postup instalace:
Známé chyby, problémy a omezení:
To-Do:
Aktuální verze ke stažení:
[attachment=6058]
Changelog verze 0.10:
Aktualizace 2020-01-10
Popis pro připojení OTT služby O2TV do Tvheadend, navazuje na obecný popis a charakteristiku v https://www.xbmc-kodi.cz/prispevek-pripojeni-cz-sk-poskytovatelu-ott-iptv-k-tvheadendu?pid=67378#pid67378. Proti tomuto popisu je v celé koncepci (kromě celé řady drobnějších) jedna zásadní změna a to, že parametry už se needitují v jednotlivých scriptech, ale jsou uloženy v konfiguračním souboru config.json.
Typ řešení je typu onthefly.
Řešení je odvozeno od původního Kodi video addon Štěpána Orta, upraveného a adaptovaného na současné rozhraní a funkce služby. Mezi zásadní změny patří především rozšíření možností definice kvality zobrazení (dostupné již v navazujících addon a scriptech autora @JiRo a @pavuucek) a změna autentizace podle aktuálních pravidel a podmínek O2. Počinaje verzí 0.8 byly scripty upraveny s ohledem na snahu o jisté sjednocení, které organizuje @koperfield, jinak také moderátor subfóra Live TV & PVR.
Řešení obsahuje dále uvedené funkce, soubory a scripty.
Konfigurační soubor
Pro konfigurační soubor byl použit textový soubor typu json, který je poměrně návodný a umožňuje poměrně jednoduchou editaci libovolným textovým editorem. V aktuální verzi souboru jsou to uspořádané dvojice "název_parametru":"hodnota_parametru", viz příklad:
Kód:
{
"provider":"o2tv.cz",
"username":"jan.novak@gmail.com",
"password":"mojeheslo",
"device_name":"BOX",
"device_type":"STB",
"device_id":"4e9f8a11b3ad753c",
"resolution":"HD",
"streaming_protocol":"HLS",
"parse_stream":"0",
"insert_logo":"0",
"ffmpeg":"/storage/.kodi/addons/tools.ffmpeg-tools/bin/"
}V instalační zip-u je uložen soubor config.json.sample, po stažení a rozbalení do vašeho adresáře soubor přejmenujte na config.json a zeditujte parametry podle vašich požadavků (nebo podle dosud provozované verze scriptů).
Význam jednotlivých parametrů je:
- provider - název providera, který bude prostřednictvím parametru ffmpeg předán do Tvheadend a následně se objeví v OSD Kodi,
- username - přihlašovací jméno jméno vašeho účtu služby O2TV, typicky tedy e-mail adresa,
- password - přihlašovací heslo vašeho účtu služby O2TV,
- device_name - jméno zařízení, pod kterým bude ve službě evidováno,
- device_type - typ zařízení, kromě jiného určuje nejvyšší dosaženou kvalitu (rozlišení). Vybírejte z typů MOBILE, TABLET, PC, STB,
- device_id - unikátní hexadecimální řetězec, typicky například MAC adresa, pod kterým bude zařízení registrováno,
- resolution - výběr kvality, možné hodnoty jsou SD nebo HD, skutečné rozlišení závisí na typu zařízení (device_type), např. pro typ STB je HD 1920x1080, FPS 50
- streaming_protocol - výběr protokolu, možné hodnoty HLS nebo DASH, doporučuje se používat HLS, protože DASH vyžaduje ffmpeg sestavené s knihovnou lib2xml, která u řady instalací nebývá obvyklá,
- parse_stream - experimentální funkce, parsuje z manifestu HLS adresu streamu, možné hodnoty jsou typicky 1, 3, 5 nebo 7 (1 je nejvyšší kvalita) což je pořadí řádků od konce souboru manifestu, kde se předpokládají adresy finálních streamů (1., 3., 5. nebo 7. řádek od konce manifestu). Při zadání hodnoty 0 nebo je-li hodnota parametru prázdná (:"") zpracovává se vždy celý manifest. Pozn. nelze využít při použití streaming protokolu DASH.
- insert_logo - při hodnotě 1 se do playlistu vkládají adresy souborů s logem kanálů ze služby O2TV. Při zadání hodnoty 0 nebo je-li hodnota parametru prázdná (:"") se adresy souborů s logem kanálů do playlistu nevkládají.
- ffmpeg - cesta k aplikaci ffmpeg, je-li ffmeg instalován standardně v systému, bude hodnota parametru prázdná (:""), pro některé verze *ELEC instalací bude hodnota parametru obsahovat cestu k ffmpeg, které je instalované přes addon Kodi (:"/storage/.kodi/addons/tools.ffmpeg-tools/bin/").
Provádí script login.sh. V současné verzi scriptů počínaje 0.9, jsou v tomto scriptu sloučeny dvě metody autentizace s použitím username a password, které služba o2tv používá. Script postupně vyzkouší jednu i druhou a pokud ani jedna nebude úspěšná, nahlásí chybu. Autentizace pomocí refresh tokenu, která byla zavedena ve verzi 0.8, byla až na další zatím vyřazena.
Kromě toho tento script provádí ukládání vybraných parametrů do souboru accesss.id, který následně používá soubor streamer.sh. Ten parametry nečte z config.json, protože čtení a parsování parametrů z json pomocí aplikace jq by zásadním způsobem prodlužovalo dobu přepínání kanálů, ale právě z access.id, které je asi o řád rychlejší. Proto je třeba script login.sh spustit pokaždé, pokud změníte nějaký parametr v config.json.
Vytvoření playlistu
Provádí script playlist.sh. Vytváří se soubor playlist.general.m3u8. Obsahem souboru jsou všechny kanály zaplaceného tarifu. Pokud uživatel chce playlist dále upravovat, doporučuje se, aby si vygenerovaný soubor zkopíroval a přejmenoval (např. playlist.m3u8). Protože při dalším spuštění scriptu dojde k jeho přepsání.
Ve vytvářeném playlistu, který odpovídá standardnímu formátu, je na místě adresy streamu uloženo volání scriptu streamer.sh (včetně úvodního pipe:// a absolutní cesty k souboru scriptu) a předávané parametry. V tomto řešení se předávají dva, volitelně tři, parametry:
- identifikace kanálu ve formátu odpovídající formátu specifikace api serveru služby,
- identifikace služby, která bude prostřednictvím parametru ffmpeg předána do Tvheadend a následně se objeví v OSD Kodi
- parametry ffmpeg, kterými budou doplněny parametry volaného ffmpeg - předpokládá se jejich použití především pro dodatečnou definici mapování audio streamů daného kanálu (viz dále)
Kód:
#EXTINF:-1 tvh-epg="0",O2TV Tenis HD
pipe:///storage/.kodi/media/playlist/o2tvsh/streamer.sh O2%20Tenis%20HD o2tenishd "-map 0:v:4 -map 0:a:0 -metadata:s:a:0 language=cze -map 0:a:1 -metadata:s:a:1 language=eng"Od verze 0.7 je generace playlistu přizpůsobena novým typům služeb (2019) a zároveň je přidána možnost volitelného použití loga kanálů z O2TV.
Kromě playlistu script vytváří ještě soubory channels.lst a channels_by_name.lst, které pomáhají zlepšit přehled a orientaci v nabídce kanálů a také nastavuje souboru scriptu streamer.sh příznak spustitelného souboru.
Ve verzi 0.8 je playlist generován pro všechny zaplacené kanály všech nabídek (offers) a protože to nemohu dost dobře vyzkoušet, budu zvědavý, jak se tato metoda osvědčí. Pokud s tím budou nějaké problémy, informujte mne prosím v tématu Připojení CZ/SK poskytovatelů OTT IPTV k TVHeadendu.
Streamer
Script streamer.sh provádí sestavení requestu a parsování odpovědi serveru služby. Vzhledem k tomu, že služba O2TV vrací odpověď ve formátu json s nabídkou více variant manifestů (jde o HLS, serever tedy nevrací adresu streamu, ale adresu HLS manifestu), jsou ve scriptu uplatněny zjednodušující algoritmy výběru požadovaného manifestu. Json data se neprohledávají, to by v tomto řešení (parsování json dat aplikací jq) značně prodloužilo dobu přepínání kanálů.
Možnost aktivování cache, které bylo k dispozici od verze 0.5, bylo od verze 0.8 zrušena. Doba platnosti streamů se totiž zkrátila tak, že používání cache víceméně ztratilo smysl.
Postup instalace:
- rozbalení zip souboru do cílového adresáře
- při první instalaci přejmenování souboru config.jsom.sample na config.json a editace parametrů, při aktualizaci novou verzí už tento krok odpadá
- *spuštění login.sh
- *spuštění playlist.sh, případně i editace vygenerovaného playlist.general.m3u8 a/nebo zkopírování do cílového souboru (např. playlist.m3u8) kde může být dále editován a upravován
- *nastavení a související kroky v Tvheadend
Známé chyby, problémy a omezení:
- omezené možnosti scriptů obecně i to, že scripty jsou často používány na "omezených" linux derivátech (*ELEC), mě vedlo k tomu, že problematiku dekódování znaků názvů kanálu řeším pomocí překódovacích tabulek (encode1.sed a encode2.sed). Může se stát, že v tabulkách budou některé znaky chybět a názvy pak nebudou odpovídat očekávání. Dojde-li k tomu, upozorněte mě na to a já tabulky doplním.
- já sám používám z nabídky O2TV pouze tarif Sport, proto nemohu vyzkoušet všechny varianty a kombinace služeb a tarifů. Proto doporučuji vyzkoušet si novou verzi někde bokem, nejdříve si vygenerovat playlist a teprve po jeho kontrole ho zařadit do Tvheadend.
- u nových tarifů z roku 2019 existuje možnost, že na jednom účtu bude k dispozici více služeb (tarifů). Díky @fany.reklama+1 viz jeho příspěvek https://www.xbmc-kodi.cz/prispevek-pripo...7#pid79607, jsem upravil přihlášení tak, že je zatím vybrána první dostupná služba. V další verzi se pokusím vymyslet nějaký uživatelsky příjemný postup, jak si vybrat i jinou službu.
To-Do:
- epg.sh - mám to rozpracované, ale upřímně řečeno se mi do toho moc nechce. Já sám používám jako zdroj epg (xmltv) aplikaci WG++ a k epg.sh se vrátím jedině tehdy bude-li na to velký tlak a zbude-li mi čas. Počítám, že pokud se do toho dám, bude to v souvislosti s dále uvedeným addon.
- config.sh - script, který umožní jednoduché vkládání parametrů do config.json.
- addon Kodi - mám rozpracováno řešení, které bude určené pro *ELEC instalace, kdy se sh scripty stanou součástí addon. Addon po instalaci a zadání parametrů prostřednictvím funkcí Kodi, vytvoří playlist automaticky. Podobnou funkci tu již inzeroval uživatel @charles v postu https://www.xbmc-kodi.cz/prispevek-pripojeni-cz-sk-poskytovatelu-ott-iptv-k-tvheadendu?pid=78912#pid78912. Nebudu tyto aktivity zatím nijak spojovat, uvidíme, které řešení se ukáže jako užitečnější. Ostatně, já s tím svým nijak pospíchat nebudu.
Aktuální verze ke stažení:
[attachment=6058]
Changelog verze 0.10:
- doplněn fixní výběr první nabízené služby (dočasné řešení pro nové tarify 2019) - credit @fany.reklama+1
