From 9e161fb36c9d9d4b31d9ebabb2a74c3dc362f699 Mon Sep 17 00:00:00 2001 From: InfinityPacer <160988576+InfinityPacer@users.noreply.github.com> Date: Wed, 9 Oct 2024 01:48:41 +0800 Subject: [PATCH 1/3] feat(module): add support for name filtering in service retrieval --- app/helper/servicebase.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/helper/servicebase.py b/app/helper/servicebase.py index bfd831f7..40b65dc1 100644 --- a/app/helper/servicebase.py +++ b/app/helper/servicebase.py @@ -67,17 +67,23 @@ class ServiceBaseHelper(Generic[TConf]): ) yield service_info - def get_services(self, type_filter: Optional[str] = None) -> Dict[str, ServiceInfo]: + def get_services(self, type_filter: Optional[str] = None, name_filters: Optional[List[str]] = None) \ + -> Dict[str, ServiceInfo]: """ - 获取服务信息列表,并根据类型过滤 + 获取服务信息列表,并根据类型和名称列表进行过滤 :param type_filter: 需要过滤的服务类型 + :param name_filters: 需要过滤的服务名称列表 :return: 过滤后的服务信息字典 """ + name_filters_set = set(name_filters) if name_filters else None + return { service_info.name: service_info for service_info in self.iterate_module_instances() - if service_info.config and (type_filter is None or service_info.type == type_filter) + if service_info.config and + (type_filter is None or service_info.type == type_filter) and + (name_filters_set is None or service_info.name in name_filters_set) } def get_service(self, name: str, type_filter: Optional[str] = None) -> Optional[ServiceInfo]: From e2ee3ec4cdf5769c8f5cfd4868f6bdc6a00aa77a Mon Sep 17 00:00:00 2001 From: InfinityPacer <160988576+InfinityPacer@users.noreply.github.com> Date: Wed, 9 Oct 2024 01:49:25 +0800 Subject: [PATCH 2/3] feat(event): add downloader field to DownloadAdded event --- app/chain/download.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/chain/download.py b/app/chain/download.py index 178be71c..a4b507c1 100644 --- a/app/chain/download.py +++ b/app/chain/download.py @@ -354,7 +354,8 @@ class DownloadChain(ChainBase): self.eventmanager.send_event(EventType.DownloadAdded, { "hash": _hash, "context": context, - "username": username + "username": username, + "downloader": _downloader }) else: # 下载失败 From 0d3d6e9bf95aff0b77c26e6b6e0b0582c4505cf3 Mon Sep 17 00:00:00 2001 From: InfinityPacer <160988576+InfinityPacer@users.noreply.github.com> Date: Wed, 9 Oct 2024 02:29:52 +0800 Subject: [PATCH 3/3] fix(download): ensure params parsed from request body --- app/api/endpoints/download.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/api/endpoints/download.py b/app/api/endpoints/download.py index b7a1ade8..bdfec12c 100644 --- a/app/api/endpoints/download.py +++ b/app/api/endpoints/download.py @@ -1,6 +1,6 @@ from typing import Any, List -from fastapi import APIRouter, Depends +from fastapi import APIRouter, Depends, Body from app import schemas from app.chain.download import DownloadChain @@ -28,8 +28,8 @@ def list( def download( media_in: schemas.MediaInfo, torrent_in: schemas.TorrentInfo, - downloader: str = None, - save_path: str = None, + downloader: str = Body(None), + save_path: str = Body(None), current_user: User = Depends(get_current_active_user)) -> Any: """ 添加下载任务(含媒体信息) @@ -60,8 +60,8 @@ def download( @router.post("/add", summary="添加下载(不含媒体信息)", response_model=schemas.Response) def add( torrent_in: schemas.TorrentInfo, - downloader: str = None, - save_path: str = None, + downloader: str = Body(None), + save_path: str = Body(None), current_user: User = Depends(get_current_active_user)) -> Any: """ 添加下载任务(不含媒体信息)