16.3.2020, 20:33
17.3.2020, 7:02
17.3.2020, 9:11
Nakonec mi PHP funguje takto upravený:
url/script.php?ch=ČT24%20HD&d=?&r=?
za d dosadit STB/PC za r dosadit HD/SD
ale proč vlc vybírá stream jak se mu zlíbí a ne ten poslední nejkvalitnější?
Kód:
<?php
#login
$username = "xx";
$password = "yy";
#params
$channel = rawurlencode($_GET["ch"]);
$type = $_GET["d"];
$res = $_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='.$subscription_code.'&channelKey='.$channel.'&resolution='.$res.'&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.'');
?>
za d dosadit STB/PC za r dosadit HD/SD
ale proč vlc vybírá stream jak se mu zlíbí a ne ten poslední nejkvalitnější?
17.3.2020, 9:46
17.3.2020, 10:23
Jj zapomnel jsem tam dat ten $subscription_code. Ja jsem si ten skript rozdelil na dve casti. Prvni je token a configurarion kdy se mi do souboru ulozi token a subscription_code. Spoustim jen streaming, kdy se mi data nactou ze souboru. Ted jen zjistuju jak dlouho vydrzi ten token a podle toho si pak upravim obnoveni. Taky jsem si tam dal pole abych nemusel do parametru davat cely nazev.
Token:
Streaming:
Pak to mam takto: url/o2tv/o2tv.php?ch=1.m3u8
Pokud se pouzije htaccess tak jen url/o2tv/1.m3u8
Token:
Kód:
<?php
#login
$username = "email";
$password = "heslo";
# 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"];
echo $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"];
echo '</br>'.$subscription_code;
curl_close($ch);
#save data
$file = fopen("./o2tv_data.txt", "w");
fwrite($file, $token."\n".$subscription_code);
fclose($file);
?>
Kód:
<?php
#params
$channel_input = explode(".m3u8", $_GET["ch"]);
$channel_input = $channel_input[0];
$array = array('1' => 'O2 Sport HD', '2' => 'O2 Fotbal HD', '3' => 'O2 Tenis HD');
$arr = $array[$channel_input];
$channel = rawurlencode($arr);
$type = "STB";
$resolution = "HD";
#read data
$lines = file("o2tv_data.txt", FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
$data = array_chunk($lines, 3);
$token = $data[0][0];
$subscription_code = $data[0][1];
#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);
$j = $j['uris'];
foreach($j as $v){
$q = $v['resolution'];
if ($q == $resolution) {
$url = $v['uri'];
}
}
header('Location: '.$url.'');
?>
Pak to mam takto: url/o2tv/o2tv.php?ch=1.m3u8
Pokud se pouzije htaccess tak jen url/o2tv/1.m3u8
17.3.2020, 22:51
funguje vám login.sh nebo zase něco mění?
Kód:
/home/hts/o2tv/login2.sh
access_token : NThkZmU3NzYtNzhiZi00YzYyLTgwY2MtYjlhNjg1YWY5ZD89
refresh_token : ZGExMTRjMjMtOGI3MS00MjRhLTk4NWEtYmEwNWI1OTYwMW15
expires_in : 3153599999
ERROR: Bad registration
17.3.2020, 23:14
Mimochodem, proč se stále přihlašuješ? Já už jedu na jedno přihlášení několik měsíců...
18.3.2020, 9:07
18.3.2020, 11:53
Vzdyt uz jsem to sem daval. Skript je rozdelenej na 2 casti. Jedna je prihlaseni kde se vygeneruje a ulozi token. Pak volas jen druhou cast streaming, kde zadas get parametry. Token se nacte ze souboru. Jestli potrebujes aby se token generoval automaticky v urcitym intervalu, muzes vyuzit treba IFTTT a plugin webhooks.
18.3.2020, 11:56
18.3.2020, 12:46
BTW Podle mých zkušeností není třeba acces_token obnovovat. V Nangu TV je tato možnost obecně k dispozici, ale O2TV ji má implementovanou tak, že expirace je nastavena daleko do budoucnosti.
18.3.2020, 13:09
Chci se zeptat, kdyz mi takhle bezi skript nekde na hostingu, jakou potom vidi ip adresu a id zarizeni?
18.3.2020, 14:54
18.3.2020, 15:14
No ja ze to mam takhle udelany u jinyho poskytovatele a v administraci vidim jen jedno id a jednu ip adresu ze serveru kde mi bezi skript. Registruje to jen prihlaseni. No a na ten skript mi najednou jede az 7 uzivatelu vice jak rok.
18.3.2020, 15:55
25.3.2020, 12:42
25.3.2020, 12:45
Ty restrikce většinou startují na základě UA, takže pokud změníš wget na curl, a nemáš explicitně změněné UA, tak to pomoci může, ale obecně je lepší změnit právě toho UA.
25.3.2020, 14:27
Zdravím,
netušíte, kde by mohla být chyba:
Díky!
netušíte, kde by mohla být chyba:
Kód:
[/share/Public/_o2tv] # ./login.sh
1st authentication method will be used!
WARNING: 1st authentication method not succeeded, 2nd authentication method will be used!
2nd authentication method succeded!
ERROR: Bad registration
[/share/Public/_o2tv] # ls
config.json* config.json.sample* encode1.sed* encode2.sed* login.sh* playlist.sh* streamer.sh*
Díky!
25.3.2020, 16:21
Patrně změna na straně O2TV, nejspíše to povede k nutnosti to přepracovat, případně se už asi s příjmem této služby v Tvheadend budeme muset rozloučit.