remove all movies from box set before updating to cacth movies that have been removed

only sync box sets that have changed for inc sync
This commit is contained in:
Shaun 2015-09-01 23:01:52 +10:00
parent 63bba9d450
commit fc0442e0ed
2 changed files with 46 additions and 28 deletions

View file

@ -200,7 +200,7 @@ class LibrarySync(threading.Thread):
self.logMsg("Sync Database, Incremental Sync Setting Last Run Time Saved: %s" % lastSync, 1) self.logMsg("Sync Database, Incremental Sync Setting Last Run Time Saved: %s" % lastSync, 1)
utils.settings("LastIncrenetalSync", lastSync) utils.settings("LastIncrenetalSync", lastSync)
def MoviesFullSync(self,connection,cursor, pDialog): def MoviesFullSync(self,connection, cursor, pDialog):
views = ReadEmbyDB().getCollections("movies") views = ReadEmbyDB().getCollections("movies")
@ -249,26 +249,28 @@ class LibrarySync(threading.Thread):
#### PROCESS BOX SETS ##### #### PROCESS BOX SETS #####
if(pDialog != None): if(pDialog != None):
utils.logMsg("Sync Movies", "BoxSet Sync Started", 1) utils.logMsg("Sync Movies", "BoxSet Sync Started", 1)
boxsets = ReadEmbyDB().getBoxSets()
boxsets = ReadEmbyDB().getBoxSets()
total = len(boxsets) + 1 total = len(boxsets) + 1
count = 1 count = 1
for boxset in boxsets: for boxset in boxsets:
progressTitle = "Processing BoxSets"+ " (" + str(count) + " of " + str(total) + ")" progressTitle = "Processing BoxSets"+ " (" + str(count) + " of " + str(total) + ")"
percentage = int(((float(count) / float(total)) * 100)) percentage = int(((float(count) / float(total)) * 100))
pDialog.update(percentage, "Emby for Kodi - Running Sync", progressTitle) pDialog.update(percentage, "Emby for Kodi - Running Sync", progressTitle)
count += 1 count += 1
if(self.ShouldStop()):
return False
boxsetMovies = ReadEmbyDB().getMoviesInBoxSet(boxset["Id"])
WriteKodiVideoDB().addBoxsetToKodiLibrary(boxset, connection, cursor)
WriteKodiVideoDB().removeMoviesFromBoxset(boxset, connection, cursor)
for boxsetMovie in boxsetMovies:
if(self.ShouldStop()): if(self.ShouldStop()):
return False return False
boxsetMovies = ReadEmbyDB().getMoviesInBoxSet(boxset["Id"]) WriteKodiVideoDB().updateBoxsetToKodiLibrary(boxsetMovie,boxset, connection, cursor)
WriteKodiVideoDB().addBoxsetToKodiLibrary(boxset,connection, cursor)
for boxsetMovie in boxsetMovies: utils.logMsg("Sync Movies", "BoxSet Sync Finished", 1)
if(self.ShouldStop()):
return False
WriteKodiVideoDB().updateBoxsetToKodiLibrary(boxsetMovie,boxset, connection, cursor)
utils.logMsg("Sync Movies", "BoxSet Sync Finished", 1)
#### PROCESS DELETES ##### #### PROCESS DELETES #####
allEmbyMovieIds = set(allEmbyMovieIds) allEmbyMovieIds = set(allEmbyMovieIds)
@ -628,16 +630,21 @@ class LibrarySync(threading.Thread):
count = 1 count = 1
total = len(boxsets) + 1 total = len(boxsets) + 1
for boxset in boxsets: for boxset in boxsets:
boxsetMovies = ReadEmbyDB().getMoviesInBoxSet(boxset["Id"]) if(boxset["Id"] in itemList):
WriteKodiVideoDB().addBoxsetToKodiLibrary(boxset,connection, cursor) utils.logMsg("IncrementalSync", "Updating box Set : " + str(boxset["Name"]), 1)
if(pDialog != None): boxsetMovies = ReadEmbyDB().getMoviesInBoxSet(boxset["Id"])
progressTitle = "Incremental Sync "+ " (" + str(count) + " of " + str(total) + ")" WriteKodiVideoDB().addBoxsetToKodiLibrary(boxset, connection, cursor)
percentage = int(((float(count) / float(total)) * 100)) if(pDialog != None):
pDialog.update(percentage, "Emby for Kodi - Incremental Sync BoxSet", progressTitle) progressTitle = "Incremental Sync "+ " (" + str(count) + " of " + str(total) + ")"
count = count + 1 percentage = int(((float(count) / float(total)) * 100))
for boxsetMovie in boxsetMovies: pDialog.update(percentage, "Emby for Kodi - Incremental Sync BoxSet", progressTitle)
WriteKodiVideoDB().updateBoxsetToKodiLibrary(boxsetMovie,boxset, connection, cursor) count = count + 1
WriteKodiVideoDB().removeMoviesFromBoxset(boxset, connection, cursor)
for boxsetMovie in boxsetMovies:
WriteKodiVideoDB().updateBoxsetToKodiLibrary(boxsetMovie, boxset, connection, cursor)
else:
utils.logMsg("IncrementalSync", "Skipping Box Set : " + boxset["Name"], 1)
#### PROCESS TV SHOWS #### #### PROCESS TV SHOWS ####
views = ReadEmbyDB().getCollections("tvshows") views = ReadEmbyDB().getCollections("tvshows")
for view in views: for view in views:

View file

@ -1233,6 +1233,17 @@ class WriteKodiVideoDB():
query = "UPDATE emby SET checksum = ? WHERE emby_id = ?" query = "UPDATE emby SET checksum = ? WHERE emby_id = ?"
cursor.execute(query, (API().getChecksum(boxsetmovie), boxsetmovieid)) cursor.execute(query, (API().getChecksum(boxsetmovie), boxsetmovieid))
def removeMoviesFromBoxset(self, boxset, connection, cursor):
strSet = boxset['Name']
try:
cursor.execute("SELECT idSet FROM sets WHERE strSet = ? COLLATE NOCASE", (strSet,))
setid = cursor.fetchone()[0]
except: pass
else:
query = "UPDATE movie SET idSet = null WHERE idSet = ?"
cursor.execute(query, (setid,))
def updateUserdata(self, userdata, connection, cursor): def updateUserdata(self, userdata, connection, cursor):
# This updates: Favorite, LastPlayedDate, Playcount, PlaybackPositionTicks # This updates: Favorite, LastPlayedDate, Playcount, PlaybackPositionTicks
embyId = userdata['ItemId'] embyId = userdata['ItemId']