mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2025-05-06 17:38:48 +00:00
New hybrid method
This commit is contained in:
parent
7f5084c62e
commit
ace50b34dc
279 changed files with 39526 additions and 19994 deletions
|
@ -1,4 +1,3 @@
|
|||
# Dummy file to make this directory a package.
|
||||
from serverconnect import ServerConnect
|
||||
from usersconnect import UsersConnect
|
||||
from loginconnect import LoginConnect
|
||||
|
|
|
@ -8,13 +8,11 @@ import os
|
|||
import xbmcgui
|
||||
import xbmcaddon
|
||||
|
||||
from utils import window
|
||||
from helper import window, addon_id
|
||||
|
||||
##################################################################################################
|
||||
|
||||
log = logging.getLogger("EMBY."+__name__)
|
||||
addon = xbmcaddon.Addon('plugin.video.emby')
|
||||
|
||||
LOG = logging.getLogger("EMBY."+__name__)
|
||||
ACTION_PARENT_DIR = 9
|
||||
ACTION_PREVIOUS_MENU = 10
|
||||
ACTION_BACK = 92
|
||||
|
@ -51,7 +49,7 @@ class ContextMenu(xbmcgui.WindowXMLDialog):
|
|||
self.getControl(USER_IMAGE).setImage(window('EmbyUserImage'))
|
||||
|
||||
height = 479 + (len(self._options) * 55)
|
||||
log.info("options: %s", self._options)
|
||||
LOG.info("options: %s", self._options)
|
||||
self.list_ = self.getControl(LIST)
|
||||
|
||||
for option in self._options:
|
||||
|
@ -69,10 +67,24 @@ class ContextMenu(xbmcgui.WindowXMLDialog):
|
|||
if self.getFocusId() == LIST:
|
||||
option = self.list_.getSelectedItem()
|
||||
self.selected_option = option.getLabel()
|
||||
log.info('option selected: %s', self.selected_option)
|
||||
LOG.info('option selected: %s', self.selected_option)
|
||||
|
||||
self.close()
|
||||
|
||||
def _add_editcontrol(self, x, y, height, width, password=0):
|
||||
|
||||
media = os.path.join(xbmcaddon.Addon(addon_id()).getAddonInfo('path'), 'resources', 'skins', 'default', 'media')
|
||||
control = xbmcgui.ControlImage(0, 0, 0, 0,
|
||||
filename=os.path.join(media, "white.png"),
|
||||
aspectRatio=0,
|
||||
colorDiffuse="ff111111")
|
||||
control.setPosition(x, y)
|
||||
control.setHeight(height)
|
||||
control.setWidth(width)
|
||||
|
||||
self.addControl(control)
|
||||
return control
|
||||
|
||||
@classmethod
|
||||
def _add_listitem(cls, label):
|
||||
return xbmcgui.ListItem(label)
|
||||
|
|
|
@ -8,13 +8,11 @@ import os
|
|||
import xbmcgui
|
||||
import xbmcaddon
|
||||
|
||||
from utils import language as lang
|
||||
from helper import _, addon_id, settings, dialog
|
||||
|
||||
##################################################################################################
|
||||
|
||||
log = logging.getLogger("EMBY."+__name__)
|
||||
addon = xbmcaddon.Addon('plugin.video.emby')
|
||||
|
||||
LOG = logging.getLogger("EMBY."+__name__)
|
||||
ACTION_PARENT_DIR = 9
|
||||
ACTION_PREVIOUS_MENU = 10
|
||||
ACTION_BACK = 92
|
||||
|
@ -40,8 +38,10 @@ class LoginConnect(xbmcgui.WindowXMLDialog):
|
|||
|
||||
xbmcgui.WindowXMLDialog.__init__(self, *args, **kwargs)
|
||||
|
||||
def set_connect_manager(self, connect_manager):
|
||||
self.connect_manager = connect_manager
|
||||
def set_args(self, **kwargs):
|
||||
# connect_manager, user_image, servers, emby_connect
|
||||
for key, value in kwargs.iteritems():
|
||||
setattr(self, key, value)
|
||||
|
||||
def is_logged_in(self):
|
||||
return True if self._user else False
|
||||
|
@ -78,8 +78,8 @@ class LoginConnect(xbmcgui.WindowXMLDialog):
|
|||
|
||||
if not user or not password:
|
||||
# Display error
|
||||
self._error(ERROR['Empty'], lang(30608))
|
||||
log.error("Username or password cannot be null")
|
||||
self._error(ERROR['Empty'], _('empty_user_pass'))
|
||||
LOG.error("Username or password cannot be null")
|
||||
|
||||
elif self._login(user, password):
|
||||
self.close()
|
||||
|
@ -99,7 +99,7 @@ class LoginConnect(xbmcgui.WindowXMLDialog):
|
|||
|
||||
def _add_editcontrol(self, x, y, height, width, password=0):
|
||||
|
||||
media = os.path.join(addon.getAddonInfo('path'), 'resources', 'skins', 'default', 'media')
|
||||
media = os.path.join(xbmcaddon.Addon(addon_id()).getAddonInfo('path'), 'resources', 'skins', 'default', 'media')
|
||||
control = xbmcgui.ControlEdit(0, 0, 0, 0,
|
||||
label="User",
|
||||
font="font13",
|
||||
|
@ -117,13 +117,23 @@ class LoginConnect(xbmcgui.WindowXMLDialog):
|
|||
|
||||
def _login(self, username, password):
|
||||
|
||||
result = self.connect_manager.loginToConnect(username, password)
|
||||
result = self.connect_manager['login-connect'](username, password)
|
||||
if result is False:
|
||||
self._error(ERROR['Invalid'], lang(33009))
|
||||
self._error(ERROR['Invalid'], _('invalid_auth'))
|
||||
|
||||
return False
|
||||
else:
|
||||
self._user = result
|
||||
return True
|
||||
|
||||
self._user = result
|
||||
username = result['User']['Name']
|
||||
settings('connectUsername', value=username)
|
||||
settings('idMethod', value="1")
|
||||
|
||||
dialog("notification", heading="{emby}", message="%s %s" % (_(33000), username.decode('utf-8')),
|
||||
icon=result['User'].get('ImageUrl') or "{emby}",
|
||||
time=2000,
|
||||
sound=False)
|
||||
|
||||
return True
|
||||
|
||||
def _error(self, state, message):
|
||||
|
||||
|
|
|
@ -8,14 +8,11 @@ import os
|
|||
import xbmcgui
|
||||
import xbmcaddon
|
||||
|
||||
import read_embyserver as embyserver
|
||||
from utils import language as lang
|
||||
from helper import _, addon_id
|
||||
|
||||
##################################################################################################
|
||||
|
||||
log = logging.getLogger("EMBY."+__name__)
|
||||
addon = xbmcaddon.Addon('plugin.video.emby')
|
||||
|
||||
LOG = logging.getLogger("EMBY."+__name__)
|
||||
ACTION_PARENT_DIR = 9
|
||||
ACTION_PREVIOUS_MENU = 10
|
||||
ACTION_BACK = 92
|
||||
|
@ -23,10 +20,7 @@ SIGN_IN = 200
|
|||
CANCEL = 201
|
||||
ERROR_TOGGLE = 202
|
||||
ERROR_MSG = 203
|
||||
ERROR = {
|
||||
'Invalid': 1,
|
||||
'Empty': 2
|
||||
}
|
||||
ERROR = {'Invalid': 1, 'Empty': 2}
|
||||
|
||||
##################################################################################################
|
||||
|
||||
|
@ -39,19 +33,16 @@ class LoginManual(xbmcgui.WindowXMLDialog):
|
|||
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
||||
self.emby = embyserver.Read_EmbyServer()
|
||||
xbmcgui.WindowXMLDialog.__init__(self, *args, **kwargs)
|
||||
|
||||
def set_args(self, **kwargs):
|
||||
# connect_manager, user_image, servers, emby_connect
|
||||
for key, value in kwargs.iteritems():
|
||||
setattr(self, key, value)
|
||||
|
||||
def is_logged_in(self):
|
||||
return True if self._user else False
|
||||
|
||||
def set_server(self, server):
|
||||
self.server = server
|
||||
|
||||
def set_user(self, user):
|
||||
self.username = user or {}
|
||||
|
||||
def get_user(self):
|
||||
return self._user
|
||||
|
||||
|
@ -65,6 +56,7 @@ class LoginManual(xbmcgui.WindowXMLDialog):
|
|||
self.password_field = self._add_editcontrol(755, 543, 40, 415, password=1)
|
||||
|
||||
if self.username:
|
||||
|
||||
self.user_field.setText(self.username)
|
||||
self.setFocus(self.password_field)
|
||||
else:
|
||||
|
@ -88,8 +80,8 @@ class LoginManual(xbmcgui.WindowXMLDialog):
|
|||
|
||||
if not user:
|
||||
# Display error
|
||||
self._error(ERROR['Empty'], lang(30613))
|
||||
log.error("Username cannot be null")
|
||||
self._error(ERROR['Empty'], _('empty_user'))
|
||||
LOG.error("Username cannot be null")
|
||||
|
||||
elif self._login(user, password):
|
||||
self.close()
|
||||
|
@ -108,7 +100,7 @@ class LoginManual(xbmcgui.WindowXMLDialog):
|
|||
|
||||
def _add_editcontrol(self, x, y, height, width, password=0):
|
||||
|
||||
media = os.path.join(addon.getAddonInfo('path'), 'resources', 'skins', 'default', 'media')
|
||||
media = os.path.join(xbmcaddon.Addon(addon_id()).getAddonInfo('path'), 'resources', 'skins', 'default', 'media')
|
||||
control = xbmcgui.ControlEdit(0, 0, 0, 0,
|
||||
label="User",
|
||||
font="font13",
|
||||
|
@ -122,18 +114,15 @@ class LoginManual(xbmcgui.WindowXMLDialog):
|
|||
control.setWidth(width)
|
||||
|
||||
self.addControl(control)
|
||||
|
||||
return control
|
||||
|
||||
def _login(self, username, password):
|
||||
|
||||
try:
|
||||
result = self.emby.loginUser(self.server, username, password)
|
||||
except Exception as error:
|
||||
log.info("Error doing login: " + str(error))
|
||||
result = None
|
||||
result = self.connect_manager['login'](self.connect_manager['server-address'], username, password)
|
||||
|
||||
if result is None:
|
||||
self._error(ERROR['Invalid'], lang(33009))
|
||||
if not result:
|
||||
self._error(ERROR['Invalid'], _('invalid_auth'))
|
||||
return False
|
||||
else:
|
||||
self._user = result
|
||||
|
|
|
@ -10,9 +10,7 @@ import xbmcaddon
|
|||
|
||||
##################################################################################################
|
||||
|
||||
log = logging.getLogger("EMBY."+__name__)
|
||||
addon = xbmcaddon.Addon('plugin.video.emby')
|
||||
|
||||
LOG = logging.getLogger("EMBY."+__name__)
|
||||
ACTION_PARENT_DIR = 9
|
||||
ACTION_PREVIOUS_MENU = 10
|
||||
ACTION_BACK = 92
|
||||
|
|
|
@ -7,14 +7,12 @@ import logging
|
|||
import xbmc
|
||||
import xbmcgui
|
||||
|
||||
import connect.connectionmanager as connectionmanager
|
||||
from utils import language as lang
|
||||
from helper import _
|
||||
from emby.core.connection_manager import CONNECTION_STATE
|
||||
|
||||
##################################################################################################
|
||||
|
||||
log = logging.getLogger("EMBY."+__name__)
|
||||
|
||||
CONN_STATE = connectionmanager.ConnectionState
|
||||
LOG = logging.getLogger("EMBY."+__name__)
|
||||
ACTION_PARENT_DIR = 9
|
||||
ACTION_PREVIOUS_MENU = 10
|
||||
ACTION_BACK = 92
|
||||
|
@ -79,7 +77,7 @@ class ServerConnect(xbmcgui.WindowXMLDialog):
|
|||
self.getControl(USER_IMAGE).setImage(self.user_image)
|
||||
|
||||
if not self.emby_connect: # Change connect user
|
||||
self.getControl(EMBY_CONNECT).setLabel("[B]%s[/B]" % lang(30618))
|
||||
self.getControl(EMBY_CONNECT).setLabel("[B]%s[/B]" % _(30618))
|
||||
|
||||
if self.servers:
|
||||
self.setFocus(self.list_)
|
||||
|
@ -103,7 +101,7 @@ class ServerConnect(xbmcgui.WindowXMLDialog):
|
|||
if self.getFocusId() == LIST:
|
||||
server = self.list_.getSelectedItem()
|
||||
selected_id = server.getProperty('id')
|
||||
log.info('Server Id selected: %s', selected_id)
|
||||
LOG.info('Server Id selected: %s', selected_id)
|
||||
|
||||
if self._connect_server(selected_id):
|
||||
self.message_box.setVisibleCondition('false')
|
||||
|
@ -112,7 +110,7 @@ class ServerConnect(xbmcgui.WindowXMLDialog):
|
|||
def onClick(self, control):
|
||||
|
||||
if control == EMBY_CONNECT:
|
||||
self.connect_manager.clearData()
|
||||
self.connect_manager.clear_data()
|
||||
self._connect_login = True
|
||||
self.close()
|
||||
|
||||
|
@ -125,15 +123,18 @@ class ServerConnect(xbmcgui.WindowXMLDialog):
|
|||
|
||||
def _connect_server(self, server_id):
|
||||
|
||||
server = self.connect_manager.getServerInfo(server_id)
|
||||
self.message.setLabel("%s %s..." % (lang(30610), server['Name']))
|
||||
server = self.connect_manager.get_server_info(server_id)
|
||||
self.message.setLabel("%s %s..." % (_(30610), server['Name']))
|
||||
|
||||
self.message_box.setVisibleCondition('true')
|
||||
self.busy.setVisibleCondition('true')
|
||||
result = self.connect_manager.connectToServer(server)
|
||||
|
||||
if result['State'] == CONN_STATE['Unavailable']:
|
||||
result = self.connect_manager['connect-to-server'](server)
|
||||
|
||||
if result['State'] == CONNECTION_STATE['Unavailable']:
|
||||
self.busy.setVisibleCondition('false')
|
||||
self.message.setLabel(lang(30609))
|
||||
|
||||
self.message.setLabel(_(30609))
|
||||
return False
|
||||
else:
|
||||
xbmc.sleep(1000)
|
||||
|
|
|
@ -8,15 +8,12 @@ import os
|
|||
import xbmcgui
|
||||
import xbmcaddon
|
||||
|
||||
import connect.connectionmanager as connectionmanager
|
||||
from utils import language as lang
|
||||
from helper import _, addon_id
|
||||
from emby.core.connection_manager import CONNECTION_STATE
|
||||
|
||||
##################################################################################################
|
||||
|
||||
log = logging.getLogger("EMBY."+__name__)
|
||||
addon = xbmcaddon.Addon('plugin.video.emby')
|
||||
|
||||
CONN_STATE = connectionmanager.ConnectionState
|
||||
LOG = logging.getLogger("EMBY."+__name__)
|
||||
ACTION_PARENT_DIR = 9
|
||||
ACTION_PREVIOUS_MENU = 10
|
||||
ACTION_BACK = 92
|
||||
|
@ -42,8 +39,10 @@ class ServerManual(xbmcgui.WindowXMLDialog):
|
|||
|
||||
xbmcgui.WindowXMLDialog.__init__(self, *args, **kwargs)
|
||||
|
||||
def set_connect_manager(self, connect_manager):
|
||||
self.connect_manager = connect_manager
|
||||
def set_args(self, **kwargs):
|
||||
# connect_manager, user_image, servers, emby_connect
|
||||
for key, value in kwargs.iteritems():
|
||||
setattr(self, key, value)
|
||||
|
||||
def is_connected(self):
|
||||
return True if self._server else False
|
||||
|
@ -81,8 +80,8 @@ class ServerManual(xbmcgui.WindowXMLDialog):
|
|||
|
||||
if not server:
|
||||
# Display error
|
||||
self._error(ERROR['Empty'], lang(30617))
|
||||
log.error("Server cannot be null")
|
||||
self._error(ERROR['Empty'], _('empty_server'))
|
||||
LOG.error("Server cannot be null")
|
||||
|
||||
elif self._connect_to_server(server, port):
|
||||
self.close()
|
||||
|
@ -101,7 +100,7 @@ class ServerManual(xbmcgui.WindowXMLDialog):
|
|||
|
||||
def _add_editcontrol(self, x, y, height, width):
|
||||
|
||||
media = os.path.join(addon.getAddonInfo('path'), 'resources', 'skins', 'default', 'media')
|
||||
media = os.path.join(xbmcaddon.Addon(addon_id()).getAddonInfo('path'), 'resources', 'skins', 'default', 'media')
|
||||
control = xbmcgui.ControlEdit(0, 0, 0, 0,
|
||||
label="User",
|
||||
font="font13",
|
||||
|
@ -119,11 +118,11 @@ class ServerManual(xbmcgui.WindowXMLDialog):
|
|||
def _connect_to_server(self, server, port):
|
||||
|
||||
server_address = "%s:%s" % (server, port) if port else server
|
||||
self._message("%s %s..." % (lang(30610), server_address))
|
||||
result = self.connect_manager.connectToAddress(server_address)
|
||||
self._message("%s %s..." % (_(30610), server_address))
|
||||
result = self.connect_manager['manual-server'](server_address)
|
||||
|
||||
if result['State'] == CONN_STATE['Unavailable']:
|
||||
self._message(lang(30609))
|
||||
if result['State'] == CONNECTION_STATE['Unavailable']:
|
||||
self._message(_(30609))
|
||||
return False
|
||||
else:
|
||||
self._server = result['Servers'][0]
|
||||
|
|
|
@ -9,8 +9,7 @@ import xbmcgui
|
|||
|
||||
##################################################################################################
|
||||
|
||||
log = logging.getLogger("EMBY."+__name__)
|
||||
|
||||
LOG = logging.getLogger("EMBY."+__name__)
|
||||
ACTION_PARENT_DIR = 9
|
||||
ACTION_PREVIOUS_MENU = 10
|
||||
ACTION_BACK = 92
|
||||
|
@ -34,11 +33,10 @@ class UsersConnect(xbmcgui.WindowXMLDialog):
|
|||
self.kodi_version = int(xbmc.getInfoLabel('System.BuildVersion')[:2])
|
||||
xbmcgui.WindowXMLDialog.__init__(self, *args, **kwargs)
|
||||
|
||||
def set_server(self, server):
|
||||
self.server = server
|
||||
|
||||
def set_users(self, users):
|
||||
self.users = users
|
||||
def set_args(self, **kwargs):
|
||||
# connect_manager, user_image, servers, emby_connect
|
||||
for key, value in kwargs.iteritems():
|
||||
setattr(self, key, value)
|
||||
|
||||
def is_user_selected(self):
|
||||
return True if self._user else False
|
||||
|
@ -81,7 +79,7 @@ class UsersConnect(xbmcgui.WindowXMLDialog):
|
|||
if self.getFocusId() == LIST:
|
||||
user = self.list_.getSelectedItem()
|
||||
selected_id = user.getProperty('id')
|
||||
log.info('User Id selected: %s', selected_id)
|
||||
LOG.info('User Id selected: %s', selected_id)
|
||||
|
||||
for user in self.users:
|
||||
if user['Id'] == selected_id:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue