mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2025-11-10 18:36:33 +00:00
Move client registration to JellyfinClient
This commit is contained in:
parent
4b9eaf1b38
commit
119657f989
3 changed files with 74 additions and 94 deletions
|
|
@ -508,7 +508,7 @@ def get_fanart(item_id, path, server_id=None):
|
|||
list_li = []
|
||||
directory = xbmc.translatePath("special://thumbnails/jellyfin/%s/" % item_id)
|
||||
jellyfin_client = Jellyfin(server_id).get_client()
|
||||
server = jellyfin_client.auth.get_server_info(server_id)['address']
|
||||
server = jellyfin_client.auth..get_server_address()
|
||||
|
||||
if not xbmcvfs.exists(directory):
|
||||
|
||||
|
|
|
|||
|
|
@ -5,9 +5,11 @@ from __future__ import division, absolute_import, print_function, unicode_litera
|
|||
|
||||
import logging
|
||||
|
||||
from helper import has_attribute, LazyLogger
|
||||
from helper import has_attribute, LazyLogger, window, api, dialog, translate, settings
|
||||
|
||||
from .client import JellyfinClient
|
||||
from client import get_device_id
|
||||
import connect
|
||||
|
||||
#################################################################################################
|
||||
|
||||
|
|
@ -93,10 +95,73 @@ class Jellyfin(object):
|
|||
return getattr(self.client[self.server_id], name)
|
||||
|
||||
def construct(self):
|
||||
|
||||
self.client[self.server_id] = JellyfinClient()
|
||||
|
||||
if self.server_id == 'default':
|
||||
LOG.info("---[ START JELLYFINCLIENT ]---")
|
||||
else:
|
||||
try:
|
||||
connect.Connect().register(self.server_id)
|
||||
self.register_client()
|
||||
except Exception as error:
|
||||
LOG.exception(error)
|
||||
dialog("ok", "{jellyfin}", translate(33142))
|
||||
return
|
||||
|
||||
LOG.info("---[ START JELLYFINCLIENT: %s ]---", self.server_id)
|
||||
|
||||
def register_client(self):
|
||||
client = self.get_client()
|
||||
device_id = get_device_id()
|
||||
self.post_capabilities(client, device_id)
|
||||
|
||||
if self.server_id is None and settings('additionalUsers'):
|
||||
users = settings('additionalUsers').split(',')
|
||||
all_users = client.jellyfin.get_users()
|
||||
|
||||
for additional in users:
|
||||
for user in all_users:
|
||||
if user['Name'].lower() in additional.lower():
|
||||
client.jellyfin.session_add_user(client.config.data['app.session'], user['Id'], True)
|
||||
|
||||
self.additional_users(client, device_id)
|
||||
|
||||
@staticmethod
|
||||
def additional_users(server, device_id):
|
||||
''' Setup additional users images.
|
||||
'''
|
||||
for i in range(10):
|
||||
window('JellyfinAdditionalUserImage.%s' % i, clear=True)
|
||||
|
||||
try:
|
||||
session = server.jellyfin.get_device(device_id)
|
||||
except Exception as error:
|
||||
LOG.exception(error)
|
||||
|
||||
return
|
||||
|
||||
for index, user in enumerate(session[0]['AdditionalUsers']):
|
||||
|
||||
info = server.jellyfin.get_user(user['UserId'])
|
||||
image = api.API(info, server.config.data['auth.server']).get_user_artwork(user['UserId'])
|
||||
window('JellyfinAdditionalUserImage.%s' % index, image)
|
||||
window('JellyfinAdditionalUserPosition.%s' % user['UserId'], str(index))
|
||||
|
||||
@staticmethod
|
||||
def post_capabilities(client, device_id):
|
||||
LOG.info("--[ post capabilities/%s ]", client.auth.server_id)
|
||||
|
||||
client.jellyfin.post_capabilities({
|
||||
'PlayableMediaTypes': "Audio,Video",
|
||||
'SupportsMediaControl': True,
|
||||
'SupportedCommands': (
|
||||
"MoveUp,MoveDown,MoveLeft,MoveRight,Select,"
|
||||
"Back,ToggleContextMenu,ToggleFullscreen,ToggleOsdMenu,"
|
||||
"GoHome,PageUp,NextLetter,GoToSearch,"
|
||||
"GoToSettings,PageDown,PreviousLetter,TakeScreenshot,"
|
||||
"VolumeUp,VolumeDown,ToggleMute,SendString,DisplayMessage,"
|
||||
"SetAudioStreamIndex,SetSubtitleStreamIndex,"
|
||||
"SetRepeatMode,"
|
||||
"Mute,Unmute,SetVolume,"
|
||||
"Play,Playstate,PlayNext,PlayMediaSource"
|
||||
),
|
||||
})
|
||||
session = client.jellyfin.get_device(device_id)
|
||||
client.config.data['app.session'] = session[0]['Id']
|
||||
|
|
|
|||
|
|
@ -26,8 +26,6 @@ LOG = LazyLogger(__name__)
|
|||
|
||||
|
||||
class Monitor(xbmc.Monitor):
|
||||
|
||||
servers = []
|
||||
sleep = False
|
||||
|
||||
def __init__(self):
|
||||
|
|
@ -95,28 +93,7 @@ class Monitor(xbmc.Monitor):
|
|||
|
||||
return
|
||||
|
||||
try:
|
||||
if not data.get('ServerId'):
|
||||
server = Jellyfin()
|
||||
else:
|
||||
if method != 'LoadServer' and data['ServerId'] not in self.servers:
|
||||
|
||||
try:
|
||||
connect.Connect().register(data['ServerId'])
|
||||
self.server_instance(data['ServerId'])
|
||||
except Exception as error:
|
||||
|
||||
LOG.exception(error)
|
||||
dialog("ok", "{jellyfin}", translate(33142))
|
||||
|
||||
return
|
||||
|
||||
server = Jellyfin(data['ServerId'])
|
||||
except Exception as error:
|
||||
LOG.exception(error)
|
||||
server = Jellyfin()
|
||||
|
||||
server = server.get_client()
|
||||
server = Jellyfin(data.get('ServerId')).server.get_client()
|
||||
|
||||
if method == 'Play':
|
||||
|
||||
|
|
@ -149,7 +126,7 @@ class Monitor(xbmc.Monitor):
|
|||
|
||||
elif method == 'AddUser':
|
||||
server.jellyfin.session_add_user(server.config.data['app.session'], data['Id'], data['Add'])
|
||||
self.additional_users(server)
|
||||
Jellyfin.additional_users(server, self.device_id)
|
||||
|
||||
elif method == 'Player.OnPlay':
|
||||
on_play(data, server)
|
||||
|
|
@ -157,68 +134,6 @@ class Monitor(xbmc.Monitor):
|
|||
elif method == 'VideoLibrary.OnUpdate':
|
||||
on_update(data, server)
|
||||
|
||||
def server_instance(self, server_id=None):
|
||||
|
||||
server = Jellyfin(server_id).get_client()
|
||||
self.post_capabilities(server)
|
||||
|
||||
if server_id is not None:
|
||||
self.servers.append(server_id)
|
||||
elif settings('additionalUsers'):
|
||||
|
||||
users = settings('additionalUsers').split(',')
|
||||
all_users = server.jellyfin.get_users()
|
||||
|
||||
for additional in users:
|
||||
for user in all_users:
|
||||
|
||||
if user['Name'].lower() in additional.lower():
|
||||
server.jellyfin.session_add_user(server.config.data['app.session'], user['Id'], True)
|
||||
|
||||
self.additional_users(server)
|
||||
|
||||
def post_capabilities(self, server):
|
||||
LOG.info("--[ post capabilities/%s ]", server.auth.server_id)
|
||||
|
||||
server.jellyfin.post_capabilities({
|
||||
'PlayableMediaTypes': "Audio,Video",
|
||||
'SupportsMediaControl': True,
|
||||
'SupportedCommands': (
|
||||
"MoveUp,MoveDown,MoveLeft,MoveRight,Select,"
|
||||
"Back,ToggleContextMenu,ToggleFullscreen,ToggleOsdMenu,"
|
||||
"GoHome,PageUp,NextLetter,GoToSearch,"
|
||||
"GoToSettings,PageDown,PreviousLetter,TakeScreenshot,"
|
||||
"VolumeUp,VolumeDown,ToggleMute,SendString,DisplayMessage,"
|
||||
"SetAudioStreamIndex,SetSubtitleStreamIndex,"
|
||||
"SetRepeatMode,"
|
||||
"Mute,Unmute,SetVolume,"
|
||||
"Play,Playstate,PlayNext,PlayMediaSource"
|
||||
),
|
||||
})
|
||||
session = server.jellyfin.get_device(self.device_id)
|
||||
server.config.data['app.session'] = session[0]['Id']
|
||||
|
||||
def additional_users(self, server):
|
||||
|
||||
''' Setup additional users images.
|
||||
'''
|
||||
for i in range(10):
|
||||
window('JellyfinAdditionalUserImage.%s' % i, clear=True)
|
||||
|
||||
try:
|
||||
session = server.jellyfin.get_device(self.device_id)
|
||||
except Exception as error:
|
||||
LOG.exception(error)
|
||||
|
||||
return
|
||||
|
||||
for index, user in enumerate(session[0]['AdditionalUsers']):
|
||||
|
||||
info = server.jellyfin.get_user(user['UserId'])
|
||||
image = api.API(info, server.config.data['auth.server']).get_user_artwork(user['UserId'])
|
||||
window('JellyfinAdditionalUserImage.%s' % index, image)
|
||||
window('JellyfinAdditionalUserPosition.%s' % user['UserId'], str(index))
|
||||
|
||||
def playstate(self, data):
|
||||
|
||||
''' Jellyfin playstate updates.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue