From ad7d3b7e2597e4deb236085bde5a5bece02b4c9e Mon Sep 17 00:00:00 2001 From: EstrellaXD Date: Mon, 29 May 2023 22:11:20 +0800 Subject: [PATCH] feat: add new enable and disable api in bangumi manage --- src/module/api/bangumi.py | 28 +++++++++++++++++++--------- src/module/manager/torrent.py | 30 +++++++++++++++++++++++++----- 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/src/module/api/bangumi.py b/src/module/api/bangumi.py index b208290b..ae987ba4 100644 --- a/src/module/api/bangumi.py +++ b/src/module/api/bangumi.py @@ -21,19 +21,19 @@ async def get_all_data(current_user=Depends(get_current_user)): @router.get( - "/api/v1/bangumi/getRule/{bangumi_id}", tags=["bangumi"], response_model=BangumiData + "/api/v1/bangumi/getData/{bangumi_id}", tags=["bangumi"], response_model=BangumiData ) -async def get_rule(bangumi_id: str, current_user=Depends(get_current_user)): +async def get_data(bangumi_id: str, current_user=Depends(get_current_user)): if not current_user: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="invalid token" ) with TorrentManager() as torrent: - return torrent.search_one(bangumi_id) + return torrent.search_data(bangumi_id) @router.post("/api/v1/bangumi/updateRule", tags=["bangumi"]) -async def update_rule(data: BangumiData, current_user=Depends(get_current_user)): +async def update_data(data: BangumiData, current_user=Depends(get_current_user)): if not current_user: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="invalid token" @@ -42,17 +42,17 @@ async def update_rule(data: BangumiData, current_user=Depends(get_current_user)) return torrent.update_rule(data) -@router.delete("/api/v1/bangumi/deleteData/{bangumi_id}", tags=["bangumi"]) -async def delete_data(bangumi_id: str, current_user=Depends(get_current_user)): +@router.delete("/api/v1/bangumi/deleteRule/{bangumi_id}", tags=["bangumi"]) +async def delete_data(bangumi_id: str, file:bool = False, current_user=Depends(get_current_user)): if not current_user: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="invalid token" ) with TorrentManager() as torrent: - return torrent.delete_data(bangumi_id) + return torrent.delete_rule(bangumi_id, file) -@router.delete("/api/v1/bangumi/deleteRule/{bangumi_id}", tags=["bangumi"]) +@router.delete("/api/v1/bangumi/disableRule/{bangumi_id}", tags=["bangumi"]) async def delete_rule( bangumi_id: str, file: bool = False, current_user=Depends(get_current_user) ): @@ -61,7 +61,17 @@ async def delete_rule( status_code=status.HTTP_401_UNAUTHORIZED, detail="invalid token" ) with TorrentManager() as torrent: - return torrent.delete_rule(bangumi_id, file) + return torrent.disable_rule(bangumi_id, file) + + +@router.get("/api/v1/bangumi/enableRule/{bangumi_id}", tags=["bangumi"]) +async def enable_rule(bangumi_id: str, current_user=Depends(get_current_user)): + if not current_user: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, detail="invalid token" + ) + with TorrentManager() as torrent: + return torrent.enable_rule(bangumi_id) @router.get("/api/v1/bangumi/resetAll", tags=["bangumi"]) diff --git a/src/module/manager/torrent.py b/src/module/manager/torrent.py index 6c028b36..e35dc5f3 100644 --- a/src/module/manager/torrent.py +++ b/src/module/manager/torrent.py @@ -32,16 +32,23 @@ class TorrentManager(BangumiDatabase): else: return data - def delete_data(self, _id: int | str): + def delete_rule(self, _id: int | str, file: bool = False): data = self.search_id(int(_id)) if isinstance(data, BangumiData): self.delete_one(int(_id)) + if file: + self.delete_torrents(data.id) + logger.info(f"Delete {data.official_title} and torrents.") + return { + "status": "success", + "msg": f"Delete {data.official_title} and torrents.", + } logger.info(f"Delete {data.official_title}") return {"status": "success", "msg": f"Delete {data.official_title}"} else: return data - def delete_rule(self, _id: str | int, file: bool = False): + def disable_rule(self, _id: str | int, file: bool = False): data = self.search_id(int(_id)) if isinstance(data, BangumiData): with DownloadClient() as client: @@ -53,16 +60,29 @@ class TorrentManager(BangumiDatabase): logger.info(f"Delete rule and torrents for {data.official_title}") return { "status": "success", - "msg": f"Delete rule and torrents for {data.official_title}", + "msg": f"Disable rule and delete torrents for {data.official_title}", } - logger.info(f"Delete rule for {data.official_title}") + logger.info(f"Disable rule for {data.official_title}") return { "status": "success", - "msg": f"Delete rule for {data.official_title}", + "msg": f"Disable rule for {data.official_title}", } else: return data + def enable_rule(self, _id: str | int): + data = self.search_id(int(_id)) + if isinstance(data, BangumiData): + data.deleted = False + self.update_one(data) + with DownloadClient() as client: + client.set_rule(data) + logger.info(f"Enable rule for {data.official_title}") + return { + "status": "success", + "msg": f"Enable rule for {data.official_title}", + } + def update_rule(self, data: BangumiData): old_data = self.search_id(data.id) if not old_data: