• 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:
  • 10 Hlas(ů) - 2.4 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
OTT/IPTV - jednodušeji to už nejde
edit: pozeram streamer.log kde by mohla byt chyba. V url streamu tam chyba parameter u. Ked vytiahnem url z appky tak su tam 4 parametre, v logu ale vidim len 3 z nich. @Client mozes sa na to pozriem prosim ta ci nahodou nemenili api? Pripadne je tu niekto taky komu script aktualne funguje?
X96 s905x CoreELEC 9.2.5+ Tvheadend 4.2.8
 
Citovat
@kuko7 Nemám v úmyslu ta řešení udržovat. Vyrobil jsem jich pár jako nakopnutí pro další, takže by se měl teď snažit někdo, kdo dané řešení skutečně používá. Jinak, co si pamatuji, tak Lepsi.tv jsem jako službu vhodnou pro používání v Tvheadend nedoporučil. Pokud si tedy teprve vybíráš, kterou ze služeb budeš používat, tak doporučuji sledovanitv.cz. To je zatím, dle mého názoru a zkušeností, nejlepší a nejstabilnější.
 
Citovat
Zdravim muzete mi nekdo tady poslat jak sem do vlakna nebo do zpravy scripty na sledovanitv? neco na zpusob jako od clienta t-mobile a pod..? zkousel jsem neco rozjet tady z tohodle vlakna ale bez uspechu nejak nevim co s tim.. a na github co je script tak neni moc dobry .. sem tam cerny obraz jen zvuk a pod..
VPS TVH, Webgrab... Server > Odroid-N2 Coreelec (Tvheadend client)
 
Citovat
@djlucas Jestli myslíš toto: https://www.xbmc-kodi.cz/prispevek-tvhea...1#pid71271, tak asi lepší nenajdeš. Černý obraz a jen zvuk, to se stává, ale po prvním naladění po novém scanu kanálů se to spraví. A protože scan pak už nemusíš provádět, je to v pohodě. Já mám sice také své řešení podobné t-mobile, ale to je v prinicpu stejné. Zveřejnit ho, k tomu sem se ještě bohužel nedostal... Sad
 
Citovat
Ten od krejciho mi jede ale s problémy.. ze startu černý obraz.. ok další přepnutí bylo už dobre.. ale po půl dni zase černá obrazovka.. a poněkud zdlouhavé přepínání cca 3-6s

Snažil jsem se rozjet ten od jiro na pate straně ale neslo mi to při výpisu a registraci zařízení psalo null null
VPS TVH, Webgrab... Server > Odroid-N2 Coreelec (Tvheadend client)
 
Citovat
@djlucas Hele, jedině, že bych sem (resp. do tématu Přehled skriptů pro OTT IPTV v TVHeadend) hodil současný stav mého sledovani/ietv.cz/sk s tím, že to nebude úplně doladěné a bude to zatím bez epg.
 
Citovat
Klidně můžeš epg si řeším přes webgrab
VPS TVH, Webgrab... Server > Odroid-N2 Coreelec (Tvheadend client)
 
Citovat
@Client: To by bylo skvělé.
 
Citovat
Exclamation 
Ahoj mám dotaz, trápím se s PHP. Uměl by někdo převést tento sh script na PHP?
Zadávám "streamer.sh Filmbox" a vyjede obsah streamu, který pak ukládám jako m3u8....
Kód:
 
#!/bin/bash
# Verze 0.3
# Streamer, který vytváří stream pro Tvheadend předávaný metodou pipe:// na stdout scriptu, resp. volaného ffmpeg.
# Závislosti: ffmpeg, wget, jq
# Předpoklady: existuje soubor acces.id s aktuálními parametry přihlášeného a registrovaného zařízení

# Začátek části zadání uživatelských parametrů
# Pozn: Veškeré parametry bez mezer a českých znaků!
# Identifikace poskytovatele služby , které se přense do Kodi jako "Poskytovatel" - zobrazí se v OSD PVR
provider=sport
# Typ zařízení. Je určující pro nabídku streamů služby {STB, PC, TABLET, MOBILE}
device_type=PC
# Rozlišení, závisí na typu zařízení {HD, SD} Např, pro STB je HD 1920x1080, 50 FPS a SD 1024x576, 25 FPS. 
resolution=SD
# Absolutní cesta k adresáři služby ve tvaru /.../
data=/home/hts/o2tv/
# Absolutní cesta k adresáři s ffmpeg /.../ nebo prázdné (prog=)
prog=
# Konec části zadání uživatelských parametrů

channel=$1

streaming_protocol=HLS

access_id=$(cat ${data}access.id | head -n 1 )
device_id=$(echo ${access_id} | cut -d' ' -f2)
access_token=$(echo ${access_id} | cut -d' ' -f3)
subscription=$(echo ${access_id} | cut -d' ' -f4)

json=$(wget -qO - --header "X-NanguTv-Access-Token:${access_token}" --header "X-NanguTv-Device-Id:${device_id}" "https://app.o2tv.cz/sws/server/streaming/uris.json?serviceType=LIVE_TV&deviceType=${device_type}&streamingProtocol=${streaming_protocol}&subscriptionCode=${subscription}&resolution=${resolution}&channelKey=${channel}&encryptionType=NONE")

sed_string=s/_sd_/_hd_/g
[ "${resolution}" = "SD" ] && sed_string=s/_hd_/_sd_/g
stream=$(echo ${json} | sed "${sed_string}" | jq -r '.uris' | jq '.[0].uri' | tr -d '"')

wget -qO - ${stream}

Příklad access_id:
Kód:
test 41fa660018nnknxk MmQ1ODdkYTEtNzY3OC00ZTYyLTljNmYtODAzYWRiZjBjopt viktor06






Mám přestavu že zadám channel, device_type, resolution, něco jako
/url/script.php?ch=nova&d=PC&r=SD 

Kdyby se někomu povedlo byl bych vděčný... 6

Díky
 
Citovat
o2tv.php?ch=ČT24 HD&d=STB
o2tv.php?ch=ČT24%20HD&d=MOBILE

Kód:
<?php
#login
$username = "email";
$password = "heslo";

#params
$channel = rawurlencode($_GET["ch"]);
$type = $_GET["d"];

# token
$data = array('grant_type' => 'password', 'client_id' => 'tef-web-portal-etnetera','client_secret' => '2b16ac9984cd60dd0154f779ef200679','username' => ''.$username.'','password' => ''.$password.'', 'platform_id' => '231a7d6678d00c65f6f3b2aaa699a0d0', 'language' => 'cs');
$ch = curl_init('https://oauth.o2tv.cz/oauth/token');
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: oauth.o2tv.cz', 'User-Agent: okhttp/3.12.2', 'Accept-Encoding: gzip', 'Connection: Keep-Alive', 'Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$j = json_decode($result,true);
$token = $j["access_token"];
curl_close($ch);

# configuration
$ch = curl_init('https://app.o2tv.cz/sws/subscription/settings/subscription-configuration.json');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-NanguTv-Device-Id: 172c533453e1b16e', 'X-NanguTv-Device-Name: Nexus 7', 'X-NanguTv-App-Version: Android#6.8.1', 'Host: oauth.o2tv.cz', 'User-Agent: okhttp/3.12.2', 'Accept-Encoding: gzip', 'Connection: Keep-Alive', 'Content-Type: application/x-www-form-urlencoded', 'X-NanguTv-Access-Token: '.$token.''));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$j = json_decode($result,true);
$subscription_code = $j["subscription"];

#streaming
$uris = 'https://app.o2tv.cz/sws/server/streaming/uris.json?serviceType=LIVE_TV&deviceType='.$type.'&streamingProtocol=HLS&subscriptionCode='.$subscription_code.'&channelKey='.$channel.'&encryptionType=NONE';
$ch = curl_init($uris);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-NanguTv-Device-Id: 172c533453e1b16e', 'X-NanguTv-Device-Name: Nexus 7', 'X-NanguTv-App-Version: Android#6.8.1', 'Host: oauth.o2tv.cz', 'User-Agent: okhttp/3.12.2', 'Accept-Encoding: gzip', 'Connection: Keep-Alive', 'Content-Type: application/x-www-form-urlencoded', 'X-NanguTv-Access-Token: '.$token.''));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$j = json_decode($result,true);
$url = $j['uris'][0]['uri'];
header('Location: '.$url.'');
?>

Seznam kanálů:
https://mapi.o2tv.cz/unity/api/v1/channels/
 
Citovat
@Saros: Děkuji moc.. Ale když dám do VLC url/o2tv.php?ch=ČT24 HD&d=STB tak jen někdy to vybere fhd stream.... 8
 
Citovat
@otava5 No, tohle je specifický problém implementace Nangu pro O2TV. Někdy, bez ohledu na filtr v requestu, vrátí server json s více variantami streamu (SD i HD). Jsou dvě možnosti, buď ten seznam projít a nalézt stream HD (což ale může prodloužit dobu spuštění přehrávání) nebo adresu streamu natvrdo přepsat.
 
Citovat
Ale ono to jde. Pridej parametr "&r=" HD nebo SD
Kód:
<?php
#login
$username = "email";
$password = "heslo";

#params
$channel = rawurlencode($_GET["ch"]);
$type = $_GET["d"];
$resolution = $_GET["r"];

# token
$data = array('grant_type' => 'password', 'client_id' => 'tef-web-portal-etnetera','client_secret' => '2b16ac9984cd60dd0154f779ef200679','username' => ''.$username.'','password' => ''.$password.'', 'platform_id' => '231a7d6678d00c65f6f3b2aaa699a0d0', 'language' => 'cs');
$ch = curl_init('https://oauth.o2tv.cz/oauth/token');
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: oauth.o2tv.cz', 'User-Agent: okhttp/3.12.2', 'Accept-Encoding: gzip', 'Connection: Keep-Alive', 'Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$j = json_decode($result,true);
$token = $j["access_token"];
curl_close($ch);

# configuration
$ch = curl_init('https://app.o2tv.cz/sws/subscription/settings/subscription-configuration.json');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-NanguTv-Device-Id: 172c533453e1b16e', 'X-NanguTv-Device-Name: Nexus 7', 'X-NanguTv-App-Version: Android#6.8.1', 'Host: oauth.o2tv.cz', 'User-Agent: okhttp/3.12.2', 'Accept-Encoding: gzip', 'Connection: Keep-Alive', 'Content-Type: application/x-www-form-urlencoded', 'X-NanguTv-Access-Token: '.$token.''));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$j = json_decode($result,true);
$subscription_code = $j["subscription"];

#streaming
$uris = 'https://app.o2tv.cz/sws/server/streaming/uris.json?serviceType=LIVE_TV&deviceType='.$type.'&streamingProtocol=HLS&subscriptionCode=OTT-NONMOJEO2-109540&channelKey='.$channel.'&encryptionType=NONE';
$ch = curl_init($uris);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-NanguTv-Device-Id: 172c533453e1b16e', 'X-NanguTv-Device-Name: Nexus 7', 'X-NanguTv-App-Version: Android#6.8.1', 'Host: oauth.o2tv.cz', 'User-Agent: okhttp/3.12.2', 'Accept-Encoding: gzip', 'Connection: Keep-Alive', 'Content-Type: application/x-www-form-urlencoded', 'X-NanguTv-Access-Token: '.$token.''));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$j = json_decode($result,true);
$j = $j['uris'];
foreach($j as $v){
    $q = $v['resolution'];
    if ($q == $resolution) {
        $url = $v['uri'];
    }
}
header('Location: '.$url.'');
?>

Podle me je lepsi reseni nez toto. Mam udelanej skrip (teda pro jinyho poskytovatele), kterej mi v urcity cas treba 1x denne vygeneruje na server cely playlist. Teda ne primo playlist, ale jednotlive kanaly. Jejich odkazy pak ulozim do playlistu. Ten se nemeni, jen obsah v tech jednotlivych kanalech. Nezatezuju tak poskytovatele a stream se hned spusti. Generovani delam pomoci IFTTT.
 
Citovat
@Saros: Není v tom scriptu HD/SD chyba ? Nedělá nic ...

Já ale nezjistil jaké O2 má pravidla na token... Něco jako když ten soubor neotevřeš tak přestane po určité době fungovat a nevím jaké... Jedině gen 4x do hodiny 1
 
Citovat
@Saros Ad. "parametr "&r=" HD nebo SD". Jistě, tento parametr v requestech používám odjakživa, a i přesto jsou na straně serverů situace, kdy začnou vracet vektor adres streamů, kde jsou odkazy jak na HD tak SD streamy, bez ohledu, co je v requestu. Věř tomu, stává se to. Monitoruji si dlouhdobě odpovědi serveru, a čas od času se to objeví. Ono to Nangu pro O2TV se chová dost "gumově". Například v okamžiku enormní zátěže například přejdou na jiný typ odpovědi v adrese streamu, kdy v podstatě začnou ignorovat autentizaci a vrací adresy steramu, které když si odchytíš, tak můžeš přehrávat i bez ní (tedy té autentizace) a to kdekoliv. Proto raději ty adresy parsuji a případně upravím na adresu HD scriptu (liší se od sebe pouze tím označením kvality). Prohledávat ten vektor v sh scriptu, který používám, by totiž trvalo dlouho. To, že teď ti to funguje (vrací to typ streamu podle requestu) nic neznamená. To už tady bylo několikrát, pak na servery nahráli nějakou jinou verzi a zase to ten parameter kvality v requestu přestalo respektovat.

Ad "lepší řešení". Tohle řešení používáme v sh scriptech O2TV již dlouho. Bez ní by toto řešení nepřežilo ty obstrukce poskytovatele, kvůli kterým jiná O2TV řešení v Kodi a Tvheadend měla problémy. Však se také O2Tv už cca před rokem začalo bouřit a měnit akceptovatelné requesty, což způsobilo, že ta původní řešení (a la @JiRo nebo @pavuucek) přestala fungovat. Zato sh scripty pro O2TV a Tvhedend fungují bez problémů již několik let. Já tady to nepřímé adresování (v playlistu je pouze spuštění výkonného scriptu a identifikace kanálu (a případně další parametry), které se tomuto scriptu předávají, používám od samotného začátku. Jednak je to nutné kvůli lepší funkci Tvheadend, jedna to právě odlehčuje zátěži některých poskytovatelů (např. právě O2TV od Nangu).

@otava Člověče, vždyť tyhle věci přeci už znáš? 1 V sh scriptech pro Tvheadend se to dělá stejně a pokud se nepletu, tak jsme to spolu už kdysi řešili. Ten request, který vrátí adresu streamu s tokenem, se posílá v okamžiku, když si spustíš přehrávání kanálu. Takže tě platnost tokenu nemusí zajímat, protože stream se spustí hned poté, co ti ho server vrátí.
 
Citovat
Jaký vám z toho leze fps?
 
Citovat
@Saros Dříve to jelo 50 FPS, aktuálně už jen 25 FPS. Ani nevím, kdy došlo ke změně nebo co se událo.
 
Citovat
No kvalita obrazu nic moc. Z tech vsech sportovnich kanalu co mam asi nejhorsi (ruzny zdroje)
 
Citovat
@Client: zvláštní Kodi ukazuje 50fps vlc 25...
 
Citovat
@otava5 Jak jsem napsal. Vždycky to jelo 50, teď nevím proč jen 25. Ale já nejsem doma, díval jsme se na to přes VPN, takže možná nějaký zádrhel. Budu to muset zkontrolovat, protože podle toho, jak to vypadá doma se mi nezdá, že by to mělo jet jen na těch 25 FPS... Tak uvidím.

No jasně, jsem blbec. 50 FPS při zrušení prokládáíní, jinak 25 FPS. 10
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)