diff --git a/resources/lib/API.py b/resources/lib/API.py index 1ca8bb5a..8e502397 100644 --- a/resources/lib/API.py +++ b/resources/lib/API.py @@ -151,12 +151,14 @@ class API(): PlaybackPositionTicks = userData.get('PlaybackPositionTicks') else: PlaybackPositionTicks = '' + userKey = userData.get("Key", "") return {'Watched' : watched, 'Favorite' : favorite, 'PlayCount': playcount, 'LastPlayedDate': LastPlayedDate, 'UnplayedItemCount' : UnplayedItemCount, - 'PlaybackPositionTicks' : str(PlaybackPositionTicks) + 'PlaybackPositionTicks' : str(PlaybackPositionTicks), + 'Key' : userKey } def getGenre(self,item): diff --git a/resources/lib/KodiMonitor.py b/resources/lib/KodiMonitor.py index 19a32d1d..0754562d 100644 --- a/resources/lib/KodiMonitor.py +++ b/resources/lib/KodiMonitor.py @@ -85,7 +85,6 @@ class Kodi_Monitor(xbmc.Monitor): WINDOW.setProperty(playurl+"SubtitleStreamIndex", str(mediaSources[0].get('DefaultSubtitleStreamIndex'))) if method == "VideoLibrary.OnUpdate": - jsondata = json.loads(data) if jsondata != None: @@ -96,6 +95,7 @@ class Kodi_Monitor(xbmc.Monitor): if playcount != None: utils.logMsg("MB# Sync","Kodi_Monitor--> VideoLibrary.OnUpdate : " + str(data),2) WriteKodiDB().updatePlayCountFromKodi(item, type, playcount) + if method == "VideoLibrary.OnRemove": xbmc.log('Intercepted remove from sender: ' + sender + ' method: ' + method + ' data: ' + data) WINDOW = xbmcgui.Window( 10000 ) diff --git a/resources/lib/LibrarySync.py b/resources/lib/LibrarySync.py index cc04d2e7..c949b279 100644 --- a/resources/lib/LibrarySync.py +++ b/resources/lib/LibrarySync.py @@ -57,7 +57,7 @@ class LibrarySync(): self.MoviesSync(True, False) self.MusicVideosSync(True, False) - # set the install done setting + # set the install done setting if(syncInstallRunDone == False and completed): addon = xbmcaddon.Addon(id='plugin.video.emby') #force a new instance of the addon addon.setSetting("SyncInstallRunDone", "true") @@ -155,6 +155,9 @@ class LibrarySync(): kodimovie = allKodiMovies.get(item["Id"], None) else: kodimovie = None + + userData = API().getUserData(item) + WINDOW.setProperty("EmbyUserKey" + userData.get("Key"), item.get('Id') + ";;" + item.get("Type")) if(kodimovie != None): #WriteKodiDB().updateMovieToKodiLibrary(item, kodimovie) @@ -340,7 +343,10 @@ class LibrarySync(): kodiEpisodes = ReadKodiDB().getKodiEpisodes(kodishow["tvshowid"],True,True) if(self.ShouldStop(pDialog)): - return False + return False + + userData = API().getUserData(episode) + WINDOW.setProperty("EmbyUserKey" + userData.get("Key"), episode.get('Id') + ";;" + episode.get("Type")) #we have to compare the lists somehow comparestring1 = str(episode.get("ParentIndexNumber")) + "-" + str(episode.get("IndexNumber")) @@ -519,6 +525,9 @@ class LibrarySync(): comparestring1 = str(item.get("ParentIndexNumber")) + "-" + str(item.get("IndexNumber")) matchFound = False + userData = API().getUserData(item) + WINDOW.setProperty("EmbyUserKey" + userData.get("Key"), item.get('Id') + ";;" + item.get("Type")) + if kodiEpisodes != None: KodiItem = kodiEpisodes.get(comparestring1, None) if(KodiItem != None): @@ -775,6 +784,8 @@ class LibrarySync(): userData = API().getUserData(item) timeInfo = API().getTimeInfo(item) + WINDOW.setProperty("EmbyUserKey" + userData.get("Key"), item.get('Id') + ";;" + item.get("Type")) + if kodiItem != None: kodiresume = int(round(kodiItem['resume'].get("position"))) resume = int(round(float(timeInfo.get("ResumeTime"))))*60 @@ -840,6 +851,9 @@ class LibrarySync(): userData=API().getUserData(episode) timeInfo = API().getTimeInfo(episode) + + WINDOW.setProperty("EmbyUserKey" + userData.get("Key"), episode.get('Id') + ";;" + episode.get("Type")) + if kodiItem != None: WINDOW = xbmcgui.Window( 10000 ) WINDOW.setProperty("episodeid" + str(kodiItem['episodeid']), episode.get('Name') + ";;" + episode.get('Id')) diff --git a/resources/lib/WebSocketClient.py b/resources/lib/WebSocketClient.py index 3273a742..d74cb107 100644 --- a/resources/lib/WebSocketClient.py +++ b/resources/lib/WebSocketClient.py @@ -177,9 +177,19 @@ class WebSocketThread(threading.Thread): elif(messageType != None and messageType == "UserDataChanged"): # for now just do a full playcount sync - self.logMsg("Message : Doing UserDataChanged calling updatePlayCounts()", 0) - LibrarySync().updatePlayCounts() - + WINDOW = xbmcgui.Window( 10000 ) + self.logMsg("Message : Doing UserDataChanged", 0) + userDataList = data.get("UserDataList") + self.logMsg("Message : Doing UserDataChanged : UserDataList : " + str(userDataList), 0) + if(userDataList != None): + for userData in userDataList: + self.logMsg("Message : Doing UserDataChanged : UserData : " + str(userData), 0) + userKey = userData.get("Key") + if(userKey != None): + embyItemId = WINDOW.getProperty("EmbyUserKey" + userKey).split(";;") + self.logMsg("Message : Doing UserDataChanged : window data : " + str(embyItemId), 0) + if(embyItemId != None and len(embyItemId) == 2): + LibrarySync().updatePlayCount(embyItemId[0], embyItemId[1]) def on_error(self, ws, error): self.logMsg("Error : " + str(error))