@otava5 Použij script od @pavuucek. Nebo je tady někde oprava v modulu o2tvgo.py (myslím, že je to v tom vlákně addon). Má tam doplněný kód, ve kterém se snaží vybrat nejlepší možnou kvalitu v nabízených streamech. Já tam měl taky to původní od @JiRo, kde se bral první nabízený stream a skutečně to někdy a náhodně vrátilo nižší kvalitu. Tak jsem si to podle @pavuucek opravil a funguje mi to super. Vše mám v FHD.
Je to tady:
Je to tady:
Kód:
def url(self):
if not self._o2tv.access_token:
self._o2tv.refresh_access_token()
access_token = self._o2tv.access_token
if not self._o2tv.subscription_code:
self._o2tv.refresh_configuration()
subscription_code = self._o2tv.subscription_code
playlist = None
while access_token:
params = {"serviceType":"LIVE_TV",
"subscriptionCode":subscription_code,
"channelKey": self.channel_key,
"deviceType":self.quality,
"streamingProtocol":"HLS"} # JiRo - doplněn parametr kvality
headers = _COMMON_HEADERS
cookies = { "access_token": access_token, "deviceId": self._o2tv.device_id }
req = requests.get('http://app.o2tv.cz/sws/server/streaming/uris.json', params=params, headers=headers, cookies=cookies)
jsonData = req.json()
access_token = None
if 'statusMessage' in jsonData:
status = jsonData['statusMessage']
if status == 'bad-credentials':
access_token = self._o2tv.refresh_access_token()
elif status == 'channel.not-found':
raise ChannelIsNotBroadcastingError()
else:
raise Exception(status)
else:
# Pavuucek: Pokus o vynucení HD kvality
playlist = ""
# pro kvalitu STB nebo PC se pokusíme vybrat HD adresu.
# když není k dispozici, tak první v seznamu
if self.quality == "STB" or self.quality == "PC":
for uris in jsonData["uris"]:
if uris["resolution"] == "HD" and playlist == "":
# vezmi první HD adresu
playlist = uris["uri"]
# playlist nebyl přiřazený, takže první adresa v seznamu
if playlist == "":
playlist = jsonData["uris"][0]["uri"]
return playlist