From c374b166bb2672cb0720439439b299944c78edf3 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Tue, 5 May 2015 04:53:21 +0200 Subject: [PATCH] added support for channels --- default.py | 24 +++++++++++++----------- resources/lib/PlayUtils.py | 2 ++ resources/lib/WriteKodiDB.py | 16 ++++++++++++++-- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/default.py b/default.py index 9ecbe8aa..d03f72f3 100644 --- a/default.py +++ b/default.py @@ -34,11 +34,8 @@ if mode == "play" or mode == "playfromaddon": # Play items via plugin://plugin.video.emby/ url = "{server}/mediabrowser/Users/{UserId}/Items/%s?format=json&ImageTypeLimit=1" % id result = DownloadUtils().downloadUrl(url) - #from from addon needed if the palyback is launched from the addon itself - if mode == "playfromaddon": - item = PlaybackUtils().PLAY(result, setup="service") - else: - item = PlaybackUtils().PLAY(result, setup="default") + item = PlaybackUtils().PLAY(result, setup="service") + elif mode == "reset": utils.reset() @@ -53,7 +50,6 @@ elif mode == "resetauth": xbmc.executebuiltin('Addon.OpenSettings(plugin.video.emby)') - if mode == "channels" or mode == "channelsfolder": id = params['id'] @@ -195,10 +191,11 @@ if mode == "channels" or mode == "channelsfolder": xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=file, listitem=liz, isFolder=True) elif isFolder == True: - file = _addon_url + "?id=%s&mode=channels&folderid=%s" %(channelId, id) + file = _addon_url + "?id=%s&mode=channelsfolder&folderid=%s" %(channelId, id) xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=file, listitem=liz, isFolder=True) else: - file = _addon_url + "?id=%s&mode=playfromaddon"%id + file = _addon_url + "?id=%s&mode=play"%id + liz.setProperty('IsPlayable', 'true') xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=file, listitem=liz) xbmcplugin.endOfDirectory(handle=int(sys.argv[1])) @@ -232,6 +229,7 @@ elif mode == "nextup": plot = item['plot'] liz = xbmcgui.ListItem(item['title']) liz.setInfo( type="Video", infoLabels={ "Title": item['title'] }) + liz.setProperty('IsPlayable', 'true') liz.setInfo( type="Video", infoLabels={ "duration": str(item['runtime']/60) }) liz.setInfo( type="Video", infoLabels={ "Episode": item['episode'] }) liz.setInfo( type="Video", infoLabels={ "Season": item['season'] }) @@ -258,7 +256,7 @@ elif mode == "nextup": for key, value in item['streamdetails'].iteritems(): for stream in value: liz.addStreamInfo( key, stream ) - file = item['file'].replace("mode=play","mode=playfromaddon") + #file = item['file'].replace("mode=play","mode=playfromaddon") xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=file, listitem=liz) count +=1 if count == limit: @@ -313,6 +311,10 @@ elif "extrafanart" in sys.argv[0]: #always do endofdirectory to prevent errors in the logs xbmcplugin.endOfDirectory(int(sys.argv[1])) -else: - xbmc.executebuiltin('Addon.OpenSettings(plugin.video.emby)') +else: + #open the addon settings if the addon is called directly from video addons + try: + if "content_type" in sys.argv[2]: + xbmc.executebuiltin('Addon.OpenSettings(plugin.video.emby)') + except: pass diff --git a/resources/lib/PlayUtils.py b/resources/lib/PlayUtils.py index 1f844447..a09260f0 100644 --- a/resources/lib/PlayUtils.py +++ b/resources/lib/PlayUtils.py @@ -163,6 +163,8 @@ class PlayUtils(): return '2147483' # max bit rate supported by server (max signed 32bit integer) def fileExists(self, result): + if not result.has_key("Path"): + return False path=result.get("Path").encode('utf-8') if os.path.exists(path) == True: return True diff --git a/resources/lib/WriteKodiDB.py b/resources/lib/WriteKodiDB.py index 277437f2..3654a13c 100644 --- a/resources/lib/WriteKodiDB.py +++ b/resources/lib/WriteKodiDB.py @@ -1040,8 +1040,19 @@ class WriteKodiDB(): #we need to copy over the default items import shutil shutil.copytree(xbmc.translatePath("special://xbmc/system/library/video"), xbmc.translatePath("special://userdata/library/video")) - - libraryPath = xbmc.translatePath("special://userdata/library/video/emby/") + + #create tag node for emby channels + nodefile = os.path.join(xbmc.translatePath("special://userdata/library/video"), "emby_channels.xml") + if not xbmcvfs.exists(nodefile): + root = Element("node", {"order":"20", "type":"folder"}) + SubElement(root, "label").text = "Emby - Channels" + SubElement(root, "path").text = "plugin://plugin.video.emby/?id=0&mode=channels" + SubElement(root, "icon").text = "DefaultMovies.png" + try: + ET.ElementTree(root).write(nodefile, xml_declaration=True) + except: + ET.ElementTree(root).write(nodefile) + if type == "movie": type = "movies" @@ -1170,6 +1181,7 @@ class WriteKodiDB(): ET.ElementTree(root).write(nodefile, xml_declaration=True) except: ET.ElementTree(root).write(nodefile) + def updateBoxsetToKodiLibrary(self, boxsetmovie, boxset, connection, cursor): strSet = boxset["Name"]