From 5be1e3a24a235cce63d1945b6e89c0e0bcd6ac86 Mon Sep 17 00:00:00 2001 From: tomkat83 Date: Thu, 10 Mar 2016 12:47:30 +0100 Subject: [PATCH] Fix KeyError in library sync --- resources/language/English/strings.xml | 1 + resources/language/German/strings.xml | 1 + resources/lib/PlexAPI.py | 18 +++++++++--------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/resources/language/English/strings.xml b/resources/language/English/strings.xml index 180830bd..e5e9cf6b 100644 --- a/resources/language/English/strings.xml +++ b/resources/language/English/strings.xml @@ -396,6 +396,7 @@ Enter PIN for user Could not log in user Please try again. + unknown Library sync thread has crashed. You should restart Kodi now. Please report this on the forum diff --git a/resources/language/German/strings.xml b/resources/language/German/strings.xml index 032c2d38..f513de82 100644 --- a/resources/language/German/strings.xml +++ b/resources/language/German/strings.xml @@ -328,6 +328,7 @@ PIN eingeben für Benutzer Anmeldung fehlgeschlagen für Benutzer Bitte erneut versuchen. + unbekannt Die Synchronisierung der Plex Bibliotheken ist abgestürzt. Bitte Kodi neu starten. Danke, wenn Sie sich die Zeit nehmen und im Plex Forum vom Absturz berichten. diff --git a/resources/lib/PlexAPI.py b/resources/lib/PlexAPI.py index 315a5a41..1f1e47a4 100644 --- a/resources/lib/PlexAPI.py +++ b/resources/lib/PlexAPI.py @@ -1428,6 +1428,8 @@ class API(): self.part = 0 self.clientinfo = clientinfo.ClientInfo() self.clientId = self.clientinfo.getDeviceId() + self.__language__ = xbmcaddon.Addon().getLocalizedString + self.userId = utils.window('emby_currUser') self.server = utils.window('emby_server%s' % self.userId) self.token = utils.window('emby_accessToken%s' % self.userId) @@ -2007,21 +2009,19 @@ class API(): elif mediaType == 2: # Audio streams audiotrack = {} audiotrack['codec'] = mediaStream['codec'].lower() - profile = mediaStream['codecID'].lower() + profile = mediaStream.get('codecID', '').lower() if "dca" in audiotrack['codec'] and "dts-hd ma" in profile: audiotrack['codec'] = "dtshd_ma" audiotrack['channels'] = mediaStream.get('channels') - try: - audiotrack['language'] = mediaStream.get('language') - except KeyError: - audiotrack['language'] = 'unknown' + # 'unknown' if we cannot get language + audiotrack['language'] = mediaStream.get( + 'language', self.__language__(39310)) audiotracks.append(audiotrack) elif mediaType == 3: # Subtitle streams - try: - subtitlelanguages.append(mediaStream['language']) - except: - subtitlelanguages.append("Unknown") + # 'unknown' if we cannot get language + subtitlelanguages.append( + mediaStream.get('language', self.__language__(39310))) return { 'video': videotracks, 'audio': audiotracks,