From 88dd33d4ce4c182b34c97aa99e009dd1aa31d078 Mon Sep 17 00:00:00 2001 From: angelblue05 Date: Wed, 4 Oct 2017 17:35:40 -0500 Subject: [PATCH] Fixed few bugs in playback video res not having values, audio url missing ?, support new server setting that disables subs extraction --- resources/lib/playutils.py | 22 ++++++++++++++++------ resources/lib/read_embyserver.py | 5 +++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/resources/lib/playutils.py b/resources/lib/playutils.py index 9fac6655..2a424459 100644 --- a/resources/lib/playutils.py +++ b/resources/lib/playutils.py @@ -12,6 +12,7 @@ import xbmcvfs import clientinfo import downloadutils +import read_embyserver as embyserver from utils import window, settings, language as lang ################################################################################################# @@ -28,6 +29,7 @@ class PlayUtils(): self.item = item self.clientInfo = clientinfo.ClientInfo() + self.emby = embyserver.Read_EmbyServer() self.userid = window('emby_currUser') self.server = window('emby_server%s' % self.userid) @@ -121,7 +123,7 @@ class PlayUtils(): mediatype = self.item['MediaType'] if mediatype == "Audio": - playurl = "%s/emby/Audio/%s/stream" % (self.server, itemid) + playurl = "%s/emby/Audio/%s/stream?" % (self.server, itemid) else: playurl = "%s/emby/Videos/%s/stream?static=true" % (self.server, itemid) @@ -289,7 +291,7 @@ class PlayUtils(): # Allow strm loading when direct streaming playurl = self.directPlay() elif self.item['Type'] == "Audio": - playurl = "%s/emby/Audio/%s/stream.mp3" % (self.server, self.item['Id']) + playurl = "%s/emby/Audio/%s/stream.mp3?" % (self.server, self.item['Id']) else: playurl = "%s/emby/Videos/%s/stream?static=true" % (self.server, self.item['Id']) @@ -429,7 +431,7 @@ class PlayUtils(): default = stream['IsDefault'] forced = stream['IsForced'] - downloadable = stream['IsTextSubtitleStream'] + downloadable = stream['SupportsExternalStream'] if default: track = "%s - Default" % track @@ -464,9 +466,10 @@ class PlayUtils(): # User selected subtitles selected = subtitleStreams[resp] selectSubsIndex = subtitleStreamsList[selected] + settings = self.emby.get_server_transcoding_settings() # Load subtitles in the listitem if downloadable - if selectSubsIndex in downloadableStreams: + if settings['EnableSubtitleExtraction'] and selectSubsIndex in downloadableStreams: itemid = self.item['Id'] url = [("%s/Videos/%s/%s/Subtitles/%s/Stream.srt" @@ -680,6 +683,10 @@ class PlayUtils(): if settings('limitResolution') == "true": screenRes = self.getScreenResolution() videoRes = self.getVideoResolution() + + if not videoRes: + return False + return videoRes['width'] > screenRes['width'] or videoRes['height'] > screenRes['height'] else: return False @@ -690,6 +697,9 @@ class PlayUtils(): 'height' : wind.getHeight()} def getVideoResolution(self): - return {'width' : self.item['MediaStreams'][0]['Width'], - 'height' : self.item['MediaStreams'][0]['Height']} + try: + return {'width' : self.item['MediaStreams'][0]['Width'], + 'height' : self.item['MediaStreams'][0]['Height']} + except KeyError as error: + return False diff --git a/resources/lib/read_embyserver.py b/resources/lib/read_embyserver.py index 22084676..1474f287 100644 --- a/resources/lib/read_embyserver.py +++ b/resources/lib/read_embyserver.py @@ -647,3 +647,8 @@ class Read_EmbyServer(): for library in self.doUtils.downloadUrl(url): if library['ItemId'] == view_id: return library['LibraryOptions'] + + def get_server_transcoding_settings(self): + + url = self.get_emby_url('/System/Configuration/encoding') + return self.doUtils.downloadUrl(url)