mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2024-12-25 10:16:11 +00:00
only do DB Connection if needed for each action
This commit is contained in:
parent
b55b4d0b96
commit
8bd44bd408
2 changed files with 71 additions and 63 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,3 +1,5 @@
|
||||||
*.pyo
|
*.pyo
|
||||||
machine_guid
|
machine_guid
|
||||||
/resources/media/Thumbs.db
|
/resources/media/Thumbs.db
|
||||||
|
|
||||||
|
.idea/
|
||||||
|
|
|
@ -24,7 +24,7 @@ import videonodes
|
||||||
from objects import Movies, MusicVideos, TVShows, Music
|
from objects import Movies, MusicVideos, TVShows, Music
|
||||||
from utils import window, settings, language as lang, should_stop
|
from utils import window, settings, language as lang, should_stop
|
||||||
from ga_client import GoogleAnalytics
|
from ga_client import GoogleAnalytics
|
||||||
from database import DatabaseConn
|
from database import DatabaseConn, db_reset
|
||||||
from contextlib import closing
|
from contextlib import closing
|
||||||
|
|
||||||
##################################################################################################
|
##################################################################################################
|
||||||
|
@ -715,85 +715,91 @@ class LibrarySync(threading.Thread):
|
||||||
|
|
||||||
def incrementalSync(self):
|
def incrementalSync(self):
|
||||||
|
|
||||||
with DatabaseConn('emby') as conn_emby, DatabaseConn('video') as conn_video:
|
update_embydb = False
|
||||||
with closing(conn_emby.cursor()) as cursor_emby, closing(conn_video.cursor()) as cursor_video:
|
pDialog = None
|
||||||
|
|
||||||
emby_db = embydb.Embydb_Functions(cursor_emby)
|
# do a view update if needed
|
||||||
pDialog = None
|
if self.refresh_views:
|
||||||
update_embydb = False
|
with DatabaseConn('emby') as conn_emby, DatabaseConn('video') as conn_video:
|
||||||
|
with closing(conn_emby.cursor()) as cursor_emby, closing(conn_video.cursor()) as cursor_video:
|
||||||
if self.refresh_views:
|
|
||||||
# Received userconfig update
|
# Received userconfig update
|
||||||
self.refresh_views = False
|
self.refresh_views = False
|
||||||
self.maintainViews(cursor_emby, cursor_video)
|
self.maintainViews(cursor_emby, cursor_video)
|
||||||
self.forceLibraryUpdate = True
|
self.forceLibraryUpdate = True
|
||||||
update_embydb = True
|
update_embydb = True
|
||||||
|
|
||||||
incSyncIndicator = int(settings('incSyncIndicator') or 10)
|
# do a lib update if any items in list
|
||||||
totalUpdates = len(self.addedItems) + len(self.updateItems) + len(self.userdataItems) + len(self.removeItems)
|
totalUpdates = len(self.addedItems) + len(self.updateItems) + len(self.userdataItems) + len(self.removeItems)
|
||||||
|
if totalUpdates > 0:
|
||||||
|
with DatabaseConn('emby') as conn_emby, DatabaseConn('video') as conn_video:
|
||||||
|
with closing(conn_emby.cursor()) as cursor_emby, closing(conn_video.cursor()) as cursor_video:
|
||||||
|
|
||||||
if incSyncIndicator != -1 and totalUpdates > incSyncIndicator:
|
emby_db = embydb.Embydb_Functions(cursor_emby)
|
||||||
# Only present dialog if we are going to process items
|
|
||||||
pDialog = self.progressDialog('Incremental sync')
|
|
||||||
log.info("incSyncIndicator=" + str(incSyncIndicator) + " totalUpdates=" + str(totalUpdates))
|
|
||||||
|
|
||||||
process = {
|
incSyncIndicator = int(settings('incSyncIndicator') or 10)
|
||||||
|
if incSyncIndicator != -1 and totalUpdates > incSyncIndicator:
|
||||||
|
# Only present dialog if we are going to process items
|
||||||
|
pDialog = self.progressDialog('Incremental sync')
|
||||||
|
log.info("incSyncIndicator=" + str(incSyncIndicator) + " totalUpdates=" + str(totalUpdates))
|
||||||
|
|
||||||
'added': self.addedItems,
|
process = {
|
||||||
'update': self.updateItems,
|
|
||||||
'userdata': self.userdataItems,
|
|
||||||
'remove': self.removeItems
|
|
||||||
}
|
|
||||||
for process_type in ['added', 'update', 'userdata', 'remove']:
|
|
||||||
|
|
||||||
if process[process_type] and window('emby_kodiScan') != "true":
|
'added': self.addedItems,
|
||||||
|
'update': self.updateItems,
|
||||||
|
'userdata': self.userdataItems,
|
||||||
|
'remove': self.removeItems
|
||||||
|
}
|
||||||
|
for process_type in ['added', 'update', 'userdata', 'remove']:
|
||||||
|
|
||||||
listItems = list(process[process_type])
|
if process[process_type] and window('emby_kodiScan') != "true":
|
||||||
del process[process_type][:] # Reset class list
|
|
||||||
|
|
||||||
items_process = itemtypes.Items(cursor_emby, cursor_video)
|
listItems = list(process[process_type])
|
||||||
update = False
|
del process[process_type][:] # Reset class list
|
||||||
|
|
||||||
# Prepare items according to process process_type
|
items_process = itemtypes.Items(cursor_emby, cursor_video)
|
||||||
if process_type == "added":
|
update = False
|
||||||
items = self.emby.sortby_mediatype(listItems)
|
|
||||||
|
|
||||||
elif process_type in ("userdata", "remove"):
|
# Prepare items according to process process_type
|
||||||
items = emby_db.sortby_mediaType(listItems, unsorted=False)
|
if process_type == "added":
|
||||||
|
items = self.emby.sortby_mediatype(listItems)
|
||||||
|
|
||||||
else:
|
elif process_type in ("userdata", "remove"):
|
||||||
items = emby_db.sortby_mediaType(listItems)
|
items = emby_db.sortby_mediaType(listItems, unsorted=False)
|
||||||
if items.get('Unsorted'):
|
|
||||||
sorted_items = self.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, process_type, pDialog)
|
else:
|
||||||
if doupdate:
|
items = emby_db.sortby_mediaType(listItems)
|
||||||
embyupdate, kodiupdate_video = doupdate
|
if items.get('Unsorted'):
|
||||||
if embyupdate:
|
sorted_items = self.emby.sortby_mediatype(items['Unsorted'])
|
||||||
update_embydb = True
|
doupdate = items_process.itemsbyId(sorted_items, "added", pDialog)
|
||||||
if kodiupdate_video:
|
if doupdate:
|
||||||
self.forceLibraryUpdate = True
|
embyupdate, kodiupdate_video = doupdate
|
||||||
|
if embyupdate:
|
||||||
|
update_embydb = True
|
||||||
|
if kodiupdate_video:
|
||||||
|
self.forceLibraryUpdate = True
|
||||||
|
del items['Unsorted']
|
||||||
|
|
||||||
if update_embydb:
|
doupdate = items_process.itemsbyId(items, process_type, pDialog)
|
||||||
update_embydb = False
|
if doupdate:
|
||||||
log.info("Updating emby database.")
|
embyupdate, kodiupdate_video = doupdate
|
||||||
self.saveLastSync()
|
if embyupdate:
|
||||||
|
update_embydb = True
|
||||||
|
if kodiupdate_video:
|
||||||
|
self.forceLibraryUpdate = True
|
||||||
|
|
||||||
if self.forceLibraryUpdate:
|
# if stuff happened then do some stuff
|
||||||
# Force update the Kodi library
|
if update_embydb:
|
||||||
self.forceLibraryUpdate = False
|
update_embydb = False
|
||||||
|
log.info("Updating emby database.")
|
||||||
|
self.saveLastSync()
|
||||||
|
|
||||||
log.info("Updating video library.")
|
if self.forceLibraryUpdate:
|
||||||
window('emby_kodiScan', value="true")
|
# Force update the Kodi library
|
||||||
xbmc.executebuiltin('UpdateLibrary(video)')
|
self.forceLibraryUpdate = False
|
||||||
|
|
||||||
|
log.info("Updating video library.")
|
||||||
|
window('emby_kodiScan', value="true")
|
||||||
|
xbmc.executebuiltin('UpdateLibrary(video)')
|
||||||
|
|
||||||
if pDialog:
|
if pDialog:
|
||||||
pDialog.close()
|
pDialog.close()
|
||||||
|
@ -904,7 +910,7 @@ class LibrarySync(threading.Thread):
|
||||||
log.warn("Database version is out of date! USER IGNORED!")
|
log.warn("Database version is out of date! USER IGNORED!")
|
||||||
dialog.ok(lang(29999), lang(33023))
|
dialog.ok(lang(29999), lang(33023))
|
||||||
else:
|
else:
|
||||||
database.db_reset()
|
db_reset()
|
||||||
|
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue