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 diff --git a/jellyfin_kodi/full_sync.py b/jellyfin_kodi/full_sync.py index 59945f24..9c87d0c1 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,34 @@ 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'] + # 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 + 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() 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':