From c6689939ffe3cc53323f7b471d4b052474028a9f Mon Sep 17 00:00:00 2001 From: quickmic Date: Sat, 13 Jul 2024 10:52:17 +0200 Subject: [PATCH] 10.0.40, review changelog for details --- addon.xml | 2 +- changelog.txt | 6 +++++ database/emby_db.py | 8 ++++-- emby/api.py | 62 +++++++++++++++++++++------------------------ 4 files changed, 42 insertions(+), 36 deletions(-) diff --git a/addon.xml b/addon.xml index 28f8585b0..3e18d1862 100644 --- a/addon.xml +++ b/addon.xml @@ -1,5 +1,5 @@ - + diff --git a/changelog.txt b/changelog.txt index 3de6177b6..374a0b182 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,9 @@ +10.0.40 +============= +fix realtime sync issue for unsyncable content e.g. photos + + + 10.0.39 ============= change log modes diff --git a/database/emby_db.py b/database/emby_db.py index f15e7bb65..3c6fec60d 100644 --- a/database/emby_db.py +++ b/database/emby_db.py @@ -369,8 +369,12 @@ def get_UpdateItem(self): del Ids for Item in Items: - Data[Item[2]][Item[1]][Counter[Item[2]][Item[1]]] = str(Item[0]) - Counter[Item[2]][Item[1]] += 1 + if Item[1] in Data[Item[2]]: + Data[Item[2]][Item[1]][Counter[Item[2]][Item[1]]] = str(Item[0]) + Counter[Item[2]][Item[1]] += 1 + else: # e.g. photo updte -> # Item: (3541991, 'Photo', '999999999') + Data[Item[2]]["unknown"][Counter[Item[2]]["unknown"]] = str(Item[0]) + Counter[Item[2]]["unknown"] += 1 for Key, Array in list(Data.items()): DataProcessed[Key] = {"MusicVideo": Array["MusicVideo"][:Counter[Key]["MusicVideo"]], "Folder": Array["Folder"][:Counter[Key]["Folder"]], "Movie": Array["Movie"][:Counter[Key]["Movie"]], "Video": Array["Video"][:Counter[Key]["Video"]], "Series": Array["Series"][:Counter[Key]["Series"]], "Season": Array["Season"][:Counter[Key]["Season"]], "Episode": Array["Episode"][:Counter[Key]["Episode"]], "MusicArtist": Array["MusicArtist"][:Counter[Key]["MusicArtist"]], "MusicAlbum": Array["MusicAlbum"][:Counter[Key]["MusicAlbum"]], "Audio": Array["Audio"][:Counter[Key]["Audio"]], "Person": Array["Person"][:Counter[Key]["Person"]], "MusicGenre": Array["MusicGenre"][:Counter[Key]["MusicGenre"]], "Genre": Array["Genre"][:Counter[Key]["Genre"]], "Studio": Array["Studio"][:Counter[Key]["Studio"]], "Tag": Array["Tag"][:Counter[Key]["Tag"]], "BoxSet": Array["BoxSet"][:Counter[Key]["BoxSet"]], "Playlist": Array["Playlist"][:Counter[Key]["Playlist"]], "unknown": Array["unknown"][:Counter[Key]["unknown"]]} # Filter None diff --git a/emby/api.py b/emby/api.py index d0cc79b53..45a0d9628 100644 --- a/emby/api.py +++ b/emby/api.py @@ -197,51 +197,47 @@ def get_Items_dynamic(self, ParentId, MediaTypes, Recursive, Extra, Resume, Libr def get_Items_Ids(self, Ids, MediaTypes, Dynamic, Basic, ProcessProgressId, LibraryId, Extra): ItemsQueue = queue.Queue() - Fields = [] - if not Basic: - for MediaType in MediaTypes: - Fields += EmbyFields[MediaType.lower()] + for MediaType in MediaTypes: + if not Basic: + Fields = EmbyFields[MediaType.lower()] - #Dynamic list query, remove fields to improve performance - if Dynamic: - if "Series" in MediaTypes or "Season" in MediaTypes: - Fields += ("RecursiveItemCount", "ChildCount") + #Dynamic list query, remove fields to improve performance + if Dynamic: + if MediaType in ("Series", "Season"): + Fields += ("RecursiveItemCount", "ChildCount") - for DynamicListsRemoveField in self.DynamicListsRemoveFields: - if DynamicListsRemoveField in Fields: - Fields.remove(DynamicListsRemoveField) + for DynamicListsRemoveField in self.DynamicListsRemoveFields: + if DynamicListsRemoveField in Fields: + Fields.remove(DynamicListsRemoveField) - Fields = ",".join(list(dict.fromkeys(Fields))) # remove duplicates and join into string - else: - Fields = None + Fields = ",".join(list(dict.fromkeys(Fields))) # remove duplicates and join into string + else: + Fields = None - if len(MediaTypes) == 1: - Params = {'Fields': Fields, 'EnableTotalRecordCount': False, 'LocationTypes': "FileSystem,Remote,Offline", 'IncludeItemTypes': MediaTypes[0]} - else: - Params = {'Fields': Fields, 'EnableTotalRecordCount': False, 'LocationTypes': "FileSystem,Remote,Offline"} + Params = {'Fields': Fields, 'EnableTotalRecordCount': False, 'LocationTypes': "FileSystem,Remote,Offline", 'IncludeItemTypes': MediaType} - if Extra: - Params.update(Extra) + if Extra: + Params.update(Extra) + + if 'SortBy' not in Params: + Params['SortBy'] = "None" - if 'SortBy' not in Params: - Params['SortBy'] = "None" + start_new_thread(self.async_get_Items_Ids, (f"Users/{self.EmbyServer.ServerData['UserId']}/Items", ItemsQueue, Params, Ids, Dynamic, ProcessProgressId, LibraryId)) - start_new_thread(self.async_get_Items_Ids, (f"Users/{self.EmbyServer.ServerData['UserId']}/Items", ItemsQueue, Params, Ids, Dynamic, ProcessProgressId, LibraryId)) + while True: + Items = ItemsQueue.getall() - while True: - Items = ItemsQueue.getall() + if not Items: + break - if not Items: - break + if Items[-1] == "QUIT": + yield from Items[:-1] + del Items + break - if Items[-1] == "QUIT": - yield from Items[:-1] + yield from Items del Items - return - - yield from Items - del Items def async_get_Items_Ids(self, Request, ItemsQueue, Params, Ids, Dynamic, ProcessProgressId, LibraryId): xbmc.log("EMBY.emby.api: THREAD: --->[ load Item by Ids ]", 0) # LOGDEBUG