From feea23e9daf6b74b0451aa06c81a70c7d3d870f0 Mon Sep 17 00:00:00 2001 From: Matt Date: Tue, 17 Nov 2020 12:10:04 -0500 Subject: [PATCH] Voidless playback. Slightly important --- jellyfin_kodi/entrypoint/default.py | 2 +- jellyfin_kodi/helper/playutils.py | 19 +++++++++---------- jellyfin_kodi/objects/actions.py | 2 +- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/jellyfin_kodi/entrypoint/default.py b/jellyfin_kodi/entrypoint/default.py index 7fc1b0dc..1b4a6d42 100644 --- a/jellyfin_kodi/entrypoint/default.py +++ b/jellyfin_kodi/entrypoint/default.py @@ -844,7 +844,7 @@ def get_themes(api_client): paths = [] for theme in themes['ThemeVideosResult']['Items'] + themes['ThemeSongsResult']['Items']: - putils = PlayUtils(theme, False, None, server, token) + putils = PlayUtils(theme, False, None, server, api_client) if play: paths.append(putils.direct_play(theme['MediaSources'][0])) diff --git a/jellyfin_kodi/helper/playutils.py b/jellyfin_kodi/helper/playutils.py index f5b92fc6..338e5415 100644 --- a/jellyfin_kodi/helper/playutils.py +++ b/jellyfin_kodi/helper/playutils.py @@ -12,7 +12,6 @@ from kodi_six import xbmc, xbmcvfs import client import requests from helper import LazyLogger -from jellyfin import Jellyfin from . import translate, settings, window, dialog, api @@ -53,26 +52,26 @@ def set_properties(item, method, server_id=None): class PlayUtils(object): - def __init__(self, item, force_transcode=False, server_id=None, server=None, token=None): + def __init__(self, item, force_transcode=False, server_id=None, server=None, api_client=None): ''' Item will be updated with the property PlaybackInfo, which holds all the playback information. ''' self.item = item self.item['PlaybackInfo'] = {} - self.jellyfin_client = Jellyfin(server_id).get_client() + self.api_client = api_client self.info = { 'ServerId': server_id, 'ServerAddress': server, 'ForceTranscode': force_transcode, - 'Token': token or self.jellyfin_client.auth.jellyfin_token() + 'Token': api_client.config.data['auth.token'] } def get_sources(self, source_id=None): ''' Return sources based on the optional source_id or the device profile. ''' - info = self.jellyfin_client.jellyfin.get_play_info(self.item['Id'], self.get_device_profile()) + info = self.api_client.get_play_info(self.item['Id'], self.get_device_profile()) LOG.info(info) self.info['PlaySessionId'] = info['PlaySessionId'] sources = [] @@ -213,7 +212,7 @@ class PlayUtils(object): ''' Get live stream media info. ''' - info = self.jellyfin_client.jellyfin.get_live_stream(self.item['Id'], self.info['PlaySessionId'], source['OpenToken'], self.get_device_profile()) + info = self.api_client.get_live_stream(self.item['Id'], self.info['PlaySessionId'], source['OpenToken'], self.get_device_profile()) LOG.info(info) if info['MediaSource'].get('RequiresClosing'): @@ -498,7 +497,7 @@ class PlayUtils(object): mapping = {} kodi = 0 - server_settings = self.jellyfin_client.jellyfin.get_transcode_settings() + server_settings = self.api_client.get_transcode_settings() for stream in source['MediaStreams']: if stream['SupportsExternalStream'] and stream['Type'] == 'Subtitle' and stream['DeliveryMethod'] == 'External': @@ -587,7 +586,7 @@ class PlayUtils(object): subs_streams = collections.OrderedDict() streams = source['MediaStreams'] - server_settings = self.jellyfin_client.jellyfin.get_transcode_settings() + server_settings = self.api_client.get_transcode_settings() allow_burned_subs = settings('allowBurnedSubs.bool') for stream in streams: @@ -654,7 +653,7 @@ class PlayUtils(object): if subtitle: index = subtitle - server_settings = self.jellyfin_client.jellyfin.get_transcode_settings() + server_settings = self.api_client.get_transcode_settings() stream = streams[index] if server_settings['EnableSubtitleExtraction'] and stream['SupportsExternalStream']: @@ -674,7 +673,7 @@ class PlayUtils(object): if index is not None: - server_settings = self.jellyfin_client.jellyfin.get_transcode_settings() + server_settings = self.api_client.get_transcode_settings() stream = streams[index] if server_settings['EnableSubtitleExtraction'] and stream['SupportsExternalStream']: diff --git a/jellyfin_kodi/objects/actions.py b/jellyfin_kodi/objects/actions.py index f7d708c2..108c5c81 100644 --- a/jellyfin_kodi/objects/actions.py +++ b/jellyfin_kodi/objects/actions.py @@ -51,7 +51,7 @@ class Actions(object): transcode = transcode or settings('playFromTranscode.bool') kodi_playlist = self.get_playlist(item) - play = playutils.PlayUtils(item, transcode, self.server_id, self.server) + play = playutils.PlayUtils(item, transcode, self.server_id, self.server, self.api_client) source = play.select_source(play.get_sources()) play.set_external_subs(source, listitem)