Optimize notifications for library syncs
This commit is contained in:
parent
6d205b5804
commit
3ccc588945
3 changed files with 46 additions and 33 deletions
|
@ -405,5 +405,6 @@
|
||||||
<string id="39404">Startup syncing process failed repeatedly. Try restarting Kodi. Stopping Sync for now.</string>
|
<string id="39404">Startup syncing process failed repeatedly. Try restarting Kodi. Stopping Sync for now.</string>
|
||||||
<string id="39405">Plex playlists/nodes refreshed</string>
|
<string id="39405">Plex playlists/nodes refreshed</string>
|
||||||
<string id="39406">Plex playlists/nodes refresh failed</string>
|
<string id="39406">Plex playlists/nodes refresh failed</string>
|
||||||
|
<string id="39407">Full library sync finished</string>
|
||||||
|
|
||||||
</strings>
|
</strings>
|
||||||
|
|
|
@ -337,5 +337,6 @@
|
||||||
<string id="39404">Der Startup Synchronisations-Prozess der Plex Bibliotheken ist mehrmals fehlgeschlagen. Bitte Kodi neu starten. Synch wird jetzt gestoppt.</string>
|
<string id="39404">Der Startup Synchronisations-Prozess der Plex Bibliotheken ist mehrmals fehlgeschlagen. Bitte Kodi neu starten. Synch wird jetzt gestoppt.</string>
|
||||||
<string id="39405">Plex Playlisten/Nodes aktualisiert</string>
|
<string id="39405">Plex Playlisten/Nodes aktualisiert</string>
|
||||||
<string id="39406">Plex Playlisten/Nodes Aktualisierung fehlgeschlagen</string>
|
<string id="39406">Plex Playlisten/Nodes Aktualisierung fehlgeschlagen</string>
|
||||||
|
<string id="39407">Plex Bibliotheken aktualisiert</string>
|
||||||
|
|
||||||
</strings>
|
</strings>
|
||||||
|
|
|
@ -70,7 +70,7 @@ class ThreadedGetMetadata(Thread):
|
||||||
# Did not receive a valid XML - skip that item for now
|
# Did not receive a valid XML - skip that item for now
|
||||||
self.logMsg("Could not get metadata for %s. "
|
self.logMsg("Could not get metadata for %s. "
|
||||||
"Skipping that item for now"
|
"Skipping that item for now"
|
||||||
% updateItem['itemId'], -1)
|
% updateItem['itemId'], 0)
|
||||||
# Increase BOTH counters - since metadata won't be processed
|
# Increase BOTH counters - since metadata won't be processed
|
||||||
with lock:
|
with lock:
|
||||||
getMetadataCount += 1
|
getMetadataCount += 1
|
||||||
|
@ -223,8 +223,8 @@ class LibrarySync(Thread):
|
||||||
self.user = userclient.UserClient()
|
self.user = userclient.UserClient()
|
||||||
self.emby = embyserver.Read_EmbyServer()
|
self.emby = embyserver.Read_EmbyServer()
|
||||||
self.vnodes = videonodes.VideoNodes()
|
self.vnodes = videonodes.VideoNodes()
|
||||||
self.syncThreadNumber = int(utils.settings('syncThreadNumber'))
|
|
||||||
|
|
||||||
|
self.syncThreadNumber = int(utils.settings('syncThreadNumber'))
|
||||||
self.installSyncDone = True if \
|
self.installSyncDone = True if \
|
||||||
utils.settings('SyncInstallRunDone') == 'true' else False
|
utils.settings('SyncInstallRunDone') == 'true' else False
|
||||||
self.showDbSync = True if \
|
self.showDbSync = True if \
|
||||||
|
@ -236,18 +236,30 @@ class LibrarySync(Thread):
|
||||||
|
|
||||||
Thread.__init__(self)
|
Thread.__init__(self)
|
||||||
|
|
||||||
def showKodiNote(self, message, forced=False):
|
def showKodiNote(self, message, forced=False, icon="plex"):
|
||||||
"""
|
"""
|
||||||
Shows a Kodi popup, if user selected to do so. Pass message in unicode
|
Shows a Kodi popup, if user selected to do so. Pass message in unicode
|
||||||
or string
|
or string
|
||||||
|
|
||||||
|
icon: "plex": shows Plex icon
|
||||||
|
"error": shows Kodi error icon
|
||||||
"""
|
"""
|
||||||
if not (self.showDbSync or forced):
|
if not (self.showDbSync or forced):
|
||||||
return
|
return
|
||||||
xbmcgui.Dialog().notification(
|
if icon == "plex":
|
||||||
heading=self.addonName,
|
xbmcgui.Dialog().notification(
|
||||||
message=message,
|
heading=self.addonName,
|
||||||
icon="special://home/addons/plugin.video.plexkodiconnect/icon.png",
|
message=message,
|
||||||
sound=False)
|
icon="special://home/addons/plugin.video.plexkodiconnect/icon.png",
|
||||||
|
time=5000,
|
||||||
|
sound=False)
|
||||||
|
elif icon == "error":
|
||||||
|
xbmcgui.Dialog().notification(
|
||||||
|
heading=self.addonName,
|
||||||
|
message=message,
|
||||||
|
icon=xbmcgui.NOTIFICATION_ERROR,
|
||||||
|
time=7000,
|
||||||
|
sound=True)
|
||||||
|
|
||||||
def fastSync(self):
|
def fastSync(self):
|
||||||
"""
|
"""
|
||||||
|
@ -307,7 +319,8 @@ class LibrarySync(Thread):
|
||||||
elif self.updatelist[0]['itemType'] == 'Music':
|
elif self.updatelist[0]['itemType'] == 'Music':
|
||||||
self.updateKodiMusicLib = True
|
self.updateKodiMusicLib = True
|
||||||
self.GetAndProcessXMLs(
|
self.GetAndProcessXMLs(
|
||||||
PlexFunctions.GetItemClassFromType(plexType))
|
PlexFunctions.GetItemClassFromType(plexType),
|
||||||
|
showProgress=False)
|
||||||
self.updatelist = []
|
self.updatelist = []
|
||||||
|
|
||||||
# Update userdata
|
# Update userdata
|
||||||
|
@ -698,7 +711,7 @@ class LibrarySync(Thread):
|
||||||
'viewId': viewId,
|
'viewId': viewId,
|
||||||
'title': title})
|
'title': title})
|
||||||
|
|
||||||
def GetAndProcessXMLs(self, itemType):
|
def GetAndProcessXMLs(self, itemType, showProgress=True):
|
||||||
"""
|
"""
|
||||||
Downloads all XMLs for itemType (e.g. Movies, TV-Shows). Processes them
|
Downloads all XMLs for itemType (e.g. Movies, TV-Shows). Processes them
|
||||||
by then calling itemtypes.<itemType>()
|
by then calling itemtypes.<itemType>()
|
||||||
|
@ -706,6 +719,7 @@ class LibrarySync(Thread):
|
||||||
Input:
|
Input:
|
||||||
itemType: 'Movies', 'TVShows', ...
|
itemType: 'Movies', 'TVShows', ...
|
||||||
self.updatelist
|
self.updatelist
|
||||||
|
showProgress If False, NEVER shows sync progress
|
||||||
"""
|
"""
|
||||||
# Some logging, just in case.
|
# Some logging, just in case.
|
||||||
self.logMsg("self.updatelist: %s" % self.updatelist, 2)
|
self.logMsg("self.updatelist: %s" % self.updatelist, 2)
|
||||||
|
@ -750,17 +764,18 @@ class LibrarySync(Thread):
|
||||||
threads.append(thread)
|
threads.append(thread)
|
||||||
self.logMsg("Processing thread spawned", 1)
|
self.logMsg("Processing thread spawned", 1)
|
||||||
# Start one thread to show sync progress
|
# Start one thread to show sync progress
|
||||||
if self.showDbSync:
|
if showProgress:
|
||||||
dialog = xbmcgui.DialogProgressBG()
|
if self.showDbSync:
|
||||||
thread = ThreadedShowSyncInfo(
|
dialog = xbmcgui.DialogProgressBG()
|
||||||
dialog,
|
thread = ThreadedShowSyncInfo(
|
||||||
[getMetadataLock, processMetadataLock],
|
dialog,
|
||||||
itemNumber,
|
[getMetadataLock, processMetadataLock],
|
||||||
itemType)
|
itemNumber,
|
||||||
thread.setDaemon(True)
|
itemType)
|
||||||
thread.start()
|
thread.setDaemon(True)
|
||||||
threads.append(thread)
|
thread.start()
|
||||||
self.logMsg("Kodi Infobox thread spawned", 1)
|
threads.append(thread)
|
||||||
|
self.logMsg("Kodi Infobox thread spawned", 1)
|
||||||
|
|
||||||
# Wait until finished
|
# Wait until finished
|
||||||
getMetadataQueue.join()
|
getMetadataQueue.join()
|
||||||
|
@ -1229,6 +1244,8 @@ class LibrarySync(Thread):
|
||||||
fullSync(manualrun=True)
|
fullSync(manualrun=True)
|
||||||
window('emby_dbScan', clear=True)
|
window('emby_dbScan', clear=True)
|
||||||
count = 0
|
count = 0
|
||||||
|
# Full library sync finished
|
||||||
|
self.showKodiNote(string(39407), forced=True)
|
||||||
# Reset views was requested from somewhere else
|
# Reset views was requested from somewhere else
|
||||||
elif window('plex_runLibScan') == "views":
|
elif window('plex_runLibScan') == "views":
|
||||||
log('Refresh playlist and nodes requested, starting', 0)
|
log('Refresh playlist and nodes requested, starting', 0)
|
||||||
|
@ -1244,22 +1261,14 @@ class LibrarySync(Thread):
|
||||||
# Ran successfully
|
# Ran successfully
|
||||||
log("Refresh playlists/nodes completed", 0)
|
log("Refresh playlists/nodes completed", 0)
|
||||||
# "Plex playlists/nodes refreshed"
|
# "Plex playlists/nodes refreshed"
|
||||||
dialog.notification(
|
self.showKodiNote(string(39405), forced=True)
|
||||||
heading=self.addonName,
|
|
||||||
message=string(39405),
|
|
||||||
icon="special://home/addons/plugin.video.plexkodiconnect/icon.png",
|
|
||||||
time=3000,
|
|
||||||
sound=True)
|
|
||||||
else:
|
else:
|
||||||
# Failed
|
# Failed
|
||||||
log("Refresh playlists/nodes failed", -1)
|
log("Refresh playlists/nodes failed", -1)
|
||||||
# "Plex playlists/nodes refresh failed"
|
# "Plex playlists/nodes refresh failed"
|
||||||
dialog.notification(
|
self.showKodiNote(string(39406),
|
||||||
heading=self.addonName,
|
forced=True,
|
||||||
message=string(39406),
|
icon="error")
|
||||||
icon=xbmcgui.NOTIFICATION_ERROR,
|
|
||||||
time=3000,
|
|
||||||
sound=True)
|
|
||||||
window('emby_dbScan', clear=True)
|
window('emby_dbScan', clear=True)
|
||||||
elif enableBackgroundSync:
|
elif enableBackgroundSync:
|
||||||
# Run full lib scan approx every 30min
|
# Run full lib scan approx every 30min
|
||||||
|
@ -1269,6 +1278,8 @@ class LibrarySync(Thread):
|
||||||
log('Running background full lib scan', 0)
|
log('Running background full lib scan', 0)
|
||||||
fullSync(manualrun=True)
|
fullSync(manualrun=True)
|
||||||
window('emby_dbScan', clear=True)
|
window('emby_dbScan', clear=True)
|
||||||
|
# Full library sync finished
|
||||||
|
self.showKodiNote(string(39407), forced=False)
|
||||||
# Run fast sync otherwise (ever second or so)
|
# Run fast sync otherwise (ever second or so)
|
||||||
else:
|
else:
|
||||||
window('emby_dbScan', value="true")
|
window('emby_dbScan', value="true")
|
||||||
|
|
Loading…
Reference in a new issue