PlexKodiConnect/resources/lib/ClientInformation.py

124 lines
3.7 KiB
Python
Raw Normal View History

################################################################
# CLIENTINFORMATION: centralized client data
# -------------------------------
# addonId, addon version, clientId, platform
################################################################
# USER: centralized Userdata
# -------------------------------
# username, userId, token, server, Loglvl
################################################################
2015-03-14 08:24:59 +11:00
import xbmc
import xbmcaddon
import xbmcgui
import os
from uuid import uuid4 as uuid4
from Lock import Lock
2015-03-14 08:24:59 +11:00
class ClientInformation():
def __init__(self):
addonId = self.getAddonId()
self.addon = xbmcaddon.Addon(id=addonId)
def getAddonId(self):
# To use when declaring xbmcaddon.Addon(id=addonId)
addonId = "plugin.video.mb3sync"
return addonId
def getVersion(self):
version = self.addon.getAddonInfo('version')
return version
2015-03-14 08:24:59 +11:00
def getMachineId(self):
WINDOW = xbmcgui.Window( 10000 )
clientId = WINDOW.getProperty("client_id")
if(clientId != None and clientId != ""):
return clientId
# we need to load and or generate a client machine id
__addon__ = self.addon
__addondir__ = xbmc.translatePath( __addon__.getAddonInfo('path'))
machine_guid_lock_path = os.path.join(__addondir__, "machine_guid.lock")
machine_guid_path = os.path.join(__addondir__, "machine_guid")
clientId = ""
2015-03-14 08:24:59 +11:00
try:
lock = Lock(machine_guid_lock_path)
locked = lock.acquire()
if(locked == True):
fd = os.open(machine_guid_path, os.O_CREAT|os.O_RDWR)
clientId = os.read(fd, 256)
if(len(clientId) == 0):
uuid = uuid4()
clientId = str("%012X" % uuid)
xbmc.log("CLIENT_ID - > Client ID saved to FILE : " + clientId)
os.write(fd, clientId)
os.fsync(fd)
os.close(fd)
xbmc.log("CLIENT_ID - > Client ID saved to WINDOW : " + clientId)
2015-03-14 08:24:59 +11:00
WINDOW.setProperty("client_id", clientId)
finally:
lock.release()
2015-03-14 08:24:59 +11:00
return clientId
def getPlatform(self):
if xbmc.getCondVisibility('system.platform.osx'):
return "OSX"
elif xbmc.getCondVisibility('system.platform.atv2'):
return "ATV2"
elif xbmc.getCondVisibility('system.platform.ios'):
return "iOS"
elif xbmc.getCondVisibility('system.platform.windows'):
return "Windows"
elif xbmc.getCondVisibility('system.platform.linux'):
return "Linux/RPi"
elif xbmc.getCondVisibility('system.platform.android'):
return "Linux/Android"
return "Unknown"
class User(ClientInformation):
def __init__(self):
addonId = self.getAddonId()
self.addon = xbmcaddon.Addon(id=addonId)
def getUsername(self):
username = self.addon.getSetting('username')
return username
def getUserId(self):
userId = self.addon.getSetting('userId')
return userId
def getToken(self):
token = self.addon.getSetting('token')
return token
def getServer(self):
host = self.addon.getSetting('ipaddress')
port = self.addon.getSetting('port')
return host + ":" + port
def getLoglvl(self):
level = self.addon.getSetting('loglevel')
return level