Shutdown playlist sync if necessary

- Partially fixes #578
This commit is contained in:
croneter 2018-12-23 11:12:47 +01:00
parent 6950a3d979
commit db6a7ba9b4

View file

@ -42,6 +42,10 @@ IGNORE_PLEX_PLAYLIST_CHANGE = list()
############################################################################### ###############################################################################
def isCanceled():
return app.APP.stop_pkc or app.SYNC.stop_sync or app.APP.suspend_threads
def kodi_playlist_monitor(): def kodi_playlist_monitor():
""" """
Monitor for the Kodi playlist folder special://profile/playlist Monitor for the Kodi playlist folder special://profile/playlist
@ -169,6 +173,8 @@ def _full_sync():
# before. If yes, make sure that hashes are identical. If not, sync it. # before. If yes, make sure that hashes are identical. If not, sync it.
old_plex_ids = db.plex_playlist_ids() old_plex_ids = db.plex_playlist_ids()
for xml_playlist in xml: for xml_playlist in xml:
if isCanceled():
return False
api = API(xml_playlist) api = API(xml_playlist)
try: try:
old_plex_ids.remove(api.plex_id()) old_plex_ids.remove(api.plex_id())
@ -205,6 +211,8 @@ def _full_sync():
IGNORE_KODI_PLAYLIST_CHANGE.remove(api.plex_id()) IGNORE_KODI_PLAYLIST_CHANGE.remove(api.plex_id())
# Get rid of old Plex playlists that were deleted on the Plex side # Get rid of old Plex playlists that were deleted on the Plex side
for plex_id in old_plex_ids: for plex_id in old_plex_ids:
if isCanceled():
return False
playlist = db.get_playlist(plex_id=plex_id) playlist = db.get_playlist(plex_id=plex_id)
IGNORE_KODI_PLAYLIST_CHANGE.append(playlist.kodi_path) IGNORE_KODI_PLAYLIST_CHANGE.append(playlist.kodi_path)
LOG.debug('Removing outdated Plex playlist from Kodi: %s', playlist) LOG.debug('Removing outdated Plex playlist from Kodi: %s', playlist)
@ -217,6 +225,8 @@ def _full_sync():
old_kodi_paths = db.kodi_playlist_paths() old_kodi_paths = db.kodi_playlist_paths()
for root, _, files in path_ops.walk(v.PLAYLIST_PATH): for root, _, files in path_ops.walk(v.PLAYLIST_PATH):
for f in files: for f in files:
if isCanceled():
return False
path = path_ops.path.join(root, f) path = path_ops.path.join(root, f)
try: try:
old_kodi_paths.remove(path) old_kodi_paths.remove(path)
@ -247,6 +257,8 @@ def _full_sync():
except PlaylistError: except PlaylistError:
LOG.info('Skipping Kodi playlist %s', path) LOG.info('Skipping Kodi playlist %s', path)
for kodi_path in old_kodi_paths: for kodi_path in old_kodi_paths:
if isCanceled():
return False
playlist = db.get_playlist(path=kodi_path) playlist = db.get_playlist(path=kodi_path)
if not playlist: if not playlist:
continue continue