From dd0339b51cfbd35c3234d6c0a33f5c9392f7e662 Mon Sep 17 00:00:00 2001 From: tomkat83 Date: Thu, 2 Feb 2017 16:53:50 +0100 Subject: [PATCH] Remove uniqueid and ratings entries if item deleted --- resources/lib/itemtypes.py | 56 ++++++++++++++++--------------- resources/lib/kodidb_functions.py | 14 ++++++++ 2 files changed, 43 insertions(+), 27 deletions(-) diff --git a/resources/lib/itemtypes.py b/resources/lib/itemtypes.py index aa04ffcf..788372dd 100644 --- a/resources/lib/itemtypes.py +++ b/resources/lib/itemtypes.py @@ -460,38 +460,40 @@ class Movies(Items): plex_dbitem = plex_db.getItem_byId(itemid) try: - kodiid = plex_dbitem[0] - fileid = plex_dbitem[1] - mediatype = plex_dbitem[4] - log.info("Removing %sid: %s fileid: %s" - % (mediatype, kodiid, fileid)) + kodi_id = plex_dbitem[0] + file_id = plex_dbitem[1] + kodi_type = plex_dbitem[4] + log.info("Removing %sid: %s file_id: %s" + % (kodi_type, kodi_id, file_id)) except TypeError: return # Remove the plex reference plex_db.removeItem(itemid) # Remove artwork - artwork.deleteArtwork(kodiid, mediatype, kodicursor) + artwork.deleteArtwork(kodi_id, kodi_type, kodicursor) - if mediatype == "movie": + if kodi_type == v.KODI_TYPE_MOVIE: # Delete kodi movie and file - kodicursor.execute("DELETE FROM movie WHERE idMovie = ?", (kodiid,)) - kodicursor.execute("DELETE FROM files WHERE idFile = ?", (fileid,)) - - elif mediatype == "set": + kodicursor.execute("DELETE FROM movie WHERE idMovie = ?", + (kodi_id,)) + kodicursor.execute("DELETE FROM files WHERE idFile = ?", + (file_id,)) + if v.KODIVERSION >= 17: + plex_db.remove_uniqueid(kodi_id, kodi_type) + plex_db.remove_ratings(kodi_id, kodi_type) + elif kodi_type == v.KODI_TYPE_SET: # Delete kodi boxset - boxset_movies = plex_db.getItem_byParentId(kodiid, "movie") + boxset_movies = plex_db.getItem_byParentId(kodi_id, + v.KODI_TYPE_MOVIE) for movie in boxset_movies: plexid = movie[0] movieid = movie[1] self.kodi_db.removefromBoxset(movieid) # Update plex reference plex_db.updateParentId(plexid, None) - - kodicursor.execute("DELETE FROM sets WHERE idSet = ?", (kodiid,)) - - log.info("Deleted %s %s from kodi database" - % (mediatype, itemid)) + kodicursor.execute("DELETE FROM sets WHERE idSet = ?", (kodi_id,)) + log.info("Deleted %s %s from kodi database" % (kodi_type, itemid)) class TVShows(Items): @@ -1081,7 +1083,6 @@ class TVShows(Items): try: kodiid = plex_dbitem[0] fileid = plex_dbitem[1] - pathid = plex_dbitem[2] parentid = plex_dbitem[3] mediatype = plex_dbitem[4] log.info("Removing %s kodiid: %s fileid: %s" @@ -1094,7 +1095,6 @@ class TVShows(Items): # Remove the plex reference plex_db.removeItem(itemid) - ##### IF EPISODE ##### if mediatype == v.KODI_TYPE_EPISODE: @@ -1107,7 +1107,6 @@ class TVShows(Items): showid = season[1] except TypeError: return - season_episodes = plex_db.getItem_byParentId(parentid, v.KODI_TYPE_EPISODE) if not season_episodes: @@ -1139,14 +1138,14 @@ class TVShows(Items): ##### IF TVSHOW ##### - elif mediatype == "tvshow": + elif mediatype == v.KODI_TYPE_SHOW: # Remove episodes, seasons, tvshow seasons = plex_db.getItem_byParentId(kodiid, v.KODI_TYPE_SEASON) for season in seasons: seasonid = season[1] - season_episodes = plex_db.getItem_byParentId(seasonid, - v.KODI_TYPE_EPISODE) + season_episodes = plex_db.getItem_byParentId( + seasonid, v.KODI_TYPE_EPISODE) for episode in season_episodes: self.removeEpisode(episode[1], episode[2]) else: @@ -1185,11 +1184,14 @@ class TVShows(Items): log.debug("Deleted %s: %s from kodi database" % (mediatype, itemid)) - def removeShow(self, kodiid): + def removeShow(self, kodi_id): kodicursor = self.kodicursor - self.artwork.deleteArtwork(kodiid, "tvshow", kodicursor) - kodicursor.execute("DELETE FROM tvshow WHERE idShow = ?", (kodiid,)) - log.info("Removed tvshow: %s." % kodiid) + self.artwork.deleteArtwork(kodi_id, v.KODI_TYPE_SHOW, kodicursor) + kodicursor.execute("DELETE FROM tvshow WHERE idShow = ?", (kodi_id,)) + if v.KODIVERSION >= 17: + self.plex_db.remove_uniqueid(kodi_id, v.KODI_TYPE_SHOW) + self.plex_db.remove_ratings(kodi_id, v.KODI_TYPE_SHOW) + log.info("Removed tvshow: %s." % kodi_id) def removeSeason(self, kodiid): kodicursor = self.kodicursor diff --git a/resources/lib/kodidb_functions.py b/resources/lib/kodidb_functions.py index 125854a5..ac14853b 100644 --- a/resources/lib/kodidb_functions.py +++ b/resources/lib/kodidb_functions.py @@ -1454,6 +1454,13 @@ class Kodidb_Functions(): ''' self.cursor.execute(query, (args)) + def remove_uniqueid(self, kodi_id, kodi_type): + query = ''' + DELETE FROM uniqueid + WHERE media_id = ? AND media_type = ? + ''' + self.cursor.execute(query, (kodi_id, kodi_type)) + def create_entry_rating(self): self.cursor.execute("select coalesce(max(rating_id),0) from rating") return self.cursor.fetchone()[0] + 1 @@ -1496,6 +1503,13 @@ class Kodidb_Functions(): ''' self.cursor.execute(query, (args)) + def remove_ratings(self, kodi_id, kodi_type): + query = ''' + DELETE FROM rating + WHERE media_id = ? AND media_type = ? + ''' + self.cursor.execute(query, (kodi_id, kodi_type)) + def get_kodiid_from_filename(file): """