From bc88bd0eac614dd020f99e1b7146748a055f1238 Mon Sep 17 00:00:00 2001 From: TrueTechy Date: Sun, 8 Sep 2019 17:17:46 +0100 Subject: [PATCH] Fix rebase mess-up --- resources/lib/connect.py | 2 +- resources/lib/downloader.py | 4 +- resources/lib/full_sync.py | 2 +- resources/lib/helper/wrapper.py | 2 +- resources/lib/jellyfin/core/http.py | 6 +-- resources/lib/library.py | 10 ++-- resources/lib/monitor.py | 72 +++++++++++------------------ resources/lib/objects/actions.py | 4 +- resources/lib/objects/movies.py | 2 +- resources/lib/objects/music.py | 8 ++-- resources/lib/objects/tvshows.py | 4 +- resources/lib/player.py | 16 +++---- resources/lib/views.py | 4 +- 13 files changed, 58 insertions(+), 78 deletions(-) diff --git a/resources/lib/connect.py b/resources/lib/connect.py index 6f745e1d..6e4578db 100644 --- a/resources/lib/connect.py +++ b/resources/lib/connect.py @@ -148,7 +148,7 @@ class Connect(object): ''' Save user info. ''' - self.user = client['api'].get_user() + self.user = client.jellyfin.get_user() settings('username', self.user['Name']) if 'PrimaryImageTag' in self.user: diff --git a/resources/lib/downloader.py b/resources/lib/downloader.py index 53efc1be..f4d4714f 100644 --- a/resources/lib/downloader.py +++ b/resources/lib/downloader.py @@ -41,7 +41,7 @@ def browse_info(): def _http(action, url, request={}, server_id=None): request.update({'url': url, 'type': action}) - return Jellyfin(server_id)['http/request'](request) + return Jellyfin(server_id).http.request(request) def _get(handler, params=None, server_id=None): @@ -305,7 +305,7 @@ class GetItemWorker(threading.Thread): } try: - result = self.server['http/request'](request, s) + result = self.server.http.request(request, s) for item in result['Items']: diff --git a/resources/lib/full_sync.py b/resources/lib/full_sync.py index 50560cea..6ba1c86b 100644 --- a/resources/lib/full_sync.py +++ b/resources/lib/full_sync.py @@ -228,7 +228,7 @@ class FullSync(object): return - library = self.server['api'].get_item(library_id.replace('Mixed:', "")) + library = self.server.jellyfin.get_item(library_id.replace('Mixed:', "")) if library_id.startswith('Mixed:'): for mixed in ('movies', 'tvshows'): diff --git a/resources/lib/helper/wrapper.py b/resources/lib/helper/wrapper.py index 71c07280..b5a89976 100644 --- a/resources/lib/helper/wrapper.py +++ b/resources/lib/helper/wrapper.py @@ -136,7 +136,7 @@ def library_check(): view = None if view is None: - ancestors = self.server['api'].get_ancestors(item['Id']) + ancestors = self.server.jellyfin.get_ancestors(item['Id']) if not ancestors: if item['Type'] == 'MusicArtist': diff --git a/resources/lib/jellyfin/core/http.py b/resources/lib/jellyfin/core/http.py index da237895..07d9a918 100644 --- a/resources/lib/jellyfin/core/http.py +++ b/resources/lib/jellyfin/core/http.py @@ -108,7 +108,7 @@ class HTTP(object): continue LOG.error(error) - self.client['callback']("ServerUnreachable", {'ServerId': self.config.data['auth.server-id']}) + self.client.callback("ServerUnreachable", {'ServerId': self.config.data['auth.server-id']}) raise HTTPException("ServerUnreachable", error) @@ -130,11 +130,11 @@ class HTTP(object): if r.status_code == 401: if 'X-Application-Error-Code' in r.headers: - self.client['callback']("AccessRestricted", {'ServerId': self.config.data['auth.server-id']}) + self.client.callback("AccessRestricted", {'ServerId': self.config.data['auth.server-id']}) raise HTTPException("AccessRestricted", error) else: - self.client['callback']("Unauthorized", {'ServerId': self.config.data['auth.server-id']}) + self.client.callback("Unauthorized", {'ServerId': self.config.data['auth.server-id']}) self.client.auth.revoke_token() raise HTTPException("Unauthorized", error) diff --git a/resources/lib/library.py b/resources/lib/library.py index a96f5ca5..bf801a5f 100644 --- a/resources/lib/library.py +++ b/resources/lib/library.py @@ -348,7 +348,7 @@ class Library(threading.Thread): if settings('SyncInstallRunDone.bool'): if settings('kodiCompanion.bool'): - for plugin in self.server['api'].get_plugins(): + for plugin in self.server.jellyfin.get_plugins(): if plugin['Name'] in ("Jellyfin.Kodi Sync Queue", "Kodi companion", "Kodi Sync Queue"): if not self.fast_sync(): @@ -400,7 +400,7 @@ class Library(threading.Thread): """ for library in sync['Whitelist']: - data = self.server['api'].get_date_modified(last_sync, library.replace('Mixed:', ""), "Series,Episode,BoxSet,Movie,MusicVideo,MusicArtist,MusicAlbum,Audio") + data = self.server.jellyfin.get_date_modified(last_sync, library.replace('Mixed:', ""), "Series,Episode,BoxSet,Movie,MusicVideo,MusicArtist,MusicAlbum,Audio") [self.updated_output[query['Type']].put(query) for query in data['Items']] """ try: @@ -409,7 +409,7 @@ class Library(threading.Thread): removed = [] for media in filters: - result = self.server['api'].get_sync_queue(last_sync, ",".join([x for x in filters if x != media])) + result = self.server.jellyfin.get_sync_queue(last_sync, ",".join([x for x in filters if x != media])) updated.extend(result['ItemsAdded']) updated.extend(result['ItemsUpdated']) userdata.extend(result['UserDataChanged']) @@ -431,7 +431,7 @@ class Library(threading.Thread): self.removed(removed) """ - result = self.server['api'].get_sync_queue(last_sync) + result = self.server.jellyfin.get_sync_queue(last_sync) self.userdata(result['UserDataChanged']) self.removed(result['ItemsRemoved']) @@ -439,7 +439,7 @@ class Library(threading.Thread): filters.extend(["tvshows", "boxsets", "musicvideos", "music"]) # Get only movies. - result = self.server['api'].get_sync_queue(last_sync, ",".join(filters)) + result = self.server.jellyfin.get_sync_queue(last_sync, ",".join(filters)) self.updated(result['ItemsAdded']) self.updated(result['ItemsUpdated']) self.userdata(result['UserDataChanged']) diff --git a/resources/lib/monitor.py b/resources/lib/monitor.py index 0eed32f8..6268be46 100644 --- a/resources/lib/monitor.py +++ b/resources/lib/monitor.py @@ -125,22 +125,22 @@ class Monitor(xbmc.Monitor): if method == 'GetItem': - item = server['api'].get_item(data['Id']) + item = server.jellyfin.get_item(data['Id']) self.void_responder(data, item) elif method == 'GetAdditionalParts': - item = server['api'].get_additional_parts(data['Id']) + item = server.jellyfin.get_additional_parts(data['Id']) self.void_responder(data, item) elif method == 'GetIntros': - item = server['api'].get_intros(data['Id']) + item = server.jellyfin.get_intros(data['Id']) self.void_responder(data, item) elif method == 'GetImages': - item = server['api'].get_images(data['Id']) + item = server.jellyfin.get_images(data['Id']) self.void_responder(data, item) elif method == 'GetServerAddress': @@ -151,12 +151,12 @@ class Monitor(xbmc.Monitor): elif method == 'GetPlaybackInfo': - sources = server['api'].get_play_info(data['Id'], data['Profile']) + sources = server.jellyfin.get_play_info(data['Id'], data['Profile']) self.void_responder(data, sources) elif method == 'GetLiveStream': - sources = server['api'].get_live_stream(data['Id'], data['PlaySessionId'], data['Token'], data['Profile']) + sources = server.jellyfin.get_live_stream(data['Id'], data['PlaySessionId'], data['Token'], data['Profile']) self.void_responder(data, sources) elif method == 'GetToken': @@ -166,31 +166,31 @@ class Monitor(xbmc.Monitor): elif method == 'GetSession': - session = server['api'].get_device(self.device_id) + session = server.jellyfin.get_device(self.device_id) self.void_responder(data, session) elif method == 'GetUsers': - users = server['api'].get_users() + users = server.jellyfin.get_users() self.void_responder(data, users) elif method == 'GetTranscodeOptions': - result = server['api'].get_transcode_settings() + result = server.jellyfin.get_transcode_settings() self.void_responder(data, result) elif method == 'GetThemes': if data['Type'] == 'Video': - theme = server['api'].get_items_theme_video(data['Id']) + theme = server.jellyfin.get_items_theme_video(data['Id']) else: - theme = server['api'].get_items_theme_song(data['Id']) + theme = server.jellyfin.get_items_theme_song(data['Id']) self.void_responder(data, theme) elif method == 'GetTheme': - theme = server['api'].get_themes(data['Id']) + theme = server.jellyfin.get_themes(data['Id']) self.void_responder(data, theme) elif method == 'Browse': @@ -202,45 +202,41 @@ class Monitor(xbmc.Monitor): elif method == 'BrowseSeason': - result = server['api'].get_seasons(data['Id']) + result = server.jellyfin.get_seasons(data['Id']) self.void_responder(data, result) elif method == 'LiveTV': - result = server['api'].get_channels() + result = server.jellyfin.get_channels() self.void_responder(data, result) elif method == 'RecentlyAdded': - result = server['api'].get_recently_added(data.get('Media'), data.get('Id'), data.get('Limit')) + result = server.jellyfin.get_recently_added(data.get('Media'), data.get('Id'), data.get('Limit')) self.void_responder(data, result) elif method == 'Genres': - result = server['api'].get_genres(data.get('Id')) + result = server.jellyfin.get_genres(data.get('Id')) self.void_responder(data, result) elif method == 'Recommended': - result = server['api'].get_recommendation(data.get('Id'), data.get('Limit')) + result = server.jellyfin.get_recommendation(data.get('Id'), data.get('Limit')) self.void_responder(data, result) elif method == 'RefreshItem': - server['api'].refresh_item(data['Id']) + server.jellyfin.refresh_item(data['Id']) elif method == 'FavoriteItem': - server['api'].favorite(data['Id'], data['Favorite']) + server.jellyfin.favorite(data['Id'], data['Favorite']) elif method == 'DeleteItem': - server['api'].delete_item(data['Id']) + server.jellyfin.delete_item(data['Id']) elif method == 'PlayPlaylist': -<<<<<<< HEAD - server['api'].post_session(server['config/app.session'], "Playing", { -======= server.jellyfin.post_session(server.config.data['app.session'], "Playing", { ->>>>>>> 66679ce... client.py - remove "config" & configuration.py - removed shortcuts and get/set item functions 'PlayCommand': "PlayNow", 'ItemIds': data['Id'], 'StartPositionTicks': 0 @@ -248,7 +244,7 @@ class Monitor(xbmc.Monitor): elif method == 'Play': - items = server['api'].get_items(data['ItemIds']) + items = server.jellyfin.get_items(data['ItemIds']) PlaylistWorker(data.get('ServerId'), items, data['PlayCommand'] == 'PlayNow', data.get('StartPositionTicks', 0), data.get('AudioStreamIndex'), @@ -267,11 +263,8 @@ class Monitor(xbmc.Monitor): self.server_instance(data['ServerId']) elif method == 'AddUser': -<<<<<<< HEAD - server['api'].session_add_user(server['config/app.session'], data['Id'], data['Add']) -======= + server.jellyfin.session_add_user(server.config.data['app.session'], data['Id'], data['Add']) ->>>>>>> 66679ce... client.py - remove "config" & configuration.py - removed shortcuts and get/set item functions self.additional_users(server) elif method == 'Player.OnPlay': @@ -295,24 +288,20 @@ class Monitor(xbmc.Monitor): elif settings('additionalUsers'): users = settings('additionalUsers').split(',') - all_users = server['api'].get_users() + all_users = server.jellyfin.get_users() for additional in users: for user in all_users: if user['Name'].lower() in additional.decode('utf-8').lower(): -<<<<<<< HEAD - server['api'].session_add_user(server['config/app.session'], user['Id'], True) -======= server.jellyfin.session_add_user(server.config.data['app.session'], user['Id'], True) ->>>>>>> 66679ce... client.py - remove "config" & configuration.py - removed shortcuts and get/set item functions self.additional_users(server) def post_capabilities(self, server): LOG.info("--[ post capabilities/%s ]", server.auth.server_id) - server['api'].post_capabilities({ + server.jellyfin.post_capabilities({ 'PlayableMediaTypes': "Audio,Video", 'SupportsMediaControl': True, 'SupportedCommands': ( @@ -329,13 +318,9 @@ class Monitor(xbmc.Monitor): 'IconUrl': "https://raw.githubusercontent.com/jellyfin/jellyfin-kodi/master/kodi_icon.png", }) -<<<<<<< HEAD - session = server['api'].get_device(self.device_id) - server['config']['app.session'] = session[0]['Id'] -======= + session = server.jellyfin.get_device(self.device_id) server.config.data['app.session'] = session[0]['Id'] ->>>>>>> 66679ce... client.py - remove "config" & configuration.py - removed shortcuts and get/set item functions def additional_users(self, server): @@ -345,7 +330,7 @@ class Monitor(xbmc.Monitor): window('JellyfinAdditionalUserImage.%s' % i, clear=True) try: - session = server['api'].get_device(self.device_id) + session = server.jellyfin.get_device(self.device_id) except Exception as error: LOG.exception(error) @@ -353,13 +338,8 @@ class Monitor(xbmc.Monitor): for index, user in enumerate(session[0]['AdditionalUsers']): -<<<<<<< HEAD - info = server['api'].get_user(user['UserId']) - image = api.API(info, server['config/auth.server']).get_user_artwork(user['UserId']) -======= info = server.jellyfin.get_user(user['UserId']) image = api.API(info, server.config.data['auth.server']).get_user_artwork(user['UserId']) ->>>>>>> 66679ce... client.py - remove "config" & configuration.py - removed shortcuts and get/set item functions window('JellyfinAdditionalUserImage.%s' % index, image) window('JellyfinAdditionalUserPosition.%s' % user['UserId'], str(index)) diff --git a/resources/lib/objects/actions.py b/resources/lib/objects/actions.py index de919d8c..5c5b169c 100644 --- a/resources/lib/objects/actions.py +++ b/resources/lib/objects/actions.py @@ -721,7 +721,7 @@ def on_update(data, server): if item: if not window('jellyfin.skip.%s.bool' % item[0]): - server['api'].item_played(item[0], playcount) + server.jellyfin.item_played(item[0], playcount) window('jellyfin.skip.%s' % item[0], clear=True) @@ -769,7 +769,7 @@ def on_play(data, server): return - item = server['api'].get_item(item[0]) + item = server.jellyfin.get_item(item[0]) item['PlaybackInfo'] = {'Path': file} playutils.set_properties(item, 'DirectStream' if settings('useDirectPaths') == '0' else 'DirectPlay') diff --git a/resources/lib/objects/movies.py b/resources/lib/objects/movies.py index b30851b5..9734000f 100644 --- a/resources/lib/objects/movies.py +++ b/resources/lib/objects/movies.py @@ -171,7 +171,7 @@ class Movies(KodiDb): try: if obj['LocalTrailer']: - trailer = self.server['api'].get_local_trailers(obj['Id']) + trailer = self.server.jellyfin.get_local_trailers(obj['Id']) obj['Trailer'] = "plugin://plugin.video.jellyfin/trailer?id=%s&mode=play" % trailer[0]['Id'] elif obj['Trailer']: diff --git a/resources/lib/objects/music.py b/resources/lib/objects/music.py index 2c73d688..ebcd7af4 100644 --- a/resources/lib/objects/music.py +++ b/resources/lib/objects/music.py @@ -221,7 +221,7 @@ class Music(KodiDb): except TypeError: try: - self.artist(self.server['api'].get_item(temp_obj['Id']), library=None) + self.artist(self.server.jellyfin.get_item(temp_obj['Id']), library=None) temp_obj['ArtistId'] = self.jellyfin_db.get_item_by_id(*values(temp_obj, QUEM.get_item_obj))[0] except Exception as error: LOG.exception(error) @@ -324,7 +324,7 @@ class Music(KodiDb): if obj['SongAlbumId'] is None: raise TypeError("No album id found associated?") - self.album(self.server['api'].get_item(obj['SongAlbumId'])) + self.album(self.server.jellyfin.get_item(obj['SongAlbumId'])) obj['AlbumId'] = self.jellyfin_db.get_item_by_id(*values(obj, QUEM.get_item_song_obj))[0] except TypeError: self.single(obj) @@ -381,7 +381,7 @@ class Music(KodiDb): except TypeError: try: - self.artist(self.server['api'].get_item(temp_obj['Id']), library=None) + self.artist(self.server.jellyfin.get_item(temp_obj['Id']), library=None) temp_obj['ArtistId'] = self.jellyfin_db.get_item_by_id(*values(temp_obj, QUEM.get_item_obj))[0] except Exception as error: LOG.exception(error) @@ -415,7 +415,7 @@ class Music(KodiDb): except TypeError: try: - self.artist(self.server['api'].get_item(temp_obj['Id']), library=None) + self.artist(self.server.jellyfin.get_item(temp_obj['Id']), library=None) temp_obj['ArtistId'] = self.jellyfin_db.get_item_by_id(*values(temp_obj, QUEM.get_item_obj))[0] except Exception as error: LOG.exception(error) diff --git a/resources/lib/objects/tvshows.py b/resources/lib/objects/tvshows.py index a743667c..ea0b4801 100644 --- a/resources/lib/objects/tvshows.py +++ b/resources/lib/objects/tvshows.py @@ -139,7 +139,7 @@ class TVShows(KodiDb): season_episodes = {} - for season in self.server['api'].get_seasons(obj['Id'])['Items']: + for season in self.server.jellyfin.get_seasons(obj['Id'])['Items']: if season['SeriesId'] != obj['Id']: obj['SeriesId'] = season['SeriesId'] @@ -441,7 +441,7 @@ class TVShows(KodiDb): if obj['ShowId'] is None: try: - self.tvshow(self.server['api'].get_item(obj['SeriesId']), library=None) + self.tvshow(self.server.jellyfin.get_item(obj['SeriesId']), library=None) obj['ShowId'] = self.jellyfin_db.get_item_by_id(*values(obj, QUEM.get_item_series_obj))[0] except (TypeError, KeyError): LOG.error("Unable to add series %s", obj['SeriesId']) diff --git a/resources/lib/player.py b/resources/lib/player.py index d6435ac1..c2b4b9c1 100644 --- a/resources/lib/player.py +++ b/resources/lib/player.py @@ -110,7 +110,7 @@ class Player(xbmc.Player): 'AudioStreamIndex': item['AudioStreamIndex'], 'SubtitleStreamIndex': item['SubtitleStreamIndex'] } - item['Server']['api'].session_playing(data) + item['Server'].jellyfin.session_playing(data) window('jellyfin.skip.%s.bool' % item['Id'], True) if monitor.waitForAbort(2): @@ -239,7 +239,7 @@ class Player(xbmc.Player): if item['Type'] != 'Episode' or not item.get('CurrentEpisode'): return - next_items = item['Server']['api'].get_adjacent_episodes(item['CurrentEpisode']['tvshowid'], item['Id']) + next_items = item['Server'].jellyfin.get_adjacent_episodes(item['CurrentEpisode']['tvshowid'], item['Id']) for index, next_item in enumerate(next_items['Items']): if next_item['Id'] == item['Id']: @@ -360,7 +360,7 @@ class Player(xbmc.Player): 'AudioStreamIndex': item['AudioStreamIndex'], 'SubtitleStreamIndex': item['SubtitleStreamIndex'] } - item['Server']['api'].session_progress(data) + item['Server'].jellyfin.session_progress(data) def onPlayBackStopped(self): @@ -403,17 +403,17 @@ class Player(xbmc.Player): 'PositionTicks': int(item['CurrentPosition'] * 10000000), 'PlaySessionId': item['PlaySessionId'] } - item['Server']['api'].session_stop(data) + item['Server'].jellyfin.session_stop(data) if item.get('LiveStreamId'): LOG.info("<[ livestream/%s ]", item['LiveStreamId']) - item['Server']['api'].close_live_stream(item['LiveStreamId']) + item['Server'].jellyfin.close_live_stream(item['LiveStreamId']) elif item['PlayMethod'] == 'Transcode': LOG.info("<[ transcode/%s ]", item['Id']) - item['Server']['api'].close_transcode(item['DeviceId']) + item['Server'].jellyfin.close_transcode(item['DeviceId']) path = xbmc.translatePath("special://profile/addon_data/plugin.video.jellyfin/temp/").decode('utf-8') @@ -424,7 +424,7 @@ class Player(xbmc.Player): for file in files: xbmcvfs.delete(os.path.join(path, file.decode('utf-8'))) - result = item['Server']['api'].get_item(item['Id']) or {} + result = item['Server'].jellyfin.get_item(item['Id']) or {} if 'UserData' in result and result['UserData']['Played']: delete = False @@ -441,7 +441,7 @@ class Player(xbmc.Player): LOG.info("Offer delete option") if dialog("yesno", heading=_(30091), line1=_(33015), autoclose=120000): - item['Server']['api'].delete_item(item['Id']) + item['Server'].jellyfin.delete_item(item['Id']) window('jellyfin.external_check', clear=True) diff --git a/resources/lib/views.py b/resources/lib/views.py index f3aa9a02..65069b38 100644 --- a/resources/lib/views.py +++ b/resources/lib/views.py @@ -167,8 +167,8 @@ class Views(object): def get_libraries(self): try: - libraries = self.server['api'].get_media_folders()['Items'] - views = self.server['api'].get_views()['Items'] + libraries = self.server.jellyfin.get_media_folders()['Items'] + views = self.server.jellyfin.get_views()['Items'] except Exception as error: LOG.exception(error) raise IndexError("Unable to retrieve libraries: %s" % error)