From a36f32990ffaa6b618b84552004bd395d9db757f Mon Sep 17 00:00:00 2001 From: croneter Date: Wed, 8 Dec 2021 17:17:32 +0100 Subject: [PATCH 1/3] Refactor requests Sessions code --- resources/lib/plex_companion/playstate.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/resources/lib/plex_companion/playstate.py b/resources/lib/plex_companion/playstate.py index 1fe41d20..682730d9 100644 --- a/resources/lib/plex_companion/playstate.py +++ b/resources/lib/plex_companion/playstate.py @@ -4,8 +4,8 @@ from logging import getLogger import requests from threading import Thread -from .common import communicate, proxy_headers, proxy_params, log_error, \ - UUIDStr, Subscriber, timeline, stopped_timeline +from .common import communicate, log_error, UUIDStr, Subscriber, timeline, \ + stopped_timeline, create_requests_session from .playqueue import compare_playqueues from .webserver import ThreadedHTTPServer, CompanionHandlerClassFactory from .plexgdm import plexgdm @@ -81,13 +81,7 @@ class PlaystateMgr(backgroundthread.KillableThread): def _get_requests_session(self): if self.s is None: - log.debug('Creating new requests session') - self.s = requests.Session() - self.s.headers = proxy_headers() - self.s.verify = app.CONN.verify_ssl_cert - if app.CONN.ssl_cert_path: - self.s.cert = app.CONN.ssl_cert_path - self.s.params = proxy_params() + self.s = create_requests_session() return self.s def _close_requests_session(self): From f3ef6bdfe6f9fc3053e488820eb5a06c536b0024 Mon Sep 17 00:00:00 2001 From: croneter Date: Tue, 21 Dec 2021 15:15:29 +0100 Subject: [PATCH 2/3] Remove obsolete comments --- resources/lib/json_rpc.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/resources/lib/json_rpc.py b/resources/lib/json_rpc.py index 8a6f00a6..3c060e91 100644 --- a/resources/lib/json_rpc.py +++ b/resources/lib/json_rpc.py @@ -442,8 +442,6 @@ def get_current_subtitle_stream_index(playerid): """ Returns the currently active subtitle stream index [int] or None if there are no subs - PICKING UP CHANGES ON SUBTITLES IS CURRENTLY BROKEN ON THE KODI SIDE! The - JSON reply won't change even though subtitles are changed :-( """ try: return JsonRPC('Player.GetProperties').execute({ @@ -456,8 +454,6 @@ def get_current_subtitle_stream_index(playerid): def get_subtitle_enabled(playerid): """ Returns True if a subtitle is currently enabled, False otherwise. - PICKING UP CHANGES ON SUBTITLES IS CURRENTLY BROKEN ON THE KODI SIDE! The - JSON reply won't change even though subtitles are changed :-( """ return JsonRPC('Player.GetProperties').execute({ 'playerid': playerid, From d8c96fa699bed220a3e58f7de0b61b47fd71bf93 Mon Sep 17 00:00:00 2001 From: croneter Date: Wed, 22 Dec 2021 13:38:50 +0100 Subject: [PATCH 3/3] Fix PKC changing subtitles on playback start unnecessarily --- resources/lib/playlist_func.py | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/resources/lib/playlist_func.py b/resources/lib/playlist_func.py index c0ebfd2f..e65277df 100644 --- a/resources/lib/playlist_func.py +++ b/resources/lib/playlist_func.py @@ -357,6 +357,7 @@ class PlaylistItem(object): PF.change_video_stream(plex_stream_index, self.api.part_id()) def _set_kodi_stream_if_different(self, kodi_index, typus): + """Will always activate subtitles.""" if typus == 'video': current = js.get_current_video_stream_index(self.playerid) if current != kodi_index: @@ -371,16 +372,32 @@ class PlaylistItem(object): app.APP.player.setAudioStream(kodi_index) else: LOG.debug('Not switching audio stream (no change)') + elif typus == 'subtitle': + current = js.get_current_subtitle_stream_index(self.playerid) + enabled = js.get_subtitle_enabled(self.playerid) + if current != kodi_index: + LOG.debug('Switching subtitle stream') + app.APP.player.setAudioStream(kodi_index) + else: + LOG.debug('Not switching subtitle stream (no change)') + if not enabled: + LOG.debug('Enabling subtitles') + app.APP.player.showSubtitles(True) + else: + raise RuntimeError('Unknown stream type %s' % typus) def switch_to_plex_stream(self, typus): try: plex_index, language_tag = self.active_plex_stream_index(typus) except TypeError: + # Only happens if Plex did not provide us with a suitable sub + # Meaning Plex tells us to deactivate subs LOG.debug('Deactivating Kodi subtitles because the PMS ' 'told us to not show any subtitles') app.APP.player.showSubtitles(False) self._current_kodi_sub_stream_enabled = False return + # Rest: video, audio and activated subs LOG.debug('The PMS wants to display %s stream with Plex id %s and ' 'languageTag %s', typus, plex_index, language_tag) try: @@ -396,13 +413,7 @@ class PlaylistItem(object): typus, kodi_index, plex_index) # If we're choosing an "illegal" index, this function does # need seem to fail nor log any errors - if typus == 'audio': - self._set_kodi_stream_if_different(kodi_index, 'audio') - elif typus == 'subtitle': - app.APP.player.setSubtitleStream(kodi_index) - app.APP.player.showSubtitles(True) - elif typus == 'video': - self._set_kodi_stream_if_different(kodi_index, 'video') + self._set_kodi_stream_if_different(kodi_index, typus) if typus == 'audio': self._current_kodi_audio_stream = kodi_index elif typus == 'subtitle':