Cleaning up librarysync
This commit is contained in:
parent
413e48e19c
commit
5334a38754
1 changed files with 6 additions and 128 deletions
|
@ -212,14 +212,13 @@ class LibrarySync(threading.Thread):
|
||||||
removeItems = []
|
removeItems = []
|
||||||
forceLibraryUpdate = False
|
forceLibraryUpdate = False
|
||||||
refresh_views = False
|
refresh_views = False
|
||||||
|
# How long should we look into the past for fast syncing items (in s)
|
||||||
|
syncPast = 30
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
||||||
self.__dict__ = self._shared_state
|
self.__dict__ = self._shared_state
|
||||||
|
|
||||||
# How long should we look into the past for fast syncing items (in s)
|
|
||||||
self.syncPast = 30
|
|
||||||
|
|
||||||
self.clientInfo = clientinfo.ClientInfo()
|
self.clientInfo = clientinfo.ClientInfo()
|
||||||
self.doUtils = downloadutils.DownloadUtils()
|
self.doUtils = downloadutils.DownloadUtils()
|
||||||
self.user = userclient.UserClient()
|
self.user = userclient.UserClient()
|
||||||
|
@ -230,22 +229,12 @@ class LibrarySync(threading.Thread):
|
||||||
self.installSyncDone = True if \
|
self.installSyncDone = True if \
|
||||||
utils.settings('SyncInstallRunDone') == 'true' else False
|
utils.settings('SyncInstallRunDone') == 'true' else False
|
||||||
|
|
||||||
|
self.showDbSync = True if \
|
||||||
|
utils.settings('dbSyncIndicator') == 'true' else False
|
||||||
|
|
||||||
threading.Thread.__init__(self)
|
threading.Thread.__init__(self)
|
||||||
|
|
||||||
def progressDialog(self, title, forced=False):
|
|
||||||
|
|
||||||
dialog = None
|
|
||||||
|
|
||||||
if utils.settings('dbSyncIndicator') == "true" or forced:
|
|
||||||
dialog = xbmcgui.DialogProgressBG()
|
|
||||||
dialog.create(self.addonName, title)
|
|
||||||
self.logMsg("Show progress dialog: %s" % title, 2)
|
|
||||||
|
|
||||||
return dialog
|
|
||||||
|
|
||||||
def startSync(self):
|
def startSync(self):
|
||||||
# Only run fastSync AFTER startup when SyncInstallRunDone has already
|
|
||||||
# been set
|
|
||||||
utils.window('emby_dbScan', value="true")
|
utils.window('emby_dbScan', value="true")
|
||||||
completed = self.fastSync()
|
completed = self.fastSync()
|
||||||
if not completed:
|
if not completed:
|
||||||
|
@ -1013,117 +1002,6 @@ class LibrarySync(threading.Thread):
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
# Reserved for websocket_client.py and fast start
|
|
||||||
def triage_items(self, process, items):
|
|
||||||
|
|
||||||
processlist = {
|
|
||||||
|
|
||||||
'added': self.addedItems,
|
|
||||||
'update': self.updateItems,
|
|
||||||
'userdata': self.userdataItems,
|
|
||||||
'remove': self.removeItems
|
|
||||||
}
|
|
||||||
if items:
|
|
||||||
if process == "userdata":
|
|
||||||
itemids = []
|
|
||||||
for item in items:
|
|
||||||
itemids.append(item['ItemId'])
|
|
||||||
items = itemids
|
|
||||||
|
|
||||||
self.logMsg("Queue %s: %s" % (process, items), 1)
|
|
||||||
processlist[process].extend(items)
|
|
||||||
|
|
||||||
def incrementalSync(self):
|
|
||||||
|
|
||||||
embyconn = utils.kodiSQL('emby')
|
|
||||||
embycursor = embyconn.cursor()
|
|
||||||
kodiconn = utils.kodiSQL('video')
|
|
||||||
kodicursor = kodiconn.cursor()
|
|
||||||
emby = self.emby
|
|
||||||
emby_db = embydb.Embydb_Functions(embycursor)
|
|
||||||
pDialog = None
|
|
||||||
update_embydb = False
|
|
||||||
|
|
||||||
if self.refresh_views:
|
|
||||||
# Received userconfig update
|
|
||||||
self.refresh_views = False
|
|
||||||
self.maintainViews(embycursor, kodicursor)
|
|
||||||
self.forceLibraryUpdate = True
|
|
||||||
update_embydb = True
|
|
||||||
|
|
||||||
if self.addedItems or self.updateItems or self.userdataItems or self.removeItems:
|
|
||||||
# Only present dialog if we are going to process items
|
|
||||||
pDialog = self.progressDialog('Incremental sync')
|
|
||||||
|
|
||||||
|
|
||||||
process = {
|
|
||||||
|
|
||||||
'added': self.addedItems,
|
|
||||||
'update': self.updateItems,
|
|
||||||
'userdata': self.userdataItems,
|
|
||||||
'remove': self.removeItems
|
|
||||||
}
|
|
||||||
types = ['added', 'update', 'userdata', 'remove']
|
|
||||||
for type in types:
|
|
||||||
|
|
||||||
if process[type] and utils.window('emby_kodiScan') != "true":
|
|
||||||
|
|
||||||
listItems = list(process[type])
|
|
||||||
del process[type][:] # Reset class list
|
|
||||||
|
|
||||||
items_process = itemtypes.Items(embycursor, kodicursor)
|
|
||||||
update = False
|
|
||||||
|
|
||||||
# Prepare items according to process type
|
|
||||||
if type == "added":
|
|
||||||
items = emby.sortby_mediatype(listItems)
|
|
||||||
|
|
||||||
elif type in ("userdata", "remove"):
|
|
||||||
items = emby_db.sortby_mediaType(listItems, unsorted=False)
|
|
||||||
|
|
||||||
else:
|
|
||||||
items = emby_db.sortby_mediaType(listItems)
|
|
||||||
if items.get('Unsorted'):
|
|
||||||
sorted_items = emby.sortby_mediatype(items['Unsorted'])
|
|
||||||
doupdate = items_process.itemsbyId(sorted_items, "added", pDialog)
|
|
||||||
if doupdate:
|
|
||||||
embyupdate, kodiupdate_video = doupdate
|
|
||||||
if embyupdate:
|
|
||||||
update_embydb = True
|
|
||||||
if kodiupdate_video:
|
|
||||||
self.forceLibraryUpdate = True
|
|
||||||
del items['Unsorted']
|
|
||||||
|
|
||||||
doupdate = items_process.itemsbyId(items, type, pDialog)
|
|
||||||
if doupdate:
|
|
||||||
embyupdate, kodiupdate_video = doupdate
|
|
||||||
if embyupdate:
|
|
||||||
update_embydb = True
|
|
||||||
if kodiupdate_video:
|
|
||||||
self.forceLibraryUpdate = True
|
|
||||||
|
|
||||||
if update_embydb:
|
|
||||||
update_embydb = False
|
|
||||||
self.logMsg("Updating emby database.", 1)
|
|
||||||
embyconn.commit()
|
|
||||||
self.saveLastSync()
|
|
||||||
|
|
||||||
if self.forceLibraryUpdate:
|
|
||||||
# Force update the Kodi library
|
|
||||||
self.forceLibraryUpdate = False
|
|
||||||
self.dbCommit(kodiconn)
|
|
||||||
|
|
||||||
self.logMsg("Updating video library.", 1)
|
|
||||||
utils.window('emby_kodiScan', value="true")
|
|
||||||
xbmc.executebuiltin('UpdateLibrary(video)')
|
|
||||||
|
|
||||||
if pDialog:
|
|
||||||
pDialog.close()
|
|
||||||
|
|
||||||
kodicursor.close()
|
|
||||||
embycursor.close()
|
|
||||||
|
|
||||||
|
|
||||||
def compareDBVersion(self, current, minimum):
|
def compareDBVersion(self, current, minimum):
|
||||||
# It returns True is database is up to date. False otherwise.
|
# It returns True is database is up to date. False otherwise.
|
||||||
self.logMsg("current: %s minimum: %s" % (current, minimum), 1)
|
self.logMsg("current: %s minimum: %s" % (current, minimum), 1)
|
||||||
|
|
Loading…
Reference in a new issue