• 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:
  • 1 Hlas(ů) - 5 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Přehled skriptů pro OTT IPTV v TVHeadend
#1
Tak jak jsme slíbil, po projevení zájmu překládám výsledky svých pokusů se scripty pro službu Lepsitv. Pokračuji v duchu toho, co tady zveřejnil pro Lepsitv @mobilemanic a také @JiRo, z jehož logiky řešení vycházím. Vše je psáno v sh scriptu, použitelné je tedy jen v Tvheadend. Pokud by někdo chtěl totéž pro IPTV Simple Client, je třeba to přepsat do php a zajistit si prostředí pro jeho běh.

O tom, co a jak jsem kolem Lepsitv prováděl, existuje několik postů. Doporučuji si je přečíst jako porvní, hodně je v nich vysvětleno. TEnto post už obsahuje pouze faltická data kolem použitých scriptů.

Jinak, já službu Lepsitv nepoužívám, zaplatil jsme si ji pouze na 1 měsíc, abych mohl scripty odladit a odzkoušet. Proto také tímto postem končím s dalším rozvojem.

Playlist vytvářím zásadně ručně, i když by ho bylo možné ho ze seznamu kanálů jednoduše vytvořit (to nechám někomu dalším), Použít pro to se dá obsah souborů channels.ref nebo channels.json (viz dále).

Playlist

Příklad playlistu je zde. Obsahuje pouze pár kanálů, které jsem zkoušel. Doplnit se dá samozřjmě na základě obsahu souboru channels.json.

Kód:
#EXTM3U
#EXTINF:-1,HBO
pipe:///storage/.kodi/media/playlist/lepsi/streamer.sh wx__hbo_hevc
#EXTINF:-1,HBO 2
pipe:///storage/.kodi/media/playlist/lepsi/streamer.sh wx__hbo2_hevc
#EXTINF:-1,HBO 3
pipe:///storage/.kodi/media/playlist/lepsi/streamer.sh wx__hbo3_hevc
#EXTINF:-1,JOJ Cinema
pipe:///storage/.kodi/media/playlist/lepsi/streamer.sh hx__joj_cinema_hevc
#EXTINF:-1,Filmbox
pipe:///storage/.kodi/media/playlist/lepsi/streamer.sh wx__filmbox_h264
#EXTINF:-1,Filmbox Plus
pipe:///storage/.kodi/media/playlist/lepsi/streamer.sh wx__filmbox_plus_h264
#EXTINF:-1,Filmbox Premium
pipe:///storage/.kodi/media/playlist/lepsi/streamer.sh wx__filmbox_premium_hevc
#EXTINF:-1,Nova Sport 1
pipe:///storage/.kodi/media/playlist/lepsi/streamer.sh vx__nova_sport_1_hevc
#EXTINF:-1,Nova Sport 2
pipe:///storage/.kodi/media/playlist/lepsi/streamer.sh vx__nova_sport_2_hevc
#EXTINF:-1,Hobby TV
pipe:///storage/.kodi/media/playlist/lepsi/streamer.sh px__hobbytv_h264
#EXTINF:-1,STV 1
pipe:///storage/.kodi/media/playlist/lepsi/streamer.sh bx__stv1_hevc
#EXTINF:-1,STV 2
pipe:///storage/.kodi/media/playlist/lepsi/streamer.sh fx__stv2_hevc
#EXTINF:-1,Markíza International
pipe:///storage/.kodi/media/playlist/lepsi/streamer.sh vx__markiza_int_hevc
#EXTINF:-1,JOJ Family
pipe:///storage/.kodi/media/playlist/lepsi/streamer.sh hx__joj_family_hevc
#EXTINF:-1,TV Lux
pipe:///storage/.kodi/media/playlist/lepsi/streamer.sh qx__lux_h264
#EXTINF:-1,UP NETWORK
pipe:///storage/.kodi/media/playlist/lepsi/streamer.sh qx__upnetwork_h264
#EXTINF:-1,Adventure TV
pipe:///storage/.kodi/media/playlist/lepsi/streamer.sh wx__adventuretv_hevc

Jak je v řešení od @JiRo obvyklé, v playlistu si pomocí metody pipe:// aplikace Tvheadend volá streamer.sh, který v tomto případě má jeden parametr, a tím je identifikace kanálu, a ten přes stdout vrací do Tvheadend přímo data obsahu příslušného streamu.

Vyzkoušel jsme dva způsoby, jak to celé řešit, popsáno je to v https://www.xbmc-kodi.cz/prispevek-ott-i...2#pid59122. Pro každý způsob tedy existuje vlastní streamer. Můžete si tak vyzkoušet oba způsoby řešení z jednoho plalyistu. Stačí si oba streamery pojmenovat odlišně, např. streamer1.sh a streamer2.sh a vždy ten, který budete chtít používat pak přejmenovat na streamer.sh.

Varianta 1

Obsah streamer1.sh je tedy následující:

Kód:
#!/bin/bash
data='/storage/.kodi/media/playlist/lepsi/'
user='USERNAME'
pass='PASSWORD'
qual=h265
salt=$(wget -q -O - --no-check-certificate https://www.xn--lep-tma39c.tv/api/prihlaseniP.php | sed -e "s/\(.*\)\":\"\(.*\)\"\(.*\)/\2/")
hash=$(printf '%s%s%s' "${user}" "${pass}" "${salt}" | md5sum | cut -d ' ' -f 1)
auth=$(wget -q -O - --no-check-certificate "https://www.xn--lep-tma39c.tv/api/prihlaseniP.php?prist_jmeno=${user}&hash=${hash}&prist_heslo=${pass}&sul=${salt}" | sed -e "s/\(.*\)\"auth\":\"\(.*\)\",\"auth2\":\"\(.*\)/\2/")
uval=$(wget -q -O - --no-check-certificate https://www.xn--lep-tma39c.tv/api/overeniP.php?auth=${auth})
program=$(wget -q -O - --no-check-certificate https://www.xn--lep-tma39c.tv/api/program0.php?auth=${auth}\&k=${qual}\&streams=1 | sed -e "s/\(.*\)\"auto\":\"\(.*\)s=$1\&\([^\"]*\)\"\(.*\)/\2s=$1\&\3/" | tr '\\\\' '/' | sed -e "s/\/\//\//g")
stream=$(printf '%s%s%s' "${program}" "&u=" "${uval}")
#echo ${stream} >> ${data}streamer.log
#wget -qO - ${stream} >> ${data}streamer.log
ffmpeg -re -fflags +genpts -loglevel fatal -i ${stream} -c copy -f mpegts -mpegts_service_type digital_tv -metadata service_provider=lepsitv -metadata service_name=$1 pipe:1

Protože jsou scripty spouštěny z Tvheadend, je ve všech scriptech vždy proměnné data, ve které je adresa datového adresáře, do kterého se ukládají všechny produkované soubory a jsou tam uloženy i všechny scripty.

V kódu jsou "zakomentovány dva řádky":

#echo ${stream} >> ${data}streamer.log
#wget -qO - ${stream} >> ${data}streamer.log

které mohou provádět logování získané adresy streamu naladěného kanálu a jeho obsahu (jde o HLS). Je to užitečné při ladění a případných problémech. 

Varianta 2

Prvním scriptem je Login.sh. Jeho výstupem je hodnota proměnné auth ukládaná do souboru login.id. Kromě toho script ukládá do dvou souborů:
  • channels.ref - url adresu, dotazu, který vrátí seznam obsahu všech dostupných kanálů služby včetně jejich identifikace, která se pak používá v playlist
  • channels.json - seznam obsahu všech dostupných kanálů
Kód:
#!/bin/sh
data='/storage/.kodi/media/playlist/lepsi/'
user='USERNAME'
pass='PASSWORD'
qual=h265
salt=$(wget -q -O - --no-check-certificate https://www.xn--lep-tma39c.tv/api/prihlaseniP.php | sed -e "s/\(.*\)\":\"\(.*\)\"\(.*\)/\2/")
hash=$(printf '%s%s%s' "${user}" "${pass}" "${salt}" | md5sum | cut -d ' ' -f 1)
auth=$(wget -q -O - --no-check-certificate "https://www.xn--lep-tma39c.tv/api/prihlaseniP.php?prist_jmeno=${user}&hash=${hash}&prist_heslo=${pass}&sul=${salt}" | sed -e "s/\(.*\)\"auth\":\"\(.*\)\",\"auth2\":\"\(.*\)/\2/")
echo ${auth} > ${data}login.id
echo ${auth}

Nemám exaktně zjištěnou dobu platnosti auth, ale vycházím z toho, že bude pravděpodobně neomezená. Pokud to bude jinak, je samozřejmě třeba zajistit periodické spuštění tohoto scriptu.

Dalším scriptem, je session.sh, Jeho výstupem je hodnota proměnné uval ukládaná do souboru session.id, zároveň se do souboru ukládá i auth.

Kód:
#!/bin/bash
data='/storage/.kodi/media/playlist/lepsi/'
auth=$(cat ${data}login.id | head -n 1)
qual=h265
wget -q -O /storage/.kodi/media/playlist/lepsi/channels.json --no-check-certificate https://www.xn--lep-tma39c.tv/api/program0.php?auth=${auth}\&k=${qual}\&streams=1
echo https://www.xn--lep-tma39c.tv/api/program0.php?auth=${auth}\&k=${qual}\&streams=1 > /storage/.kodi/media/playlist/lepsi/channels.ref
uval=$(wget -q -O - --no-check-certificate https://www.xn--lep-tma39c.tv/api/overeniP.php?auth=${auth})
echo ${auth} ${uval} > ${data}session.id
echo ${auth} ${uval}

Doba platnosti uval je méně jak 12 hodin, maximální hodnotu jsem nezjistil. Znamená to tedy, že je třeba si zajistit periodické spouštění tohoto scriptu.

Posledním scriptem pro tuto variantu je pak konečně streamer2.sh:

Kód:
#!/bin/bash
data='/storage/.kodi/media/playlist/lepsi/'
login=$(cat ${data}session.id | head -n 1)
auth=$(echo ${login} | cut -d' ' -f1)
uval=$(echo ${login} | cut -d' ' -f2)
qual=h265
program=$(wget -q -O - --no-check-certificate https://www.xn--lep-tma39c.tv/api/program0.php?auth=${auth}\&k=${qual}\&streams=1 | sed -e "s/\(.*\)\"auto\":\"\(.*\)s=$1\&\([^\"]*\)\"\(.*\)/\2s=$1\&\3/" | tr '\\\\' '/' | sed -e "s/\/\//\//g")
stream=$(printf '%s%s%s' "${program}" "&u=" "${uval}")
#echo ${stream} >> ${data}streamer.log
#wget -qO - ${stream} >> ${data}streamer.log
ffmpeg -re -fflags +genpts -loglevel fatal -i ${stream} -c copy -f mpegts -mpegts_service_type digital_tv -metadata service_provider=lepsitv -metadata service_name=$1 pipe:1
Pro tento script pak už platí to samé, co pro streamer1.sh.
 
Citovat
#2
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:
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/").
Přihlášení a registrace zařízení

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)
Jak takový třetí parametr může vypadat vidíte na ukázce, kde jsou pro kanál O2TV Tenis HD přemapovány dva audio kanály. Současně s přemapováním jsou kanály i příslušně pojmenovány:
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:
  1. rozbalení zip souboru do cílového adresáře
  2. 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á
  3. *spuštění login.sh
  4. *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
  5. *nastavení a související kroky v Tvheadend
Body označené * samozřejmě není třeba při opakované instalaci provádět vždy. Záleží na tom, jaký druh změn ve scriptech nové verze chcete využít.

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
 
Citovat
#3
T-Mobile TV
Vytvoření 2019-11-17

Popis pro připojení OTT služby T-Mobile TV 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.

Typ řešení je typu onthefly.

De facto jde o řešení pro O2TV, upravené v těch částech, ve kterých se implementace Nangu-TV pro tohoto operátora liší. Například se nepoužívá cache adres streamů, protože jejich trvanlivost je pouze 1 hodina, navíc způsob řešení této části je zásadně odlišný od O2TV, takže i rychlost přepínání bez cachce je výrazně rychlejší a není tolik závislá na celkovém zatížení serverů služby.

Řešení obsahuje dále uvedené funkce a scripty.

Přihlášení a registrace zařízení

Provádí script login.sh. Při registraci se zadává, kromě jiného, device_name. Jméno zařízení se ale bohužel v této verzi na webu služby neobjeví. 10 Snad bude v některé v další verzi opraveno. 

Autentizační údaje jsou uloženy do vytvořeného textového souboru access.id, ze kterého je čtou ostatní scripty v řešení.

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,
  • 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
Od verze 0.3 je přidána možnost volitelného použití loga kanálů z T-Mobile TV.

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.

Streamer

Script streamer.sh provádí sestavení requestu a parsování odpovědi serveru služby. Vzhledem k tomu, že služba T-Mobile TV vrací odpověď ve formátu json s nabídkou více adres (na různých serverech služby) manifestů (jde o HLS případně DASH, server tedy nevrací adresu streamu, ale adresu manifestu), je s ohledem na rozložení zátěže serverů vybrán náhodným výběrem jedna z adres. Znamená to, že opakované spuštění stejného kanálu může vrátit jinou adresu serveru. Není to tedy chyba, ale úmysl. Snažím se tímto řešení rovnoměrněji rozložit zátěž na servery služby.

Postup instalace:
  1. rozbalení zip souboru
  2. editace parametrů ve scriptech
  3. nakopírování do cílového adresáře
  4. *spuštění login.sh
  5. *spuštění playlist.sh, editace vygenerovaného playlist.general.m3u8 a zkopírování do cílového souboru (např. playlist.m3u8) kde může být dále editován a upravován
  6. *nastavení a související kroky v Tvheadend
Body označené * samozřejmě není třeba při opakované instalaci provádět vždy. Záleží na tom, jaký druh změn ve scriptech nové verze chcete využít.

Známé chyby, problémy a omezení:
  • Po přihlášení a registraci zařízení se do databáze služby nepřenes zadané device_name. V položce jméně zařízení na webu se objeví IP. Doporučuji si tedy jméno zařízení na webu zeditovat. 
  • 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.

To-Do:
  • Zadání parametrů - přemýšlím o tom, jak obejít nutnost editace sh scriptů pro zadání uživatelských parametrů. Vzhledem k tomu, že nepoužívám klasickou instalaci ve smyslu Linux ani pro scripty nepředepisuji umístění vždy k konkrétním adresáři, vždy tam potřeba nějaké editace nebo omezení bude. Ale chtěl bych to minimalizovat a proto v některé další verzi plánuji doplnit soubor s parametry. Bude to nejspíše json, který se dobře edituje i parsuje. Toto řešení první odladím na O2TV variantě scriptu, pokud se osvědčí, bude doplněno i pro T-Mobile TV.
  • epg.sh - zatím není k dispozici.

Aktuální verze ke stažení:
[attachment=5866]

Changelog verze 0.3:
  • generace playlistu přizpůsobena dalším typům služeb a jejich kombinací - pokus odstranit problémy u některých tarifů a kombinací zařízení,
  • přidána možnost volitelného použití loga kanálů z T-Mobile TV.
 
Citovat
#4
T-Mobile TV GO / Magio GO
Vychází nová verze 0.2.
Changelog:
  • Přechod na curl místo wget
  • Upraveno i pro Magio GO
  • Používání primárně refresh tokenu místo access tokenu
  • Možnost volby kvality
  • Jednotné parametry v jednom souboru a jejich snadná konfigurace v login.sh

To-Do:
  • update.sh: brzy plánuji nahrát tento skript na GitHub a tam jej aktualizovat. Pro automatickou aktualizaci mám rozepsaný skript update.sh spolupracující s API GitHubu. Bohužel to má ještě nedostatky a proto se na tento skript ve verzi 0.2 nedostalo.
  • Možná by bylo praktičtější vytvářet config.file jako JSON a tak s ním i pracovat. Tato verze má vyřešeno mnoho věcí nepřirozeně (například uživatelské jméno s mezerou, které jsem viděl u Magia, jsem nahrazoval místo mezery "__", aby nedošlo ke konfliktu s oddělováním parametrů, které momentálně odděluji mezerou).

login.sh - co se změnilo?
Nyní již není třeba do všech skriptů doplňovat parametry, stačí jen jednou v login.sh. Pokud neexistuje soubor config.file s parametry, skript automaticky spustí konfiguraci. Stačí tedy jen vyplnit požadované hodnoty. Ty si po uložení souboru budou číst všechny skripty. Pokud byste chtěli hodnoty změnit, nemusíte mazat soubor - stačí za název skriptu přidat --config a konfigurace se spustí znovu.

Určitě je vhodné login.sh spouštět pravidelně, minimálně každých patnáct minut (délka platnosti access tokenu). Primárně se provádí obnova pomocí refresh tokenu; pokud se nezdaří, provede se běžné přihlášení.

Ke stažení
Nejnovější verze 0.2

.zip   playlist.magio-v0.2.zip (Velikost: 3,35 KB / Stažení: 276)

Starší verze
0.1

.zip   playlist.tmobiletvgo-v0.1.zip (Velikost: 2,5 KB / Stažení: 135)
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
#5
OTT IPTV v TVHeadend
přehled skriptů

Toto téma slouží jako seznam všech momentálně zveřejněných skriptů pro české a slovenské OTT IPTV služby v TVHeadend, které se zde na fóru objevily. 
JAKOUKOLIV diskuzi k tématu prosím směřujte do Připojení CZ/SK poskytovatelů OTT IPTV k TVHeadendu, případně do témat konkrétních skriptů (například streamy kuki tv nebo Playlist 4NET (DigiTV, Poda, ...)).

Požádal bych tedy autory skriptů, aby své další skripty přidávali sem. (Staré příspěvky přesunu, pokud se kvůli nim nezaložilo nové téma - jedná se konkrétně o téma Playlist 4NET (DigiTV, Poda, ...), prosím @Client o vytvoření kopie příspěvku sem. Pokud bych náhodou někomu upravil příspěvek, je to jen kvůli změně adresy po přesunutí.)


EDIT: Tak jsem přesunul ty nejpodstatnější skripty pod jednu střechu. Akorát se můj úvodní příspěvek díky tomu dostal až na konec. Co tedy zatím nepřesouvám:
  • 4NET. Již zmíněno výše.
  • Sledovani/-e.TV. Nebudu, stejně jako u 4NET, přesouvat příspěvek, který otevřel téma. Možná se najde někdo, kdo by to sem přepsal a podílí se ještě na vývoji. (přestože vím, že Sledovani/-e funguje již celkem dlouho a bez potíží)
  • Kuki. Shrnující příspěvek by bylo dobré upravit pro účely přesunutí sem. @Client, nespěchá to, až si najdeš čas. Jenom mi pak o tom dej vědět.

Většina odkazů směřujících na přesunuté příspěvky byla opravena.
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
#6
Dobrý den
Máte někdo script z prvního příspěvku? Mužete zasdílet?
 
Citovat
#7
(18.11.2019, 19:04)koperfield Napsal(a): T-Mobile TV GO / Magio GO
Vychází nová verze 0.2.
Changelog:
  • Přechod na curl místo wget
  • Upraveno i pro Magio GO
  • Používání primárně refresh tokenu místo access tokenu
  • Možnost volby kvality
  • Jednotné parametry v jednom souboru a jejich snadná konfigurace v login.sh

To-Do:
  • update.sh: brzy plánuji nahrát tento skript na GitHub a tam jej aktualizovat. Pro automatickou aktualizaci mám rozepsaný skript update.sh spolupracující s API GitHubu. Bohužel to má ještě nedostatky a proto se na tento skript ve verzi 0.2 nedostalo.
  • Možná by bylo praktičtější vytvářet config.file jako JSON a tak s ním i pracovat. Tato verze má vyřešeno mnoho věcí nepřirozeně (například uživatelské jméno s mezerou, které jsem viděl u Magia, jsem nahrazoval místo mezery "__", aby nedošlo ke konfliktu s oddělováním parametrů, které momentálně odděluji mezerou).

login.sh - co se změnilo?
Nyní již není třeba do všech skriptů doplňovat parametry, stačí jen jednou v login.sh. Pokud neexistuje soubor config.file s parametry, skript automaticky spustí konfiguraci. Stačí tedy jen vyplnit požadované hodnoty. Ty si po uložení souboru budou číst všechny skripty. Pokud byste chtěli hodnoty změnit, nemusíte mazat soubor - stačí za název skriptu přidat --config a konfigurace se spustí znovu.

Určitě je vhodné login.sh spouštět pravidelně, minimálně každých patnáct minut (délka platnosti access tokenu). Primárně se provádí obnova pomocí refresh tokenu; pokud se nezdaří, provede se běžné přihlášení.

Ke stažení
Nejnovější verze 0.2

Starší verze
0.1
Moc dekujeme za script ale neslo by opravit aby do TVH natahl fhd obraz? Pres python to generuje FHD do tvh ale zase problem se zvukem...Diky za info Bajtik
 
Citovat
#8
(30.10.2019, 1:25)Client Napsal(a): T-Mobile TV
Vytvoření 2019-11-17

Popis pro připojení OTT služby T-Mobile TV 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.

Typ řešení je typu onthefly.

De facto jde o řešení pro O2TV, upravené v těch částech, ve kterých se implementace Nangu-TV pro tohoto operátora liší. Například se nepoužívá cache adres streamů, protože jejich trvanlivost je pouze 1 hodina, navíc způsob řešení této části je zásadně odlišný od O2TV, takže i rychlost přepínání bez cachce je výrazně rychlejší a není tolik závislá na celkovém zatížení serverů služby.

Řešení obsahuje dále uvedené funkce a scripty.

Přihlášení a registrace zařízení

Provádí script login.sh. Při registraci se zadává, kromě jiného, device_name. Jméno zařízení se ale bohužel v této verzi na webu služby neobjeví. 10 Snad bude v některé v další verzi opraveno. 

Autentizační údaje jsou uloženy do vytvořeného textového souboru access.id, ze kterého je čtou ostatní scripty v řešení.

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,
  • 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
Od verze 0.3 je přidána možnost volitelného použití loga kanálů z T-Mobile TV.

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.

Streamer

Script streamer.sh provádí sestavení requestu a parsování odpovědi serveru služby. Vzhledem k tomu, že služba T-Mobile TV vrací odpověď ve formátu json s nabídkou více adres (na různých serverech služby) manifestů (jde o HLS případně DASH, server tedy nevrací adresu streamu, ale adresu manifestu), je s ohledem na rozložení zátěže serverů vybrán náhodným výběrem jedna z adres. Znamená to, že opakované spuštění stejného kanálu může vrátit jinou adresu serveru. Není to tedy chyba, ale úmysl. Snažím se tímto řešení rovnoměrněji rozložit zátěž na servery služby.

Postup instalace:
  1. rozbalení zip souboru
  2. editace parametrů ve scriptech
  3. nakopírování do cílového adresáře
  4. *spuštění login.sh
  5. *spuštění playlist.sh, editace vygenerovaného playlist.general.m3u8 a zkopírování do cílového souboru (např. playlist.m3u8) kde může být dále editován a upravován
  6. *nastavení a související kroky v Tvheadend
Body označené * samozřejmě není třeba při opakované instalaci provádět vždy. Záleží na tom, jaký druh změn ve scriptech nové verze chcete využít.

Známé chyby, problémy a omezení:
  • Po přihlášení a registraci zařízení se do databáze služby nepřenes zadané device_name. V položce jméně zařízení na webu se objeví IP. Doporučuji si tedy jméno zařízení na webu zeditovat. 
  • 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.

To-Do:
  • Zadání parametrů - přemýšlím o tom, jak obejít nutnost editace sh scriptů pro zadání uživatelských parametrů. Vzhledem k tomu, že nepoužívám klasickou instalaci ve smyslu Linux ani pro scripty nepředepisuji umístění vždy k konkrétním adresáři, vždy tam potřeba nějaké editace nebo omezení bude. Ale chtěl bych to minimalizovat a proto v některé další verzi plánuji doplnit soubor s parametry. Bude to nejspíše json, který se dobře edituje i parsuje. Toto řešení první odladím na O2TV variantě scriptu, pokud se osvědčí, bude doplněno i pro T-Mobile TV.
  • epg.sh - zatím není k dispozici.

Aktuální verze ke stažení:


Changelog verze 0.3:
  • generace playlistu přizpůsobena dalším typům služeb a jejich kombinací - pokus odstranit problémy u některých tarifů a kombinací zařízení,
  • přidána možnost volitelného použití loga kanálů z T-Mobile TV.

Ahojte, píše sa tu o tom dosť, len nikde som nenašiel odkaz na git co sa týka súborov k stiahnutiu, je možne sa k tomu nejako dopracovať?
 
Citovat
#9
@lovec24 Po @Client: tu nic nezůstalo, všechny přílohy byly smazány. Ale myslím, že tady najdeš určitě někoho, kdo ti poradí.

BTW Proč kopíruješ celý text staršího příspěvku, pokud na něj chceš navázat, tak stačí odkaz.
 
Citovat
#10
(10.7.2022, 21:08)JiRo Napsal(a): @lovec24 Po @Client: tu nic nezůstalo, všechny přílohy byly smazány. Ale myslím, že tady najdeš určitě někoho, kdo ti poradí.

BTW Proč kopíruješ celý text staršího příspěvku, pokud na něj chceš navázat, tak stačí odkaz.

snazim sa rozbehnuť script sledovanitv, dostal som to do administracie poskztovatela, ale potrebujem script na vygenerovanie playlistu
 
Citovat
#11
(12.5.2019, 23:54)Client Napsal(a): O2TV
Aktualizace 2020-01-10
Je ještě někde ke stažení? Odkaz na attachment už nefunguje.
 
Citovat
#12
Vcera u meho uctu (mozna globalne) prestala fungovat stara O2TV.
Plugin co je pro tvheadend prestal slapat. Pri pokusu cokoliv prehrat se zobrazi video s napisem "Tato verze aplikace O2 TV jiz neni podporovana" a ze potrebuji verzi 2.0.

Je nejaka sance ze sikovna hlava upravi script pro tvheadend aby slapal s o2tv 2.0?
Diky
 
Citovat
#13
@blackdot No, to jsi se probudil minutu po dvanácté. O předchodu na O2TV 2.0 se již hovoří hodně dlouho a hodně dlouho už také na něj poskytovatel své zákazníky převádí. Teď tedy došlo i na ty poslední, ke kterým zjevně patříš i ty.

Scripty pro Tvheadend pro verzi 2.0 musí být jiné z celé řady důvodů. Např. díky jinému api, díky jinému konceptu použití protokolů nebo zavedení DRM. Kromě obvyklého HLS, nyní nově s DRM, teď O2TV používá i MPEG-DASH. Co to pro přijem v Tvheadend znamená, je tedy zřejmé.

Jak už i v tomto tématu padlo několikrát, v současné době si lidé, kteří používají Tvheadend, svá řešení příjmu OTT služeb chrání a nikdo se s ním moc nesvěřuje. Takže chceš-li příjem O2TV v Tvheadend provozovat i nadále, budeš nejspíše muset zapojit vlastní um.

Používáš-li Kodi a chceš OTT službu O2TV 2.0 přijímat přímo v něm, může použít výborné řešení od @waladir: Najdeš ho v O2TV.
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)