Merge pull request #1690 from croneter/py3-fix-addon
Fix generating new unique device ID for PKC not working
This commit is contained in:
commit
a89f7fa63b
7 changed files with 38 additions and 46 deletions
20
default.py
20
default.py
|
@ -117,7 +117,8 @@ class Main(object):
|
||||||
transfer.plex_command('choose_pms_server')
|
transfer.plex_command('choose_pms_server')
|
||||||
|
|
||||||
elif mode == 'deviceid':
|
elif mode == 'deviceid':
|
||||||
self.deviceid()
|
LOG.info('New PKC UUID / unique device id requested')
|
||||||
|
transfer.plex_command('generate_new_uuid')
|
||||||
|
|
||||||
elif mode == 'fanart':
|
elif mode == 'fanart':
|
||||||
LOG.info('User requested fanarttv refresh')
|
LOG.info('User requested fanarttv refresh')
|
||||||
|
@ -173,23 +174,6 @@ class Main(object):
|
||||||
# Received a xbmcgui.ListItem()
|
# Received a xbmcgui.ListItem()
|
||||||
xbmcplugin.setResolvedUrl(HANDLE, True, result)
|
xbmcplugin.setResolvedUrl(HANDLE, True, result)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def deviceid():
|
|
||||||
window = xbmcgui.Window(10000)
|
|
||||||
deviceId_old = window.getProperty('plex_client_Id')
|
|
||||||
from resources.lib import clientinfo
|
|
||||||
try:
|
|
||||||
deviceId = clientinfo.getDeviceId(reset=True)
|
|
||||||
except Exception as e:
|
|
||||||
LOG.error('Failed to generate a new device Id: %s' % e)
|
|
||||||
utils.messageDialog(utils.lang(29999), utils.lang(33032))
|
|
||||||
else:
|
|
||||||
LOG.info('Successfully removed old device ID: %s New deviceId:'
|
|
||||||
'%s' % (deviceId_old, deviceId))
|
|
||||||
# 'Kodi will now restart to apply the changes'
|
|
||||||
utils.messageDialog(utils.lang(29999), utils.lang(33033))
|
|
||||||
xbmc.executebuiltin('RestartApp')
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
LOG.info('%s started' % v.ADDON_ID)
|
LOG.info('%s started' % v.ADDON_ID)
|
||||||
|
|
|
@ -59,10 +59,20 @@ def getDeviceId(reset=False):
|
||||||
|
|
||||||
If id does not exist, create one and save in Kodi settings file.
|
If id does not exist, create one and save in Kodi settings file.
|
||||||
"""
|
"""
|
||||||
if reset is True:
|
if reset:
|
||||||
v.PKC_MACHINE_IDENTIFIER = None
|
LOG.info("Generating a new deviceid.")
|
||||||
utils.window('plex_client_Id', clear=True)
|
from uuid import uuid4
|
||||||
utils.settings('plex_client_Id', value="")
|
client_id = str(uuid4())
|
||||||
|
utils.settings('plex_client_Id', value=client_id)
|
||||||
|
v.PKC_MACHINE_IDENTIFIER = client_id
|
||||||
|
utils.window('plex_client_Id', value=client_id)
|
||||||
|
LOG.info("Unique device Id plex_client_Id generated: %s", client_id)
|
||||||
|
# IF WE EXIT KODI NOW, THE SETTING WON'T STICK!
|
||||||
|
# 'Kodi will now restart to apply the changes'
|
||||||
|
# utils.messageDialog(utils.lang(29999), utils.lang(33033))
|
||||||
|
# xbmc.executebuiltin('RestartApp')
|
||||||
|
utils.messageDialog(utils.lang(29999), 'Please restart Kodi now!')
|
||||||
|
return client_id
|
||||||
|
|
||||||
client_id = v.PKC_MACHINE_IDENTIFIER
|
client_id = v.PKC_MACHINE_IDENTIFIER
|
||||||
if client_id:
|
if client_id:
|
||||||
|
@ -75,12 +85,3 @@ def getDeviceId(reset=False):
|
||||||
utils.window('plex_client_Id', value=client_id)
|
utils.window('plex_client_Id', value=client_id)
|
||||||
LOG.info("Unique device Id plex_client_Id loaded: %s", client_id)
|
LOG.info("Unique device Id plex_client_Id loaded: %s", client_id)
|
||||||
return client_id
|
return client_id
|
||||||
|
|
||||||
LOG.info("Generating a new deviceid.")
|
|
||||||
from uuid import uuid4
|
|
||||||
client_id = str(uuid4())
|
|
||||||
utils.settings('plex_client_Id', value=client_id)
|
|
||||||
v.PKC_MACHINE_IDENTIFIER = client_id
|
|
||||||
utils.window('plex_client_Id', value=client_id)
|
|
||||||
LOG.info("Unique device Id plex_client_Id generated: %s", client_id)
|
|
||||||
return client_id
|
|
||||||
|
|
|
@ -496,6 +496,9 @@ class Service(object):
|
||||||
elif plex_command == 'EXIT-PKC':
|
elif plex_command == 'EXIT-PKC':
|
||||||
LOG.info('Received command from another instance to quit')
|
LOG.info('Received command from another instance to quit')
|
||||||
app.APP.stop_pkc = True
|
app.APP.stop_pkc = True
|
||||||
|
elif plex_command == 'generate_new_uuid':
|
||||||
|
LOG.info('Generating new UUID for PKC')
|
||||||
|
clientinfo.getDeviceId(reset=True)
|
||||||
else:
|
else:
|
||||||
raise RuntimeError('Unknown command: %s', plex_command)
|
raise RuntimeError('Unknown command: %s', plex_command)
|
||||||
if task:
|
if task:
|
||||||
|
|
|
@ -114,7 +114,7 @@ def settings(setting, value=None):
|
||||||
"""
|
"""
|
||||||
# We need to instantiate every single time to read changed variables!
|
# We need to instantiate every single time to read changed variables!
|
||||||
with SETTINGS_LOCK:
|
with SETTINGS_LOCK:
|
||||||
addon = xbmcaddon.Addon()
|
addon = xbmcaddon.Addon('plugin.video.plexkodiconnect')
|
||||||
if value is not None:
|
if value is not None:
|
||||||
# Takes string or unicode by default!
|
# Takes string or unicode by default!
|
||||||
addon.setSetting(setting, value)
|
addon.setSetting(setting, value)
|
||||||
|
|
|
@ -21,7 +21,7 @@ MARK_PLAYED_AT = 0.9
|
||||||
# watched?
|
# watched?
|
||||||
IGNORE_SECONDS_AT_START = 60
|
IGNORE_SECONDS_AT_START = 60
|
||||||
|
|
||||||
_ADDON = Addon()
|
_ADDON = Addon('plugin.video.plexkodiconnect')
|
||||||
ADDON_NAME = 'PlexKodiConnect'
|
ADDON_NAME = 'PlexKodiConnect'
|
||||||
ADDON_ID = 'plugin.video.plexkodiconnect'
|
ADDON_ID = 'plugin.video.plexkodiconnect'
|
||||||
ADDON_VERSION = _ADDON.getAddonInfo('version')
|
ADDON_VERSION = _ADDON.getAddonInfo('version')
|
||||||
|
|
|
@ -198,14 +198,19 @@ class PlexWebSocketApp(websocket.WebSocketApp,
|
||||||
log.exception('Exception of type %s occured: %s', type(err), err)
|
log.exception('Exception of type %s occured: %s', type(err), err)
|
||||||
finally:
|
finally:
|
||||||
self.close()
|
self.close()
|
||||||
|
if self._enabled:
|
||||||
# Status = Not connected
|
# Status = Not connected
|
||||||
|
message = utils.lang(15208)
|
||||||
|
else:
|
||||||
|
# Status = Disabled
|
||||||
|
message = utils.lang(24023)
|
||||||
utils.settings(self.name + SETTINGS_STRING,
|
utils.settings(self.name + SETTINGS_STRING,
|
||||||
value=utils.lang(15208))
|
value=message)
|
||||||
app.APP.deregister_thread(self)
|
app.APP.deregister_thread(self)
|
||||||
log.info("----===## %s stopped ##===----", self.name)
|
log.info("----===## %s stopped ##===----", self.name)
|
||||||
|
|
||||||
def _run(self):
|
def _run(self):
|
||||||
while not self.should_cancel():
|
while not self.should_cancel() and self._enabled:
|
||||||
# In the event the server goes offline
|
# In the event the server goes offline
|
||||||
while self.should_suspend():
|
while self.should_suspend():
|
||||||
# We will be caught in this loop if either another thread
|
# We will be caught in this loop if either another thread
|
||||||
|
@ -231,16 +236,13 @@ class PlexWebSocketApp(websocket.WebSocketApp,
|
||||||
class PMSWebsocketApp(PlexWebSocketApp):
|
class PMSWebsocketApp(PlexWebSocketApp):
|
||||||
name = 'pms_websocket'
|
name = 'pms_websocket'
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
self._enabled = utils.settings('enableBackgroundSync') == 'true'
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
def get_uri(self):
|
def get_uri(self):
|
||||||
return get_pms_uri()
|
return get_pms_uri()
|
||||||
|
|
||||||
def should_suspend(self):
|
|
||||||
"""
|
|
||||||
Returns True if the thread needs to suspend.
|
|
||||||
"""
|
|
||||||
return (self._suspended or
|
|
||||||
utils.settings('enableBackgroundSync') != 'true')
|
|
||||||
|
|
||||||
def set_suspension_settings_status(self):
|
def set_suspension_settings_status(self):
|
||||||
if utils.settings('enableBackgroundSync') != 'true':
|
if utils.settings('enableBackgroundSync') != 'true':
|
||||||
# Status = Disabled
|
# Status = Disabled
|
||||||
|
@ -255,6 +257,10 @@ class PMSWebsocketApp(PlexWebSocketApp):
|
||||||
class AlexaWebsocketApp(PlexWebSocketApp):
|
class AlexaWebsocketApp(PlexWebSocketApp):
|
||||||
name = 'alexa_websocket'
|
name = 'alexa_websocket'
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
self._enabled = utils.settings('enable_alexa') == 'true'
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
def get_uri(self):
|
def get_uri(self):
|
||||||
return get_alexa_uri()
|
return get_alexa_uri()
|
||||||
|
|
||||||
|
@ -263,7 +269,6 @@ class AlexaWebsocketApp(PlexWebSocketApp):
|
||||||
Returns True if the thread needs to suspend.
|
Returns True if the thread needs to suspend.
|
||||||
"""
|
"""
|
||||||
return self._suspended or \
|
return self._suspended or \
|
||||||
utils.settings('enable_alexa') != 'true' or \
|
|
||||||
app.ACCOUNT.restricted_user or \
|
app.ACCOUNT.restricted_user or \
|
||||||
not app.ACCOUNT.plex_token
|
not app.ACCOUNT.plex_token
|
||||||
|
|
||||||
|
|
|
@ -994,8 +994,7 @@ class WindowProperty(object):
|
||||||
|
|
||||||
class GlobalProperty(object):
|
class GlobalProperty(object):
|
||||||
def __init__(self, prop, val='1', end=None):
|
def __init__(self, prop, val='1', end=None):
|
||||||
import xbmcaddon
|
self._addonID = 'plugin.video.plexkodiconnect'
|
||||||
self._addonID = xbmcaddon.Addon().getAddonInfo('id')
|
|
||||||
self.prop = prop
|
self.prop = prop
|
||||||
self.val = val
|
self.val = val
|
||||||
self.end = end
|
self.end = end
|
||||||
|
|
Loading…
Reference in a new issue