From 64233c89d733f04bfcd209ca74ecf0c54026f42f Mon Sep 17 00:00:00 2001 From: thsrite Date: Wed, 17 Jan 2024 16:59:22 +0800 Subject: [PATCH] =?UTF-8?q?fix=20emby/jellyfin=E9=A6=96=E9=A1=B5=E7=BB=A7?= =?UTF-8?q?=E7=BB=AD=E8=A7=82=E7=9C=8B=E3=80=81=E6=9C=80=E8=BF=91=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=85=BC=E5=AE=B9=E5=85=B1=E4=BA=AB=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/modules/emby/emby.py | 39 ++++++++++++++++++++++++++++++-- app/modules/jellyfin/jellyfin.py | 39 ++++++++++++++++++++++++++++++-- 2 files changed, 74 insertions(+), 4 deletions(-) diff --git a/app/modules/emby/emby.py b/app/modules/emby/emby.py index afb31235..ef393ebc 100644 --- a/app/modules/emby/emby.py +++ b/app/modules/emby/emby.py @@ -66,6 +66,41 @@ class Emby(metaclass=Singleton): logger.error(f"连接Library/SelectableMediaFolders 出错:" + str(e)) return [] + def get_emby_virtual_folders(self) -> List[dict]: + """ + 获取Emby媒体库所有路径列表(包含共享路径) + """ + if not self._host or not self._apikey: + return [] + req_url = "%semby/Library/VirtualFolders/Query?api_key=%s" % (self._host, self._apikey) + try: + res = RequestUtils().get_res(req_url) + if res: + library_items = res.json().get("Items") + librarys = [] + for library_item in library_items: + library_name = library_item.get('Name') + pathInfos = library_item.get('LibraryOptions', {}).get('PathInfos') + library_paths = [] + for path in pathInfos: + if path.get('NetworkPath'): + library_paths.append(path.get('NetworkPath')) + else: + library_paths.append(path.get('Path')) + + if library_name and library_paths: + librarys.append({ + 'Name': library_name, + 'Path': library_paths + }) + return librarys + else: + logger.error(f"Library/VirtualFolders/Query 未获取到返回数据") + return [] + except Exception as e: + logger.error(f"连接Library/VirtualFolders/Query 出错:" + str(e)) + return [] + def __get_emby_librarys(self, username: str = None) -> List[dict]: """ 获取Emby媒体库列表 @@ -1077,8 +1112,8 @@ class Emby(metaclass=Singleton): return [] library_folders = [] black_list = (settings.MEDIASERVER_SYNC_BLACKLIST or '').split(",") - for library in self.get_emby_folders() or []: + for library in self.get_emby_virtual_folders() or []: if library.get("Name") in black_list: continue - library_folders += [folder.get("Path") for folder in library.get("SubFolders")] + library_folders += [folder for folder in library.get("Path")] return library_folders diff --git a/app/modules/jellyfin/jellyfin.py b/app/modules/jellyfin/jellyfin.py index 0e31fec1..a1b1773e 100644 --- a/app/modules/jellyfin/jellyfin.py +++ b/app/modules/jellyfin/jellyfin.py @@ -63,6 +63,41 @@ class Jellyfin(metaclass=Singleton): logger.error(f"连接Library/SelectableMediaFolders 出错:" + str(e)) return [] + def get_jellyfin_virtual_folders(self) -> List[dict]: + """ + 获取Jellyfin媒体库所有路径列表(包含共享路径) + """ + if not self._host or not self._apikey: + return [] + req_url = "%sLibrary/VirtualFolders/Query?api_key=%s" % (self._host, self._apikey) + try: + res = RequestUtils().get_res(req_url) + if res: + library_items = res.json().get("Items") + librarys = [] + for library_item in library_items: + library_name = library_item.get('Name') + pathInfos = library_item.get('LibraryOptions', {}).get('PathInfos') + library_paths = [] + for path in pathInfos: + if path.get('NetworkPath'): + library_paths.append(path.get('NetworkPath')) + else: + library_paths.append(path.get('Path')) + + if library_name and library_paths: + librarys.append({ + 'Name': library_name, + 'Path': library_paths + }) + return librarys + else: + logger.error(f"Library/VirtualFolders/Query 未获取到返回数据") + return [] + except Exception as e: + logger.error(f"连接Library/VirtualFolders/Query 出错:" + str(e)) + return [] + def __get_jellyfin_librarys(self, username: str = None) -> List[dict]: """ 获取Jellyfin媒体库的信息 @@ -772,8 +807,8 @@ class Jellyfin(metaclass=Singleton): return [] library_folders = [] black_list = (settings.MEDIASERVER_SYNC_BLACKLIST or '').split(",") - for library in self.get_jellyfin_folders() or []: + for library in self.get_jellyfin_virtual_folders() or []: if library.get("Name") in black_list: continue - library_folders += [folder.get("Path") for folder in library.get("SubFolders")] + library_folders += [folder for folder in library.get("Path")] return library_folders