From a1f3d8eb10789d0be6658af2f4febf791e1cc9d2 Mon Sep 17 00:00:00 2001 From: Matt Date: Fri, 30 Apr 2021 20:54:52 -0400 Subject: [PATCH 1/4] Fix followup sync again --- jellyfin_kodi/full_sync.py | 48 ++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/jellyfin_kodi/full_sync.py b/jellyfin_kodi/full_sync.py index 59945f24..1dfe7234 100644 --- a/jellyfin_kodi/full_sync.py +++ b/jellyfin_kodi/full_sync.py @@ -68,7 +68,7 @@ class FullSync(object): return self - def libraries(self, library_id=None, update=False): + def libraries(self, libraries=None, update=False): ''' Map the syncing process and start the sync. Ensure only one sync is running. ''' @@ -76,31 +76,33 @@ class FullSync(object): self.update_library = update self.sync = get_sync() - if library_id: + if libraries: + # Can be a single ID or a comma separated list + libraries = libraries.split(',') + for library_id in libraries: + # Look up library in local Jellyfin database + library = self.get_library(library_id) - # Look up library in local Jellyfin database - library = self.get_library(library_id) - - if library: - if library.media_type == 'mixed': - self.sync['Libraries'].append("Mixed:%s" % library_id) - # Include boxsets library - libraries = self.get_libraries() - boxsets = [row.view_id for row in libraries if row.media_type == 'boxsets'] - if boxsets: - self.sync['Libraries'].append('Boxsets:%s' % boxsets[0]) - elif library.media_type == 'movies': - self.sync['Libraries'].append(library_id) - # Include boxsets library - libraries = self.get_libraries() - boxsets = [row.view_id for row in libraries if row.media_type == 'boxsets'] - if boxsets: - self.sync['Libraries'].append('Boxsets:%s' % boxsets[0]) + if library: + if library.media_type == 'mixed': + self.sync['Libraries'].append("Mixed:%s" % library_id) + # Include boxsets library + libraries = self.get_libraries() + boxsets = [row.view_id for row in libraries if row.media_type == 'boxsets'] + if boxsets: + self.sync['Libraries'].append('Boxsets:%s' % boxsets[0]) + elif library.media_type == 'movies': + self.sync['Libraries'].append(library_id) + # Include boxsets library + libraries = self.get_libraries() + boxsets = [row.view_id for row in libraries if row.media_type == 'boxsets'] + if boxsets: + self.sync['Libraries'].append('Boxsets:%s' % boxsets[0]) + else: + # Only called if the library isn't already known about + self.sync['Libraries'].append(library_id) else: - # Only called if the library isn't already known about self.sync['Libraries'].append(library_id) - else: - self.sync['Libraries'].append(library_id) else: self.mapping() From 37a72759cbc40f9b5ee8f5a71f92c7107c69ae87 Mon Sep 17 00:00:00 2001 From: Matt Date: Fri, 30 Apr 2021 20:55:07 -0400 Subject: [PATCH 2/4] Fix removing music libraries --- jellyfin_kodi/objects/music.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jellyfin_kodi/objects/music.py b/jellyfin_kodi/objects/music.py index b5a35b18..72631dae 100644 --- a/jellyfin_kodi/objects/music.py +++ b/jellyfin_kodi/objects/music.py @@ -487,7 +487,7 @@ class Music(KodiDb): if obj['Media'] == 'song': self.remove_song(obj['KodiId'], obj['Id']) - self.jellyfin_db.remove_wild_item(obj['id']) + self.jellyfin_db.remove_wild_item(obj['Id']) for item in self.jellyfin_db.get_item_by_wild_id(*values(obj, QUEM.get_item_by_wild_obj)): if item[1] == 'album': From 8b89ff3debedbfc1d0c52695a70916c2086b4263 Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 2 May 2021 12:46:47 -0400 Subject: [PATCH 3/4] Make sure we only sync boxsets once --- jellyfin_kodi/full_sync.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jellyfin_kodi/full_sync.py b/jellyfin_kodi/full_sync.py index 1dfe7234..9c87d0c1 100644 --- a/jellyfin_kodi/full_sync.py +++ b/jellyfin_kodi/full_sync.py @@ -96,7 +96,8 @@ class FullSync(object): # Include boxsets library libraries = self.get_libraries() boxsets = [row.view_id for row in libraries if row.media_type == 'boxsets'] - if boxsets: + # Verify we're only trying to sync boxsets once + if boxsets and boxsets[0] not in self.sync['Libraries']: self.sync['Libraries'].append('Boxsets:%s' % boxsets[0]) else: # Only called if the library isn't already known about From be518f845b2e6536a7bd8883713b6e19b306b8fa Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 2 May 2021 12:56:32 -0400 Subject: [PATCH 4/4] Make sure sync libraries are formatted properly --- jellyfin_kodi/database/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/jellyfin_kodi/database/__init__.py b/jellyfin_kodi/database/__init__.py index 6371d888..be1d6cbc 100644 --- a/jellyfin_kodi/database/__init__.py +++ b/jellyfin_kodi/database/__init__.py @@ -335,6 +335,9 @@ def get_sync(): sync['Whitelist'] = list(set(sync.get('Whitelist', []))) sync['SortedViews'] = sync.get('SortedViews', []) + # Temporary cleanup from #494/#511, remove in a future version + sync['Libraries'] = [lib_id for lib_id in sync['Libraries'] if ',' not in lib_id] + return sync