New hybrid method

This commit is contained in:
angelblue05 2018-09-06 03:36:32 -05:00
parent 7f5084c62e
commit ace50b34dc
279 changed files with 39526 additions and 19994 deletions

View file

@ -1,4 +1,3 @@
# Dummy file to make this directory a package.
from serverconnect import ServerConnect
from usersconnect import UsersConnect
from loginconnect import LoginConnect

View file

@ -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)

View file

@ -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):

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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]

View file

@ -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: