• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Zdravím hosta! Přihlášení Registrace


Hodnocení tématu:
  • 4 Hlas(ů) - 2 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
OTT/IPTV - jednodušeji to už nejde
Client 14.1 si napisal "Pokud někdo bude mít i přesto zájem, scripty učešu a zveřejním. ". Pisal som ti ako do spravy tak aj tu a stale nic, tak sa pytam zverejnis tie scripty alebo nie? Slusny clovek odpovie. Dakujem.
 
Citovat
@havran99 Tak odpovídá se na otázku, kterou jsi ty ale nepoložil, o tvém školení o slušném člověku ani nemluvě. To si schovej pro jiné. Mimochodem, napsal jsem, že když bude zájem, "učešu a zveřejním" tedy, že za tím bude ještě nějaká práce. Teď tedy zájem je, takže učešu a zveřejním.
ASUS VivoMini + LE 8.2.5 (Kodi 17.6) + Tvheadend 4.2 * ASUS VivoMini + LE 8.2.5 (Kodi 17.6) * 3x PC + W10 (Kodi 17.6/18 RC4) * 2x RPi2 + LE 8.2.5 (Kodi 17.6)
 
Citovat
@Client Pardon ak som sa ta dotkol, ale 2x som ti pisal aj cez spravu do mailu a slusne som ta poziadal o scripty a ziadna odpoved od teba.
 
Citovat
@havran99 A to si jako představuješ jak? Že musím reagovat okamžitě? Řeknu ti to přímo, že i kdybych si zprávy z registračního mailu četl každý den, což ostatně nedělám, patrně bych na ně stejně hned nereagoval. Co tě nutí k tomu, psát na mail, když se to týká tématu z fóra. A ještě po dvou dnech urgovat, a po dalších dvou dnech to zakončit tím, že se nechovám slušně, protože jsem ti ještě neodpověděl. Myslím, že jak to s těmi scripty je a bude, jsem napsal dostatečně jasně už v mém prvním scriptu. Jsme amatéři, nadšenci a děláme to ve volném čase. To, že ti někdo neodpoví tak rychle jak si představuješ, na tom snad není nic tak divného. Divné je tu možná něco úplně jiného. Ale to si už přeber sám, protože já s debatou na toto téma končím. Měl bych se raději věnovat scriptům, než mě zase někdo bude urgovat.
ASUS VivoMini + LE 8.2.5 (Kodi 17.6) + Tvheadend 4.2 * ASUS VivoMini + LE 8.2.5 (Kodi 17.6) * 3x PC + W10 (Kodi 17.6/18 RC4) * 2x RPi2 + LE 8.2.5 (Kodi 17.6)
 
Citovat
@havran99: tvé chování je za hranicí ... co se na fóru zde zveřejní je jen naše dobrá vůle...Jsme jen Kodi fans ... @Client nemusí vůbec nic když na to přijde.... musí jen ..... 1 Ja např. neodepisuji na 3/4 PM vše by mělo být zde na fóru...TEČKA
:::  2x Beelink Mini MXIII-II 2GB/16GB LibreELEC 8.2 v NAND ::: Beelink Mini MXIII-II - CE 8.9.7 v SD (Private TVH Server)  :::
 
Citovat
@Client: nie nechcel som to hned, myslel som ze ked sa ti niekto ozve tak to zverejnis, bohuzial moja chyba ze som bol nedockavy. Ja viem ze su tu ludia amateri ako aj ja, scripty si viem pisat aj sam aj kodi doplnky viem robit ale ked som cital ze si spravil script tak si hovorim skoda casu na vytvorenie ked uz ho niekto spravil. Este raz pardon.

@otava5: nechapem preco sa ty do vsetkeho montujes, ja vobec s tebou nekomunikujem, uz som tu dlhsiu dobu a sledujem ako obcas drbes ludi, co si ty ochranca a GURU tohto fora?
 
Citovat
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ů.
[Only registered and activated users can see links Click here to register]
[Only registered and activated users can see links Click here to register]
[Only registered and activated users can see links Click here to register]

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 [Only registered and activated users can see links Click here to register]. 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.
ASUS VivoMini + LE 8.2.5 (Kodi 17.6) + Tvheadend 4.2 * ASUS VivoMini + LE 8.2.5 (Kodi 17.6) * 3x PC + W10 (Kodi 17.6/18 RC4) * 2x RPi2 + LE 8.2.5 (Kodi 17.6)
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)