perform all database commits at once instead of 1 by 1

This commit is contained in:
Marcel van der Veldt 2015-05-02 22:46:12 +02:00
parent e637af1b78
commit 383fb37ca3
3 changed files with 19 additions and 25 deletions

View file

@ -83,7 +83,7 @@ class LibrarySync():
addon = xbmcaddon.Addon(id='plugin.video.emby') #force a new instance of the addon addon = xbmcaddon.Addon(id='plugin.video.emby') #force a new instance of the addon
addon.setSetting("SyncInstallRunDone", "true") addon.setSetting("SyncInstallRunDone", "true")
# Force refresh the library # Commit all DB changes at once and Force refresh the library
xbmc.executebuiltin("UpdateLibrary(video)") xbmc.executebuiltin("UpdateLibrary(video)")
# set prop to show we have run for the first time # set prop to show we have run for the first time
@ -92,6 +92,7 @@ class LibrarySync():
finally: finally:
WINDOW.setProperty("SyncDatabaseRunning", "false") WINDOW.setProperty("SyncDatabaseRunning", "false")
utils.logMsg("Sync DB", "syncDatabase Exiting", 0) utils.logMsg("Sync DB", "syncDatabase Exiting", 0)
cursor.close() cursor.close()
if(pDialog != None): if(pDialog != None):
@ -148,6 +149,9 @@ class LibrarySync():
if not kodiId in allEmbyMovieIds: if not kodiId in allEmbyMovieIds:
WINDOW.setProperty(kodiId,"deleted") WINDOW.setProperty(kodiId,"deleted")
WriteKodiDB().deleteItemFromKodiLibrary(kodiId, connection, cursor) WriteKodiDB().deleteItemFromKodiLibrary(kodiId, connection, cursor)
### commit all changes to database ###
connection.commit()
def MusicVideosFullSync(self,connection,cursor, pDialog): def MusicVideosFullSync(self,connection,cursor, pDialog):
@ -194,6 +198,9 @@ class LibrarySync():
if not kodiId in allEmbyMusicvideoIds: if not kodiId in allEmbyMusicvideoIds:
WINDOW.setProperty(kodiId,"deleted") WINDOW.setProperty(kodiId,"deleted")
WriteKodiDB().deleteItemFromKodiLibrary(kodiId, connection, cursor) WriteKodiDB().deleteItemFromKodiLibrary(kodiId, connection, cursor)
### commit all changes to database ###
connection.commit()
def TvShowsFullSync(self,connection,cursor,pDialog): def TvShowsFullSync(self,connection,cursor,pDialog):
@ -251,6 +258,9 @@ class LibrarySync():
if not kodiId in allEmbyTvShowIds: if not kodiId in allEmbyTvShowIds:
WINDOW.setProperty(kodiId,"deleted") WINDOW.setProperty(kodiId,"deleted")
WriteKodiDB().deleteItemFromKodiLibrary(kodiId, connection, cursor) WriteKodiDB().deleteItemFromKodiLibrary(kodiId, connection, cursor)
### commit all changes to database ###
connection.commit()
def EpisodesFullSync(self,connection,cursor,showId): def EpisodesFullSync(self,connection,cursor,showId):
@ -299,6 +309,7 @@ class LibrarySync():
if (not kodiId in allEmbyEpisodeIds): if (not kodiId in allEmbyEpisodeIds):
WINDOW.setProperty(kodiId,"deleted") WINDOW.setProperty(kodiId,"deleted")
WriteKodiDB().deleteItemFromKodiLibrary(kodiId, connection, cursor) WriteKodiDB().deleteItemFromKodiLibrary(kodiId, connection, cursor)
def IncrementalSync(self, itemList): def IncrementalSync(self, itemList):
#this will only perform sync for items received by the websocket #this will only perform sync for items received by the websocket
@ -355,6 +366,9 @@ class LibrarySync():
for item in allEmbyMusicvideos: for item in allEmbyMusicvideos:
if not item.get('IsFolder'): if not item.get('IsFolder'):
WriteKodiDB().addOrUpdateMusicVideoToKodiLibrary(item["Id"],connection, cursor) WriteKodiDB().addOrUpdateMusicVideoToKodiLibrary(item["Id"],connection, cursor)
### commit all changes to database ###
connection.commit()
finally: finally:
cursor.close() cursor.close()

View file

@ -180,12 +180,13 @@ class WebSocketThread(threading.Thread):
self.update_items(itemsToUpdate) self.update_items(itemsToUpdate)
def remove_items(self, itemsRemoved): def remove_items(self, itemsRemoved):
connection = utils.KodiSQL()
cursor = connection.cursor()
for item in itemsRemoved: for item in itemsRemoved:
connection = utils.KodiSQL()
cursor = connection.cursor()
self.logMsg("Message : Doing LibraryChanged : Items Removed : Calling deleteEpisodeFromKodiLibraryByMbId: " + item, 0) self.logMsg("Message : Doing LibraryChanged : Items Removed : Calling deleteEpisodeFromKodiLibraryByMbId: " + item, 0)
WriteKodiDB().deleteItemFromKodiLibrary(item, connection, cursor) WriteKodiDB().deleteItemFromKodiLibrary(item, connection, cursor)
cursor.close() connection.commit()
cursor.close()
def update_items(self, itemsToUpdate): def update_items(self, itemsToUpdate):
# doing adds and updates # doing adds and updates

View file

@ -199,9 +199,6 @@ class WriteKodiDB():
total = int(round(float(timeInfo.get("TotalTime"))))*60 total = int(round(float(timeInfo.get("TotalTime"))))*60
self.setKodiResumePoint(fileid, resume, total, cursor) self.setKodiResumePoint(fileid, resume, total, cursor)
#commit changes and return the id
connection.commit()
return movieid
def addOrUpdateMusicVideoToKodiLibrary( self, embyId ,connection, cursor): def addOrUpdateMusicVideoToKodiLibrary( self, embyId ,connection, cursor):
@ -335,9 +332,6 @@ class WriteKodiDB():
resume = int(round(float(timeInfo.get("ResumeTime"))))*60 resume = int(round(float(timeInfo.get("ResumeTime"))))*60
total = int(round(float(timeInfo.get("TotalTime"))))*60 total = int(round(float(timeInfo.get("TotalTime"))))*60
self.setKodiResumePoint(fileid, resume, total, cursor) self.setKodiResumePoint(fileid, resume, total, cursor)
#commit changes and return the id
connection.commit()
def addOrUpdateTvShowToKodiLibrary( self, embyId, connection, cursor, viewTag ): def addOrUpdateTvShowToKodiLibrary( self, embyId, connection, cursor, viewTag ):
@ -463,8 +457,6 @@ class WriteKodiDB():
#update season details #update season details
self.updateSeasons(MBitem["Id"], showid, connection, cursor) self.updateSeasons(MBitem["Id"], showid, connection, cursor)
#commit changes and return the id
connection.commit()
def addMusicVideoToKodiLibrary( self, MBitem, connection, cursor ): def addMusicVideoToKodiLibrary( self, MBitem, connection, cursor ):
@ -530,12 +522,6 @@ class WriteKodiDB():
pathsql="insert into musicvideo(idMVideo, idFile, c00, c04, c08, c23) values(?, ?, ?, ?, ?, ?)" pathsql="insert into musicvideo(idMVideo, idFile, c00, c04, c08, c23) values(?, ?, ?, ?, ?, ?)"
cursor.execute(pathsql, (musicvideoid, fileid, title, runtime, plot, MBitem["Id"])) cursor.execute(pathsql, (musicvideoid, fileid, title, runtime, plot, MBitem["Id"]))
try:
connection.commit()
utils.logMsg("Emby","Added musicvideo to Kodi Library",MBitem["Id"] + " - " + MBitem["Name"])
except:
utils.logMsg("Emby","Error adding musicvideo to Kodi Library",MBitem["Id"] + " - " + MBitem["Name"])
actionPerformed = False
def addOrUpdateEpisodeToKodiLibrary(self, embyId, showid, connection, cursor): def addOrUpdateEpisodeToKodiLibrary(self, embyId, showid, connection, cursor):
@ -675,9 +661,6 @@ class WriteKodiDB():
#update artwork #update artwork
self.addOrUpdateArt(API().getArtwork(MBitem, "Primary"), episodeid, "episode", "thumb", cursor) self.addOrUpdateArt(API().getArtwork(MBitem, "Primary"), episodeid, "episode", "thumb", cursor)
#commit changes
connection.commit()
def deleteItemFromKodiLibrary(self, id, connection, cursor ): def deleteItemFromKodiLibrary(self, id, connection, cursor ):
@ -701,8 +684,6 @@ class WriteKodiDB():
#delete the record in emby table #delete the record in emby table
cursor.execute("DELETE FROM emby WHERE emby_id = ?", (id,)) cursor.execute("DELETE FROM emby WHERE emby_id = ?", (id,))
connection.commit()
def updateSeasons(self,embyTvShowId, kodiTvShowId, connection, cursor): def updateSeasons(self,embyTvShowId, kodiTvShowId, connection, cursor):
@ -1058,8 +1039,6 @@ class WriteKodiDB():
result = cursor.fetchone() result = cursor.fetchone()
if result != None: if result != None:
setid = result[0] setid = result[0]
connection.commit()
return True return True