mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2025-11-11 02:46:34 +00:00
client.py - remove "auth" & connection_manager.py - remove __shortcuts__ & __getitem__
This commit is contained in:
parent
66679ce54c
commit
66622f0195
15 changed files with 78 additions and 80 deletions
|
|
@ -152,7 +152,9 @@ class Connect(object):
|
|||
settings('username', self.user['Name'])
|
||||
|
||||
if 'PrimaryImageTag' in self.user:
|
||||
window('JellyfinUserImage', api.API(self.user, client['auth/server-address']).get_user_artwork(self.user['Id']))
|
||||
server_data = client.auth.get_server_info(client.auth.server_id)
|
||||
server_address = client.auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
window('JellyfinUserImage', api.API(self.user, server_address).get_user_artwork(self.user['Id']))
|
||||
|
||||
def select_servers(self, state=None):
|
||||
|
||||
|
|
@ -213,8 +215,9 @@ class Connect(object):
|
|||
|
||||
def login(self):
|
||||
|
||||
users = self.connect_manager['public-users']
|
||||
server = self.connect_manager['server-address']
|
||||
users = self.connect_manager.get_public_users()
|
||||
server_data = self.connect_manager.get_server_info(self.connect_manager.server_id)
|
||||
server = self.connect_manager.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
|
||||
if not users:
|
||||
try:
|
||||
|
|
@ -236,7 +239,7 @@ class Connect(object):
|
|||
return self.login_manual(username)
|
||||
except RuntimeError: pass
|
||||
else:
|
||||
return self.connect_manager['login'](server, username)
|
||||
return self.connect_manager.login(server, username)
|
||||
|
||||
elif dialog.is_manual_login():
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -118,9 +118,10 @@ class LoginManual(xbmcgui.WindowXMLDialog):
|
|||
|
||||
def _login(self, username, password):
|
||||
|
||||
mode = self.connect_manager['server-mode']
|
||||
server = self.connect_manager['server-address']
|
||||
result = self.connect_manager['login'](server, username, password)
|
||||
mode = self.connect_manager.get_server_info(self.connect_manager.server_id)['LastConnectionMode']
|
||||
server_data = self.connect_manager.get_server_info(self.connect_manager.server_id)
|
||||
server = self.connect_manager.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
result = self.connect_manager.login(server, username, password)
|
||||
|
||||
if not result:
|
||||
self._error(ERROR['Invalid'], _('invalid_auth'))
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ class ServerConnect(xbmcgui.WindowXMLDialog):
|
|||
self.message_box.setVisibleCondition('true')
|
||||
self.busy.setVisibleCondition('true')
|
||||
|
||||
result = self.connect_manager['connect-to-server'](server)
|
||||
result = self.connect_manager.connect_to_server(server)
|
||||
|
||||
if result['State'] == CONNECTION_STATE['Unavailable']:
|
||||
self.busy.setVisibleCondition('false')
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ class ServerManual(xbmcgui.WindowXMLDialog):
|
|||
|
||||
server_address = "%s:%s" % (server, port) if port else server
|
||||
self._message("%s %s..." % (_(30610), server_address))
|
||||
result = self.connect_manager['manual-server'](server_address)
|
||||
result = self.connect_manager.connect_to_address(server_address)
|
||||
|
||||
if result['State'] == CONNECTION_STATE['Unavailable']:
|
||||
self._message(_(30609))
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ class JellyfinClient(object):
|
|||
|
||||
LOG.info("User is authenticated.")
|
||||
self.logged_in = True
|
||||
self.callback("ServerOnline", {'Id': self['auth/server-id']})
|
||||
self.callback("ServerOnline", {'Id': self.auth.server_id})
|
||||
|
||||
state['Credentials'] = self.get_credentials()
|
||||
|
||||
|
|
@ -91,7 +91,4 @@ class JellyfinClient(object):
|
|||
elif key.startswith('callback'):
|
||||
return self.callback_ws if 'ws' in key else self.callback
|
||||
|
||||
elif key.startswith('auth'):
|
||||
return self.auth.__shortcuts__(key.replace('auth/', "", 1))
|
||||
|
||||
return
|
||||
|
|
|
|||
|
|
@ -57,48 +57,6 @@ class ConnectionManager(object):
|
|||
|
||||
self.http = HTTP(client)
|
||||
|
||||
def __shortcuts__(self, key):
|
||||
LOG.debug("__shortcuts__(%r)", key)
|
||||
|
||||
if key == "clear":
|
||||
return self.clear_data
|
||||
elif key == "servers":
|
||||
return self.get_available_servers()
|
||||
elif key in ("reconnect", "refresh"):
|
||||
return self.connect
|
||||
elif key == "login":
|
||||
return self.login
|
||||
elif key == "server":
|
||||
return self.get_server_info(self.server_id)
|
||||
elif key == "server-id":
|
||||
return self.server_id
|
||||
elif key == "server-version":
|
||||
return self.server_version
|
||||
elif key == "user-id":
|
||||
return self.jellyfin_user_id()
|
||||
elif key == "public-users":
|
||||
return self.get_public_users()
|
||||
elif key == "token":
|
||||
return self.jellyfin_token()
|
||||
elif key == "manual-server":
|
||||
return self.connect_to_address
|
||||
elif key == "connect-to-server":
|
||||
return self.connect_to_server
|
||||
elif key == "server-address":
|
||||
server = self.get_server_info(self.server_id)
|
||||
return get_server_address(server, server['LastConnectionMode'])
|
||||
elif key == "revoke-token":
|
||||
return self.revoke_token()
|
||||
elif key == "server-mode":
|
||||
server = self.get_server_info(self.server_id)
|
||||
return server['LastConnectionMode']
|
||||
|
||||
return
|
||||
|
||||
def __getitem__(self, key):
|
||||
LOG.debug("__getitem__(%r)", key)
|
||||
return self.__shortcuts__(key)
|
||||
|
||||
def clear_data(self):
|
||||
|
||||
LOG.info("connection manager clearing data")
|
||||
|
|
@ -219,6 +177,14 @@ class ConnectionManager(object):
|
|||
LOG.info("beginning connection tests")
|
||||
return self._test_next_connection_mode(tests, 0, server, options)
|
||||
|
||||
def get_server_address(self, server, mode): #TODO: De-duplicated (Duplicated from above when getting rid of shortcuts)
|
||||
|
||||
modes = {
|
||||
CONNECTION_MODE['Local']: server.get('LocalAddress'),
|
||||
CONNECTION_MODE['Manual']: server.get('ManualAddress')
|
||||
}
|
||||
return modes.get(mode) or server.get('ManualAddress', server.get('LocalAddress'))
|
||||
|
||||
def connect(self, options={}):
|
||||
|
||||
LOG.info("Begin connect")
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ class HTTP(object):
|
|||
raise HTTPException("AccessRestricted", error)
|
||||
else:
|
||||
self.client['callback']("Unauthorized", {'ServerId': self.config.data['auth.server-id']})
|
||||
self.client['auth/revoke-token']
|
||||
self.client.auth.revoke_token()
|
||||
|
||||
raise HTTPException("Unauthorized", error)
|
||||
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ class WSClient(threading.Thread):
|
|||
return
|
||||
|
||||
if not self.client.config.data['app.default']:
|
||||
data['ServerId'] = self.client['auth/server-id']
|
||||
data['ServerId'] = self.client.auth.server_id
|
||||
|
||||
self.client['callback_ws'](message['MessageType'], data)
|
||||
|
||||
|
|
|
|||
|
|
@ -145,7 +145,8 @@ class Monitor(xbmc.Monitor):
|
|||
|
||||
elif method == 'GetServerAddress':
|
||||
|
||||
server_address = server['auth/server-address']
|
||||
server_data = server.auth.get_server_info(server.auth.server_id)
|
||||
server_address = server.auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
self.void_responder(data, server_address)
|
||||
|
||||
elif method == 'GetPlaybackInfo':
|
||||
|
|
@ -160,7 +161,7 @@ class Monitor(xbmc.Monitor):
|
|||
|
||||
elif method == 'GetToken':
|
||||
|
||||
token = server['auth/token']
|
||||
token = server.auth.jellyfin_token()
|
||||
self.void_responder(data, token)
|
||||
|
||||
elif method == 'GetSession':
|
||||
|
|
@ -297,7 +298,7 @@ class Monitor(xbmc.Monitor):
|
|||
self.additional_users(server)
|
||||
|
||||
def post_capabilities(self, server):
|
||||
LOG.info("--[ post capabilities/%s ]", server['auth/server-id'])
|
||||
LOG.info("--[ post capabilities/%s ]", server.auth.server_id)
|
||||
|
||||
server.jellyfin.post_capabilities({
|
||||
'PlayableMediaTypes': "Audio,Video",
|
||||
|
|
|
|||
|
|
@ -54,7 +54,9 @@ class Movies(KodiDb):
|
|||
''' If item does not exist, entry will be added.
|
||||
If item exists, entry will be updated.
|
||||
'''
|
||||
API = api.API(item, self.server['auth/server-address'])
|
||||
server_data = self.server.auth.get_server_info(self.server.auth.server_id)
|
||||
server_address = self.server.auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
API = api.API(item, server_address)
|
||||
obj = self.objects.map(item, 'Movie')
|
||||
update = True
|
||||
|
||||
|
|
@ -213,7 +215,9 @@ class Movies(KodiDb):
|
|||
Process movies inside boxset.
|
||||
Process removals from boxset.
|
||||
'''
|
||||
API = api.API(item, self.server['auth/server-address'])
|
||||
server_data = self.server.auth.get_server_info(self.server.auth.server_id)
|
||||
server_address = self.server.auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
API = api.API(item, server_address)
|
||||
obj = self.objects.map(item, 'Boxset')
|
||||
|
||||
obj['Overview'] = API.get_overview(obj['Overview'])
|
||||
|
|
@ -291,7 +295,9 @@ class Movies(KodiDb):
|
|||
''' This updates: Favorite, LastPlayedDate, Playcount, PlaybackPositionTicks
|
||||
Poster with progress bar
|
||||
'''
|
||||
API = api.API(item, self.server['auth/server-address'])
|
||||
server_data = self.server.auth.get_server_info(self.server.auth.server_id)
|
||||
server_address = self.server.auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
API = api.API(item, server_address)
|
||||
obj = self.objects.map(item, 'MovieUserData')
|
||||
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -56,7 +56,9 @@ class Music(KodiDb):
|
|||
''' If item does not exist, entry will be added.
|
||||
If item exists, entry will be updated.
|
||||
'''
|
||||
API = api.API(item, self.server['auth/server-address'])
|
||||
server_data = self.server.auth.get_server_info(self.server.auth.server_id)
|
||||
server_address = self.server.auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
API = api.API(item, server_address)
|
||||
obj = self.objects.map(item, 'Artist')
|
||||
update = True
|
||||
|
||||
|
|
@ -125,7 +127,9 @@ class Music(KodiDb):
|
|||
|
||||
''' Update object to kodi.
|
||||
'''
|
||||
API = api.API(item, self.server['auth/server-address'])
|
||||
server_data = self.server.auth.get_server_info(self.server.auth.server_id)
|
||||
server_address = self.server.auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
API = api.API(item, server_address)
|
||||
obj = self.objects.map(item, 'Album')
|
||||
update = True
|
||||
|
||||
|
|
@ -234,7 +238,9 @@ class Music(KodiDb):
|
|||
|
||||
''' Update object to kodi.
|
||||
'''
|
||||
API = api.API(item, self.server['auth/server-address'])
|
||||
server_data = self.server.auth.get_server_info(self.server.auth.server_id)
|
||||
server_address = self.server.auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
API = api.API(item, server_address)
|
||||
obj = self.objects.map(item, 'Song')
|
||||
update = True
|
||||
|
||||
|
|
@ -352,7 +358,9 @@ class Music(KodiDb):
|
|||
obj['Path'] = obj['Path'].replace(obj['Filename'], "")
|
||||
|
||||
else:
|
||||
obj['Path'] = "%s/emby/Audio/%s/" % (self.server['auth/server-address'], obj['Id'])
|
||||
server_data = self.server.auth.get_server_info(self.server.auth.server_id)
|
||||
server_address = self.server.auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
obj['Path'] = "%s/emby/Audio/%s/" % (server_address, obj['Id'])
|
||||
obj['Filename'] = "stream.%s?static=true" % obj['Container']
|
||||
|
||||
def song_artist_discography(self, obj):
|
||||
|
|
@ -429,7 +437,9 @@ class Music(KodiDb):
|
|||
''' This updates: Favorite, LastPlayedDate, Playcount, PlaybackPositionTicks
|
||||
Poster with progress bar
|
||||
'''
|
||||
API = api.API(item, self.server['auth/server-address'])
|
||||
server_data = self.server.auth.get_server_info(self.server.auth.server_id)
|
||||
server_address = self.server.auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
API = api.API(item, server_address)
|
||||
obj = self.objects.map(item, 'SongUserData')
|
||||
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -55,7 +55,9 @@ class MusicVideos(KodiDb):
|
|||
If we don't get the track number from Jellyfin, see if we can infer it
|
||||
from the sortname attribute.
|
||||
'''
|
||||
API = api.API(item, self.server['auth/server-address'])
|
||||
server_data = self.server.auth.get_server_info(self.server.auth.server_id)
|
||||
server_address = self.server.auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
API = api.API(item, server_address)
|
||||
obj = self.objects.map(item, 'MusicVideo')
|
||||
update = True
|
||||
|
||||
|
|
@ -192,7 +194,9 @@ class MusicVideos(KodiDb):
|
|||
''' This updates: Favorite, LastPlayedDate, Playcount, PlaybackPositionTicks
|
||||
Poster with progress bar
|
||||
'''
|
||||
API = api.API(item, self.server['auth/server-address'])
|
||||
server_data = self.server.auth.get_server_info(self.server.auth.server_id)
|
||||
server_address = self.server.auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
API = api.API(item, server_address)
|
||||
obj = self.objects.map(item, 'MusicVideoUserData')
|
||||
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -63,7 +63,9 @@ class TVShows(KodiDb):
|
|||
Process seasons.
|
||||
Apply series pooling.
|
||||
'''
|
||||
API = api.API(item, self.server['auth/server-address'])
|
||||
server_data = self.server.auth.get_server_info(self.server.auth.server_id)
|
||||
server_address = self.server.auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
API = api.API(item, server_address)
|
||||
obj = self.objects.map(item, 'Series')
|
||||
update = True
|
||||
|
||||
|
|
@ -230,7 +232,9 @@ class TVShows(KodiDb):
|
|||
|
||||
If the show is empty, try to remove it.
|
||||
'''
|
||||
API = api.API(item, self.server['auth/server-address'])
|
||||
server_data = self.server.auth.get_server_info(self.server.auth.server_id)
|
||||
server_address = self.server.auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
API = api.API(item, server_address)
|
||||
obj = self.objects.map(item, 'Season')
|
||||
|
||||
obj['ShowId'] = show_id
|
||||
|
|
@ -265,7 +269,9 @@ class TVShows(KodiDb):
|
|||
Create additional entry for widgets.
|
||||
This is only required for plugin/episode.
|
||||
'''
|
||||
API = api.API(item, self.server['auth/server-address'])
|
||||
server_data = self.server.auth.get_server_info(self.server.auth.server_id)
|
||||
server_address = self.server.auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
API = api.API(item, server_address)
|
||||
obj = self.objects.map(item, 'Episode')
|
||||
update = True
|
||||
|
||||
|
|
@ -459,7 +465,9 @@ class TVShows(KodiDb):
|
|||
Make sure there's no other bookmarks created by widget.
|
||||
Create additional entry for widgets. This is only required for plugin/episode.
|
||||
'''
|
||||
API = api.API(item, self.server['auth/server-address'])
|
||||
server_data = self.server.auth.get_server_info(self.server.auth.server_id)
|
||||
server_address = self.server.auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
API = api.API(item, server_address)
|
||||
obj = self.objects.map(item, 'EpisodeUserData')
|
||||
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -252,8 +252,9 @@ class Player(xbmc.Player):
|
|||
return
|
||||
|
||||
break
|
||||
|
||||
API = api.API(next_item, item['Server']['auth/server-address'])
|
||||
server_data = item['Server'].auth.get_server_info(item['Server'].auth.server_id)
|
||||
server_address = item['Server'].auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
API = api.API(next_item, server_address)
|
||||
data = objects.map(next_item, "UpNext")
|
||||
artwork = API.get_all_artwork(objects.map(next_item, 'ArtworkParent'), True)
|
||||
data['art'] = {
|
||||
|
|
|
|||
|
|
@ -863,8 +863,9 @@ class Views(object):
|
|||
for library in self.media_folders:
|
||||
|
||||
if library['Id'] == view_id and 'Primary' in library.get('ImageTags', {}):
|
||||
|
||||
artwork = api.API(None, self.server['auth/server-address']).get_artwork(view_id, 'Primary')
|
||||
server_data = self.server.auth.get_server_info(self.server.auth.server_id)
|
||||
server_address = self.server.auth.get_server_address(server_data, server_data['LastConnectionMode'])
|
||||
artwork = api.API(None, server_address).get_artwork(view_id, 'Primary')
|
||||
window('%s.artwork' % prop, artwork)
|
||||
|
||||
break
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue