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


Hodnocení tématu:
  • 6 Hlas(ů) - 1.67 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 9.0.2 (Kodi 18.2) + Tvheadend 4.2 * ASUS VivoMini + LE 9.0.2 (Kodi 18.2) * 3x PC + W10 (Kodi 18.2)
 
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 9.0.2 (Kodi 18.2) + Tvheadend 4.2 * ASUS VivoMini + LE 9.0.2 (Kodi 18.2) * 3x PC + W10 (Kodi 18.2)
 
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 9.0.1 v NAND (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 9.0.2 (Kodi 18.2) + Tvheadend 4.2 * ASUS VivoMini + LE 9.0.2 (Kodi 18.2) * 3x PC + W10 (Kodi 18.2)
 
Citovat
Dobrý večer, mám v Kodi o2tv. Playlist m3u8, tady na foru jsem si přečetl návod a povedlo si mi to zprovoznit. Moc pěkná práce, děkuji vám všem.
Evolveo M8 Coreelec ve vnitřní paměti.
Nevíte někdo, jak je možné, že i když mám opravdu rychlý internet, občas se mi programy začnou sekat. Nebo, což je o něco lepší varianta, začne mírně vypadávat zvuk. Potřeboval bych poradit čím by to mohlo být, nebo jesti už někdo něco podobného neřešil (a nevyřešil)

Jirka
 
Citovat
PHP kód:
<?php
$channel 
$_GET["ch"];
$cap $_GET["c"];
$q $_GET["q"];    
$json 
file_get_contents('http://sledovanitv.cz/api/device-login?deviceId=xxxxxxxxxx&password=xxxxxxxxxx&version=3.2.004&lang=cs&unit=default');
$data json_decode($json,true);
$sessid $data['PHPSESSID'];
file_get_contents("http://sledovanitv.cz/api/pin-unlock?pin=xxxx&whitelogo=1&PHPSESSID=".$sessid);
$url = ("http://sledovanitv.cz/vlc/api-channel/".$channel.".m3u8?quality=".$q."&capabilities=".$cap.",adaptive&PHPSESSID=".$sessid);
header('Location: '.$url.'');
exit;
?>
Uměl by někdo toto převést na bash?
:::  2x Beelink Mini MXIII-II 2GB/16GB LibreELEC 8.2 v NAND ::: Beelink Mini MXIII-II - CE 9.0.1 v NAND (Private TVH Server)  :::
 
Citovat
@otava

Ja som spojil to od @Jiro + @koperfield, za co im patri velka vdaka.


Kód:
#! /bin/sh
session=$(cat cesta/session.id | head -n 1)
request="http://sledovanitv.cz/api/pin-unlock?pin=0000&PHPSESSID="${session}
json=$(wget -qO - ${request})
 
Citovat
bojler: a co bude v session.id?

edit: Jo phpsessid 1 a já tam dostanu volání na kanál?tohle je jen odemknutí nebo se mýlím?
:::  2x Beelink Mini MXIII-II 2GB/16GB LibreELEC 8.2 v NAND ::: Beelink Mini MXIII-II - CE 9.0.1 v NAND (Private TVH Server)  :::
 
Citovat
Jasne da sa to aj takto. Nemusis mat v crone dva skripty.


Kód:
#! /bin/sh
request="http://sledovanitv.cz/api/device-login?deviceId=xxx&password=xxx&version=3.2.004&lang=cs&unit=default"
json=$(wget -qO - ${request})
status=$(echo ${json} | jq -r '.status')
sessionid=$(echo ${json} | jq -r '.PHPSESSID')
echo ${sessionid} > /cesta/session.id
session=$(cat /cesta/session.id | head -n 1)
request="http://sledovanitv.cz/api/pin-unlock?pin=0000&PHPSESSID="${session}
json=$(wget -qO - ${request})
 
Citovat
bojlet: já nevím pořád mi tam chybí [Only registered and activated users can see links Click here to register]..... to co píšeš je dle mě jen vytvoření phpsessid + odemknutí
:::  2x Beelink Mini MXIII-II 2GB/16GB LibreELEC 8.2 v NAND ::: Beelink Mini MXIII-II - CE 9.0.1 v NAND (Private TVH Server)  :::
 
Citovat
Ja to mam pre metodu od @Jiro cez skripty co popisuje par stran naspet. Myslel som ze chces ida odomknut kanal xxx
 
Citovat
bojler: že zadám
pipe:///script.sh NOVA
a zapinovaný kanál se spustí

do tohoto scriptu mi implementuj odemknutí PIN:
Kód:
#! /bin/sh
session=$(cat /cesta/session.id | head -n 1)
stream="http://sledovanitv.cz/vlc/api-channel/"$1".m3u8?quality=40&capabilities=h265,adaptive&PHPSESSID="${session}
ffmpeg -fflags +genpts -loglevel fatal -i ${stream} -c copy -f mpegts -mpegts_service_type digital_tv -metadata service_provider=sledovanitv.cz -metadata service_name=$1 pipe:1
1
:::  2x Beelink Mini MXIII-II 2GB/16GB LibreELEC 8.2 v NAND ::: Beelink Mini MXIII-II - CE 9.0.1 v NAND (Private TVH Server)  :::
 
Citovat
Tam to nepotrebujes. Ty musis odomknut PHPSESSID.
 
Citovat
@otava5 Musíš si uvědomit, jak to hanshake se servery Sledovani funguje. Ty si žádosti o session vytvoříš časově omezený rámec, v rámci kterého můžeš přijímat data. Ta hodnota, kterou ve scriptu ukládáme do proměnné sessionid je pak potvrzení, které musíš v PHPSESSID vkládat do každého dalšího requestu, kterým žádáš o konkrétní akci nebo adresu steramu. Pokud chceš sledovat zamknuté kanály, musíš poté, co získáš hodnotu sessionid, říci serveru sledování, že v rámci této session můžeš přijímat i zamknuté kanály. Takže jak píše @bojler. Ten request na odemknutí musíš posílat ve fázi, kdy sis požádal o session, tedy ve scriptu, kterým si periodicky obnovuješ hodnotu sessionid. Je to script, který uvedl @bojler. Možná, že tě zmátly ty jeho dvě proměnné sessionid a session, to je samozřejmě zbytečné. Dá se to přepsat i takto, ale jinak je to samozřejmě správně:
Kód:
#! /bin/sh
request="http://sledovanitv.cz/api/device-login?deviceId=xxx&password=xxx&version=3.2.004&lang=cs&unit=default"
json=$(wget -qO - ${request})
status=$(echo ${json} | jq -r '.status')
sessionid=$(echo ${json} | jq -r '.PHPSESSID')
echo ${sessionid} > /cesta/session.id
request="http://sledovanitv.cz/api/pin-unlock?pin=0000&PHPSESSID="${sessionid}
json=$(wget -qO - ${request})
ASUS VivoMini + LE 9.0.2 (Kodi 18.2) + Tvheadend 4.2 * ASUS VivoMini + LE 9.0.2 (Kodi 18.2) * 3x PC + W10 (Kodi 18.2)
 
Citovat
@bojler /@Client: děkuji Vám už se to pochopil...
:::  2x Beelink Mini MXIII-II 2GB/16GB LibreELEC 8.2 v NAND ::: Beelink Mini MXIII-II - CE 9.0.1 v NAND (Private TVH Server)  :::
 
Citovat
@Client: prosil bych radu ukládám jednotlivé streamy z určitých důvodů do souboru nova.m3u8,prima.m3u8 a v nich je toto:
Kód:
EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3000000
http://IP:7909/moderntv/stream/nova/41-hls/live-media.m3u8?_cdn_session=13476664301c51cb&_cdn_timestamp=1551888326&_cdn_token=d786701d8256c2dceefe098521a2abf6eb2

Jak dostat tyto soubory do playlistu TVH ... přes file:/// ani pipe://ffmpeg /storage/... mi to nebere

nebo vyjádření sed / grep tak aby třetí řádek z nova.m3u8 se zkopíroval do řádku pod :#EXTINF:-1 tvh-chnum="27",Nova v playlistu do tvh...
Díky
:::  2x Beelink Mini MXIII-II 2GB/16GB LibreELEC 8.2 v NAND ::: Beelink Mini MXIII-II - CE 9.0.1 v NAND (Private TVH Server)  :::
 
Citovat
Vyřešeno sh scriptem....
Kód:
#! /bin/sh
stream=$(wget -q -O - http://playlist.m3u8 | sed -n '3p' | head -n 3)
ffmpeg -fflags +genpts -loglevel fatal -i ${stream} -c copy -f mpegts -mpegts_service_type digital_tv -metadata service_provider=sledovanitv.cz pipe:1
:::  2x Beelink Mini MXIII-II 2GB/16GB LibreELEC 8.2 v NAND ::: Beelink Mini MXIII-II - CE 9.0.1 v NAND (Private TVH Server)  :::
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)