From a1f3d8eb10789d0be6658af2f4febf791e1cc9d2 Mon Sep 17 00:00:00 2001
From: Matt <mcarlton00@gmail.com>
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 <mcarlton00@gmail.com>
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 <mcarlton00@gmail.com>
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 <mcarlton00@gmail.com>
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