diff --git a/default.py b/default.py index 3205abf2..0fd50f31 100644 --- a/default.py +++ b/default.py @@ -12,24 +12,26 @@ cwd = addonSettings.getAddonInfo('path') BASE_RESOURCE_PATH = xbmc.translatePath( os.path.join( cwd, 'resources', 'lib' ) ) sys.path.append(BASE_RESOURCE_PATH) -WINDOW = xbmcgui.Window( 10000 ) +WINDOW = xbmcgui.Window(10000) import Utils as utils from PlaybackUtils import PlaybackUtils +from DownloadUtils import DownloadUtils try: - params=utils.get_params(sys.argv[2]) - mode = params.get('mode',"") - id = params.get('id',"") + params = utils.get_params(sys.argv[2]) + mode = params['mode'] + id = params['id'] except: - params={} - mode=None - id=None + params = {} + mode = None + +if mode == "play": + # Play items via plugin://plugin.video.emby/ + url = "{server}/mediabrowser/Users/{UserId}/Items/%s?format=json&ImageTypeLimit=1" % id + result = DownloadUtils().downloadUrl(url) + item = PlaybackUtils().PLAY(result, setup="default") -if mode != None and mode == "play": - listItem = xbmcgui.ListItem(path="") - xbmcplugin.setResolvedUrl (int(sys.argv[1]), True, listItem) - WINDOW.setProperty('GUIPLAY', str(id)) # set window prop elif sys.argv[1] == "reset": utils.reset() else: diff --git a/resources/lib/DownloadUtils.py b/resources/lib/DownloadUtils.py index 22165188..d1504cba 100644 --- a/resources/lib/DownloadUtils.py +++ b/resources/lib/DownloadUtils.py @@ -99,9 +99,12 @@ class DownloadUtils(): header = self.getHeader() # If user enabled host certificate verification - if self.sslverify: - verify = True + try: + verify = self.sslverify cert = self.sslclient + except: + self.logMsg("Could not load SSL settings.", 1) + pass # Start session self.s = requests.Session() @@ -149,31 +152,62 @@ class DownloadUtils(): self.logMsg("=== ENTER downloadUrl ===", 2) - WINDOW = xbmcgui.Window( 10000 ) + WINDOW = self.WINDOW timeout = self.timeout default_link = "" - - username = WINDOW.getProperty('currUser') - userId = WINDOW.getProperty('userId%s' % username) - server = WINDOW.getProperty('server%s' % username) - url = url.replace("{server}", server, 1) - url = url.replace("{UserId}", userId, 1) - #url = "%s&api_key=%s" % (url, self.token) # If user is authenticated if (authenticate): # Get requests session - s = self.s - # Replace for the real values and append api_key + try: + s = self.s + # Replace for the real values and append api_key + url = url.replace("{server}", self.server, 1) + url = url.replace("{UserId}", self.userId, 1) + #url = "%s&api_key=%s" % (url, self.token) - self.logMsg("URL: %s" % url, 2) - # Prepare request - if type == "GET": - r = s.get(url, json=postBody, timeout=timeout) - elif type == "POST": - r = s.post(url, json=postBody, timeout=timeout) - elif type == "DELETE": - r = s.delete(url, json=postBody, timeout=timeout) + self.logMsg("URL: %s" % url, 2) + # Prepare request + if type == "GET": + r = s.get(url, json=postBody, timeout=timeout) + elif type == "POST": + r = s.post(url, json=postBody, timeout=timeout) + elif type == "DELETE": + r = s.delete(url, json=postBody, timeout=timeout) + + except AttributeError: + + # Get user information + self.username = WINDOW.getProperty('currUser') + self.userId = WINDOW.getProperty('userId%s' % self.username) + self.server = WINDOW.getProperty('server%s' % self.username) + self.token = WINDOW.getProperty('accessToken%s' % self.username) + header = self.getHeader() + verifyssl = False + cert = None + + # IF user enables ssl verification + try: + if self.addon.getSetting('sslverify') == "true": + verifyssl = True + if self.addon.getSetting('sslcert') != "None": + cert = self.addon.getSetting('sslcert') + except: + self.logMsg("Could not load SSL settings.", 1) + pass + + # Replace for the real values and append api_key + url = url.replace("{server}", self.server, 1) + url = url.replace("{UserId}", self.userId, 1) + + self.logMsg("URL: %s" % url, 2) + # Prepare request + if type == "GET": + r = requests.get(url, json=postBody, headers=header, timeout=timeout, cert=cert, verify=verifyssl) + elif type == "POST": + r = requests.post(url, json=postBody, headers=header, timeout=timeout, cert=cert, verify=verifyssl) + elif type == "DELETE": + r = requests.delete(url, json=postBody, headers=header, timeout=timeout, cert=cert, verify=verifyssl) # If user is not authenticated elif not authenticate: diff --git a/resources/lib/PlaybackUtils.py b/resources/lib/PlaybackUtils.py index 13b05629..796b8c3e 100644 --- a/resources/lib/PlaybackUtils.py +++ b/resources/lib/PlaybackUtils.py @@ -35,7 +35,7 @@ class PlaybackUtils(): def __init__(self, *args): pass - def PLAY(self, result): + def PLAY(self, result, setup="service"): xbmc.log("PLAY Called") WINDOW = xbmcgui.Window(10000) @@ -73,7 +73,7 @@ class PlaybackUtils(): WINDOW.setProperty(playurl+"deleteurl", "") WINDOW.setProperty(playurl+"deleteurl", deleteurl) - if seekTime != 0: + '''if seekTime != 0: displayTime = str(datetime.timedelta(seconds=seekTime)) display_list = [ self.language(30106) + ' ' + displayTime, self.language(30107)] resumeScreen = xbmcgui.Dialog() @@ -83,7 +83,7 @@ class PlaybackUtils(): else: WINDOW.clearProperty(playurl+"seektime") else: - WINDOW.clearProperty(playurl+"seektime") + WINDOW.clearProperty(playurl+"seektime")''' if result.get("Type")=="Episode": WINDOW.setProperty(playurl+"refresh_id", result.get("SeriesId")) @@ -109,7 +109,11 @@ class PlaybackUtils(): WINDOW.setProperty(playurl+"SubtitleStreamIndex", str(mediaSources[0].get('DefaultSubtitleStreamIndex'))) #launch the playback - xbmc.Player().play(playurl,listItem) + if setup == "service": + xbmc.Player().play(playurl,listItem) + elif setup == "default": + listItem = xbmcgui.ListItem(path=playurl) + xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, listItem) def setArt(self, list,name,path): if name=='thumb' or name=='fanart_image' or name=='small_poster' or name=='tiny_poster' or name == "medium_landscape" or name=='medium_poster' or name=='small_fanartimage' or name=='medium_fanartimage' or name=='fanart_noindicators':