diff --git a/resources/lib/LibrarySync.py b/resources/lib/LibrarySync.py index efb5e18c..55e73d53 100644 --- a/resources/lib/LibrarySync.py +++ b/resources/lib/LibrarySync.py @@ -315,7 +315,9 @@ class LibrarySync(): for episode in latestMBEpisodes: if episode["SeriesId"] in allKodiTvShowsIds: #only process tvshows that already exist in the db at incremental updates - kodiEpisodes = ReadKodiDB().getKodiEpisodes(episode["SeriesId"],True,True) + allKodiTVShows = ReadKodiDB().getKodiTvShows(False) + kodishow = allKodiTVShows.get(episode["SeriesId"],None) + kodiEpisodes = ReadKodiDB().getKodiEpisodes(kodishow["tvshowid"],True,True) if(self.ShouldStop(pDialog)): return False @@ -360,7 +362,9 @@ class LibrarySync(): for episode in latestMBEpisodes: if episode["SeriesId"] in allKodiTvShowsIds: #only process tvshows that already exist in the db at incremental updates - kodiEpisodes = ReadKodiDB().getKodiEpisodes(episode["SeriesId"],True,True) + allKodiTVShows = ReadKodiDB().getKodiTvShows(False) + kodishow = allKodiTVShows.get(episode["SeriesId"],None) + kodiEpisodes = ReadKodiDB().getKodiEpisodes(kodishow["tvshowid"],True,True) if(self.ShouldStop(pDialog)): return False @@ -433,7 +437,9 @@ class LibrarySync(): for tvshow in allTVShows: episodeData = ReadEmbyDB().getEpisodes(tvshow,True) - kodiEpisodes = ReadKodiDB().getKodiEpisodes(tvshow,True,True) + allKodiTVShows = ReadKodiDB().getKodiTvShows(False) + kodishow = allKodiTVShows.get(tvshow,None) + kodiEpisodes = ReadKodiDB().getKodiEpisodes(kodishow["tvshowid"],True,True) if episodeData != None: @@ -447,6 +453,7 @@ class LibrarySync(): count = 0 #we have to compare the lists somehow + # TODO --> instead of matching by season and episode number we can use the uniqueid for item in episodeData: comparestring1 = str(item.get("ParentIndexNumber")) + "-" + str(item.get("IndexNumber")) matchFound = False @@ -518,9 +525,9 @@ class LibrarySync(): # do episode updates showCurrent = 1 for tvshow in allTVShows: - episodeData = ReadEmbyDB().getEpisodes(tvshow,True) - kodiEpisodes = ReadKodiDB().getKodiEpisodes(tvshow,True,True) + kodishow = allKodiTVShows.get(tvshow,None) + kodiEpisodes = ReadKodiDB().getKodiEpisodes(kodishow["tvshowid"],True,True) if(self.ShouldStop(pDialog)): return False @@ -533,19 +540,19 @@ class LibrarySync(): #we have to compare the lists somehow for item in episodeData: - #add episodeId to the list of all episodes for use later on the deletes allMB3EpisodeIds.append(item["Id"]) comparestring1 = str(item.get("ParentIndexNumber")) + "-" + str(item.get("IndexNumber")) matchFound = False + if kodiEpisodes != None: KodiItem = kodiEpisodes.get(comparestring1, None) if(KodiItem != None): updated = WriteKodiDB().updateEpisodeToKodiLibrary(item, KodiItem) if(updated): totalItemsUpdated += 1 - + if(self.ShouldStop(pDialog)): return False @@ -558,7 +565,7 @@ class LibrarySync(): #add all kodi episodes to a list with episodes for use later on to delete episodes #the mediabrowser ID is set as uniqueID in the NFO... for some reason this has key 'unknown' in the json response - show = ReadKodiDB().getKodiEpisodes(tvshow,False,False) + show = ReadKodiDB().getKodiEpisodes(kodishow["tvshowid"],False,False) if show != None: for episode in show: dict = {'episodeid': str(episode["uniqueid"]["unknown"]),'tvshowid': tvshow} @@ -879,7 +886,9 @@ class LibrarySync(): for item in tvshowData: episodeData = ReadEmbyDB().getEpisodes(item["Id"], False) - kodiEpisodes = ReadKodiDB().getKodiEpisodes(item["Id"],False,True) + allKodiTVShows = ReadKodiDB().getKodiTvShows(False) + kodishow = allKodiTVShows.get(item["Id"],None) + kodiEpisodes = ReadKodiDB().getKodiEpisodes(kodishow["tvshowid"],False,True) if (episodeData != None): if(pDialog != None): diff --git a/resources/lib/ReadKodiDB.py b/resources/lib/ReadKodiDB.py index 9d773e7a..9f824954 100644 --- a/resources/lib/ReadKodiDB.py +++ b/resources/lib/ReadKodiDB.py @@ -129,7 +129,7 @@ class ReadKodiDB(): if fullInfo: json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": { "properties": ["art", "genre", "plot", "mpaa", "cast", "studio", "sorttitle", "title", "originaltitle", "imdbnumber", "year", "premiered", "rating", "thumbnail", "playcount", "lastplayed", "file", "fanart"], "sort": { "order": "ascending", "method": "label", "ignorearticle": true } }, "id": "libTvShows"}') else: - json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": { "properties": ["sorttitle", "title", "playcount", "lastplayed", imdbnumber, "file"], "sort": { "order": "ascending", "method": "label", "ignorearticle": true } }, "id": "libTvShows"}') + json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": { "properties": ["sorttitle", "title", "playcount", "lastplayed", "imdbnumber", "file"], "sort": { "order": "ascending", "method": "label", "ignorearticle": true } }, "id": "libTvShows"}') jsonobject = json.loads(json_response.decode('utf-8','replace')) tvshows = None @@ -159,27 +159,19 @@ class ReadKodiDB(): tvshow = tvshows[0] return tvshow - def getKodiEpisodes(self, id, fullInfo = True, returnmap = True): + def getKodiEpisodes(self, KodiTvShowId, fullInfo = True, returnmap = True): xbmc.sleep(sleepVal) episodes = None - json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": { "filter": {"operator": "contains", "field": "imdbnumber", "value": "' + id + '"}, "properties": ["title", "file"], "sort": { "order": "ascending", "method": "label", "ignorearticle": true } }, "id": "libTvShows"}') + if fullInfo: + json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params": {"tvshowid": %d, "properties": ["title", "playcount", "plot", "season", "episode", "showtitle", "file", "lastplayed", "rating", "resume", "art", "streamdetails", "firstaired", "runtime", "writer", "cast", "dateadded","uniqueid"], "sort": {"method": "episode"}}, "id": 1}' %KodiTvShowId) + else: + json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params": {"tvshowid": %d, "properties": ["title", "playcount", "season", "episode", "lastplayed", "resume","file","uniqueid"], "sort": {"method": "episode"}}, "id": 1}' %KodiTvShowId) jsonobject = json.loads(json_response.decode('utf-8','replace')) - tvshow = None + episodes = None if(jsonobject.has_key('result')): result = jsonobject['result'] - if(result.has_key('tvshows')): - tvshows = result['tvshows'] - tvshow = tvshows[0] - if fullInfo: - json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params": {"tvshowid": %d, "properties": ["title", "playcount", "plot", "season", "episode", "showtitle", "file", "lastplayed", "rating", "resume", "art", "streamdetails", "firstaired", "runtime", "writer", "cast", "dateadded","uniqueid"], "sort": {"method": "episode"}}, "id": 1}' %tvshow['tvshowid']) - else: - json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params": {"tvshowid": %d, "properties": ["title", "playcount", "season", "episode", "lastplayed", "resume","file","uniqueid"], "sort": {"method": "episode"}}, "id": 1}' %tvshow['tvshowid']) - jsonobject = json.loads(json_response.decode('utf-8','replace')) - episodes = None - if(jsonobject.has_key('result')): - result = jsonobject['result'] - if(result.has_key('episodes')): - episodes = result['episodes'] + if(result.has_key('episodes')): + episodes = result['episodes'] if returnmap: episodeMap = None if(episodes != None): @@ -214,7 +206,6 @@ class ReadKodiDB(): #returns a single musicvideo from Kodi db selected on MB item ID xbmc.sleep(sleepVal) json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetMusicVideos", "params": { "filter": {"operator": "contains", "field": "path", "value": "' + id + '"}, "properties" : ["art", "thumbnail", "resume", "runtime", "year", "genre", "studio", "artist", "album", "track","plot", "director", "playcount", "lastplayed", "tag", "file"], "sort": { "order": "ascending", "method": "label", "ignorearticle": true } }, "id": "libMusicVideos"}') - print json_response jsonobject = json.loads(json_response.decode('utf-8','replace')) musicvideo = None diff --git a/resources/lib/WriteKodiDB.py b/resources/lib/WriteKodiDB.py index fac54515..8bceddad 100644 --- a/resources/lib/WriteKodiDB.py +++ b/resources/lib/WriteKodiDB.py @@ -868,11 +868,6 @@ class WriteKodiDB(): oldFileName = utils.convertEncoding(oldFileName) newFileName = utils.convertEncoding(newFileName) - print "setting filename for ID..." + str(id) + "...Type-->" + fileType - print oldFileName - print newFileName - - # only perform changes if the path actually differs if oldFileName != newFileName: