From 03cf43179aafd917d18783332614c668725a88e9 Mon Sep 17 00:00:00 2001 From: xnappo Date: Mon, 25 May 2015 11:49:06 -0500 Subject: [PATCH] Added playback reporting for direct paths --- resources/lib/KodiMonitor.py | 57 ++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/resources/lib/KodiMonitor.py b/resources/lib/KodiMonitor.py index 496cd4be..4191fb3a 100644 --- a/resources/lib/KodiMonitor.py +++ b/resources/lib/KodiMonitor.py @@ -16,6 +16,8 @@ from PlayUtils import PlayUtils from DownloadUtils import DownloadUtils from PlaybackUtils import PlaybackUtils +addon = xbmcaddon.Addon(id='plugin.video.emby') + class Kodi_Monitor(xbmc.Monitor): WINDOW = xbmcgui.Window(10000) @@ -32,7 +34,62 @@ class Kodi_Monitor(xbmc.Monitor): WINDOW = self.WINDOW downloadUtils = DownloadUtils() + #player started playing an item - + if "Playlist.OnAdd" in method and addon.getSetting('useDirectPaths')=='true': + jsondata = json.loads(data) + if jsondata != None: + if jsondata.has_key("item"): + if jsondata.get("item").has_key("id") and jsondata.get("item").has_key("type"): + id = jsondata.get("item").get("id") + type = jsondata.get("item").get("type") + embyid = ReadKodiDB().getEmbyIdByKodiId(id,type) + + if embyid != None: + + WINDOW = xbmcgui.Window( 10000 ) + username = WINDOW.getProperty('currUser') + userid = WINDOW.getProperty('userId%s' % username) + server = WINDOW.getProperty('server%s' % username) + + url = "{server}/mediabrowser/Users/{UserId}/Items/" + embyid + "?format=json&ImageTypeLimit=1" + result = downloadUtils.downloadUrl(url) + print "Here: " + str(result) + userData = result[u'UserData'] + + playurl = PlayUtils().getPlayUrl(server, embyid, result) + + watchedurl = 'http://' + server + '/mediabrowser/Users/'+ userid + '/PlayedItems/' + embyid + positionurl = 'http://' + server + '/mediabrowser/Users/'+ userid + '/PlayingItems/' + embyid + deleteurl = 'http://' + server + '/mediabrowser/Items/' + embyid + + # set the current playing info + WINDOW.setProperty(playurl+"watchedurl", watchedurl) + WINDOW.setProperty(playurl+"positionurl", positionurl) + WINDOW.setProperty(playurl+"deleteurl", "") + WINDOW.setProperty(playurl+"deleteurl", deleteurl) + if result.get("Type")=="Episode": + WINDOW.setProperty(playurl+"refresh_id", result.get("SeriesId")) + else: + WINDOW.setProperty(playurl+"refresh_id", embyid) + + WINDOW.setProperty(playurl+"runtimeticks", str(result.get("RunTimeTicks"))) + WINDOW.setProperty(playurl+"type", result.get("Type")) + WINDOW.setProperty(playurl+"item_id", embyid) + + if PlayUtils().isDirectPlay(result) == True: + playMethod = "DirectPlay" + else: + playMethod = "Transcode" + + WINDOW.setProperty(playurl+"playmethod", playMethod) + + mediaSources = result.get("MediaSources") + if(mediaSources != None): + if mediaSources[0].get('DefaultAudioStreamIndex') != None: + WINDOW.setProperty(playurl+"AudioStreamIndex", str(mediaSources[0].get('DefaultAudioStreamIndex'))) + if mediaSources[0].get('DefaultSubtitleStreamIndex') != None: + WINDOW.setProperty(playurl+"SubtitleStreamIndex", str(mediaSources[0].get('DefaultSubtitleStreamIndex'))) if method == "VideoLibrary.OnUpdate": jsondata = json.loads(data) if jsondata != None: