diff --git a/backend/src/module/api/rss.py b/backend/src/module/api/rss.py index a4bb5ab1..b1317203 100644 --- a/backend/src/module/api/rss.py +++ b/backend/src/module/api/rss.py @@ -64,6 +64,23 @@ async def disable_rss(rss_id: int, current_user=Depends(get_current_user)): ) +@router.post(path="/disable/many", response_model=APIResponse) +async def disable_many_rss(rss_ids: list[int], current_user=Depends(get_current_user)): + if not current_user: + raise UNAUTHORIZED + with RSSEngine() as engine: + if engine.disable_list(rss_ids): + return JSONResponse( + status_code=200, + content={"msg_en": "Disable RSS successfully.", "msg_zh": "禁用 RSS 成功。"}, + ) + else: + return JSONResponse( + status_code=406, + content={"msg_en": "Disable RSS failed.", "msg_zh": "禁用 RSS 失败。"}, + ) + + @router.patch(path="/update/{rss_id}", response_model=APIResponse) async def update_rss( rss_id: int, data: RSSUpdate, current_user=Depends(get_current_user) diff --git a/backend/src/module/api/search.py b/backend/src/module/api/search.py index 2bdd5157..ae9453b8 100644 --- a/backend/src/module/api/search.py +++ b/backend/src/module/api/search.py @@ -9,7 +9,7 @@ from module.models import Bangumi router = APIRouter(prefix="/search", tags=["search"]) -@router.get("/", response_model=list[Bangumi]) +@router.get("/bangumi", response_model=list[Bangumi]) async def search_torrents( site: str = "mikan", keywords: str = Query(None), diff --git a/backend/src/module/rss/engine.py b/backend/src/module/rss/engine.py index ff733355..744176a4 100644 --- a/backend/src/module/rss/engine.py +++ b/backend/src/module/rss/engine.py @@ -59,6 +59,10 @@ class RSSEngine(Database): msg_zh="RSS 添加失败。", ) + def disable_list(self, rss_id_list: list[int]): + for rss_id in rss_id_list: + self.rss.disable(rss_id) + def pull_rss(self, rss_item: RSSItem) -> list[Torrent]: torrents = self._get_torrents(rss_item) new_torrents = self.torrent.check_new(torrents) diff --git a/webui/src/api/bangumi.ts b/webui/src/api/bangumi.ts index e9965f23..5f0d0c21 100644 --- a/webui/src/api/bangumi.ts +++ b/webui/src/api/bangumi.ts @@ -1,4 +1,4 @@ -import type { BangumiAPI, BangumiRule, BangumiUpdate } from '#/bangumi'; +import type { BangumiAPI, BangumiRule } from '#/bangumi'; import type { ApiSuccess } from '#/api'; diff --git a/webui/src/api/rss.ts b/webui/src/api/rss.ts index dbc9b233..282673df 100644 --- a/webui/src/api/rss.ts +++ b/webui/src/api/rss.ts @@ -18,11 +18,21 @@ export const apiRSS = { return data!; }, + async deleteMany(rss_list: number[]) { + const { data } = await axios.post(`api/v1/rss/delete/many`, rss_list); + return data!; + }, + async disable(rss_id: number) { const { data } = await axios.patch(`api/v1/rss/disable/${rss_id}`); return data!; }, + async disableMany(rss_list: number[]) { + const { data } = await axios.post(`api/v1/rss/disable/many`, rss_list); + return data!; + }, + async update(rss_id: number, rss: RSS) { const { data } = await axios.patch(`api/v1/rss/update/${rss_id}`, rss); return data!; diff --git a/webui/src/api/search.ts b/webui/src/api/search.ts index b4e12cec..41e7866b 100644 --- a/webui/src/api/search.ts +++ b/webui/src/api/search.ts @@ -55,7 +55,7 @@ export const apiSearch = { get(keyword: string, site = 'mikan'): Observable { const bangumiInfo$ = new Observable(observer => { const eventSource = new EventSource( - `api/v1/search?site=${site}&keyword=${encodeURIComponent(keyword)}`, + `api/v1/search/bangumi?site=${site}&keywords=${encodeURIComponent(keyword)}`, { withCredentials: true }, ); diff --git a/webui/src/components/basic/ab-search.vue b/webui/src/components/basic/ab-search.vue index 02edd06b..5be7bea5 100644 --- a/webui/src/components/basic/ab-search.vue +++ b/webui/src/components/basic/ab-search.vue @@ -1,74 +1,32 @@