From 88594588d23b339c052846005e95e7e5d45acbd2 Mon Sep 17 00:00:00 2001 From: EstrellaXD Date: Fri, 2 Jun 2023 19:19:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=20API=20=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + src/module/api/bangumi.py | 8 ++--- src/module/manager/collector.py | 2 ++ src/module/manager/torrent.py | 53 ++++++++++----------------------- 4 files changed, 23 insertions(+), 41 deletions(-) diff --git a/.gitignore b/.gitignore index e2a43594..6670d71b 100644 --- a/.gitignore +++ b/.gitignore @@ -177,3 +177,4 @@ test.* /src/templates/ /src/config/ /src/debuger.py +/src/dist.zip diff --git a/src/module/api/bangumi.py b/src/module/api/bangumi.py index f13ffe20..8091890a 100644 --- a/src/module/api/bangumi.py +++ b/src/module/api/bangumi.py @@ -1,9 +1,9 @@ from fastapi import Depends, HTTPException, status +from fastapi.responses import JSONResponse from .log import router from module.models import BangumiData -from module.database import BangumiDatabase from module.manager import TorrentManager from module.security import get_current_user @@ -80,6 +80,6 @@ async def reset_all(current_user=Depends(get_current_user)): raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="invalid token" ) - with BangumiDatabase() as database: - database.delete_all() - return {"status": "ok"} + with TorrentManager() as torrent: + torrent.delete_all() + return JSONResponse(status_code=200, content={"message": "OK"}) diff --git a/src/module/manager/collector.py b/src/module/manager/collector.py index d3d7c06e..db62c4c7 100644 --- a/src/module/manager/collector.py +++ b/src/module/manager/collector.py @@ -1,5 +1,7 @@ import logging +from fastapi.responses import JSONResponse + from module.downloader import DownloadClient from module.models import BangumiData from module.database import BangumiDatabase diff --git a/src/module/manager/torrent.py b/src/module/manager/torrent.py index 8bd77a7c..8e05194b 100644 --- a/src/module/manager/torrent.py +++ b/src/module/manager/torrent.py @@ -21,15 +21,9 @@ class TorrentManager(BangumiDatabase): if hash_list: client.delete_torrent(hash_list) logger.info(f"Delete rule and torrents for {data.official_title}") - return { - "status": "success", - "msg": f"Delete torrents for {data.official_title}", - } + return f"Delete torrents for {data.official_title}" else: - return { - "status": "error", - "msg": f"Can't find torrents for {data.official_title}", - } + return f"Can't find torrents for {data.official_title}" def delete_rule(self, _id: int | str, file: bool = False): data = self.search_id(int(_id)) @@ -39,34 +33,19 @@ class TorrentManager(BangumiDatabase): client.remove_rss_feed(data.official_title) self.delete_one(int(_id)) if file: - self.delete_torrents(data, client) + torrent_message = self.delete_torrents(data, client) return JSONResponse(status_code=200, content={ - "status": "success", - "msg": f"Delete rule and torrents for {data.official_title}", + "msg": f"Delete rule and torrents for {data.official_title}, " + f"{torrent_message}", }) logger.info(f"[Manager] Delete rule for {data.official_title}") return JSONResponse(status_code=200, content={ - "status": "success", - "msg": f"Delete rule for {data.official_title}", + "msg": f"Delete rule for {data.official_title}" }) else: return JSONResponse(status_code=406, content={ - {"status": "error", "msg": f"Can't find id {_id}"} + "msg": f"Can't find id {_id}" }) - # data = self.search_id(int(_id)) - # if isinstance(data, BangumiData): - # self.delete_one(int(_id)) - # if file: - # self.delete_torrents(data) - # 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 disable_rule(self, _id: str | int, file: bool = False): data = self.search_id(int(_id)) @@ -76,19 +55,18 @@ class TorrentManager(BangumiDatabase): data.deleted = True self.update_one(data) if file: - self.delete_torrents(data, client) + torrent_message = self.delete_torrents(data, client) return JSONResponse(status_code=200, content={ - "status": "success", - "msg": f"Disable rule and delete torrents for {data.official_title}", + "msg": f"Disable rule and delete torrents for {data.official_title}" + f"{torrent_message}", }) logger.info(f"[Manager] Disable rule for {data.official_title}") return JSONResponse(status_code=200, content={ - "status": "success", "msg": f"Disable rule for {data.official_title}", }) else: return JSONResponse(status_code=406, content={ - {"status": "error", "msg": f"Can't find id {_id}"} + "msg": f"Can't find id {_id}" }) def enable_rule(self, _id: str | int): @@ -100,20 +78,22 @@ class TorrentManager(BangumiDatabase): client.set_rule(data) logger.info(f"[Manager] Enable rule for {data.official_title}") return JSONResponse(status_code=200, content={ - "status": "success", "msg": f"Enable rule for {data.official_title}", }) + else: + return JSONResponse(status_code=406, content={ + "msg": f"Can't find bangumi id {_id}" + }) def update_rule(self, data: BangumiData): old_data = self.search_id(data.id) if not old_data: logger.error(f"[Manager] Can't find data with id {data.id}") return JSONResponse(status_code=406, content={ - "status": "error", "msg": f"Can't find data with id {data.id}" }) else: - # Set torrent path + # Move torrent match_list = self.__match_torrents_list(data) with DownloadClient() as client: path = client._gen_save_path(data) @@ -124,7 +104,6 @@ class TorrentManager(BangumiDatabase): client.set_rule(data) self.update_one(data) return JSONResponse(status_code=200, content={ - "status": "success", "msg": f"Set new path for {data.official_title}", })