From d490fcf5af7c094d364a09134a5fec7848bfa8c6 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sat, 21 Oct 2023 13:52:06 +0800 Subject: [PATCH] fix init paths --- app/api/endpoints/dashboard.py | 3 +- app/chain/download.py | 20 ++++++------- app/chain/search.py | 3 +- app/core/config.py | 46 +++++++++++++++++++++++++++-- app/modules/qbittorrent/__init__.py | 4 +-- 5 files changed, 57 insertions(+), 19 deletions(-) diff --git a/app/api/endpoints/dashboard.py b/app/api/endpoints/dashboard.py index 80af9c01..35fb922f 100644 --- a/app/api/endpoints/dashboard.py +++ b/app/api/endpoints/dashboard.py @@ -1,4 +1,3 @@ -from pathlib import Path from typing import Any, List, Optional from fastapi import APIRouter, Depends @@ -61,7 +60,7 @@ def downloader(_: schemas.TokenPayload = Depends(verify_token)) -> Any: 查询下载器信息 """ transfer_info = DashboardChain().downloader_info() - free_space = SystemUtils.free_space(Path(settings.DOWNLOAD_PATH)) + free_space = SystemUtils.free_space(settings.SAVE_PATH) if transfer_info: return schemas.DownloaderInfo( download_speed=transfer_info.download_speed, diff --git a/app/chain/download.py b/app/chain/download.py index ef169a17..09fc08b8 100644 --- a/app/chain/download.py +++ b/app/chain/download.py @@ -202,33 +202,31 @@ class DownloadChain(ChainBase): # 开启下载二级目录 if _media.type == MediaType.MOVIE: # 电影 - download_dir = Path(settings.DOWNLOAD_MOVIE_PATH or settings.DOWNLOAD_PATH) / _media.category + download_dir = settings.SAVE_MOVIE_PATH / _media.category else: - if settings.DOWNLOAD_ANIME_PATH \ - and _media.genre_ids \ + if _media.genre_ids \ and set(_media.genre_ids).intersection(set(settings.ANIME_GENREIDS)): # 动漫 - download_dir = Path(settings.DOWNLOAD_ANIME_PATH) + download_dir = settings.SAVE_ANIME_PATH else: # 电视剧 - download_dir = Path(settings.DOWNLOAD_TV_PATH or settings.DOWNLOAD_PATH) / _media.category + download_dir = settings.SAVE_TV_PATH / _media.category elif _media: # 未开启下载二级目录 if _media.type == MediaType.MOVIE: # 电影 - download_dir = Path(settings.DOWNLOAD_MOVIE_PATH or settings.DOWNLOAD_PATH) + download_dir = settings.SAVE_MOVIE_PATH else: - if settings.DOWNLOAD_ANIME_PATH \ - and _media.genre_ids \ + if _media.genre_ids \ and set(_media.genre_ids).intersection(set(settings.ANIME_GENREIDS)): # 动漫 - download_dir = Path(settings.DOWNLOAD_ANIME_PATH) + download_dir = settings.SAVE_ANIME_PATH else: # 电视剧 - download_dir = Path(settings.DOWNLOAD_TV_PATH or settings.DOWNLOAD_PATH) + download_dir = settings.SAVE_TV_PATH else: # 未识别 - download_dir = Path(settings.DOWNLOAD_PATH) + download_dir = settings.SAVE_PATH else: # 自定义下载目录 download_dir = Path(save_path) diff --git a/app/chain/search.py b/app/chain/search.py index 9d61a1ba..301e2ecc 100644 --- a/app/chain/search.py +++ b/app/chain/search.py @@ -16,11 +16,10 @@ from app.helper.torrent import TorrentHelper from app.log import logger from app.schemas import NotExistMediaInfo from app.schemas.types import MediaType, ProgressKey, SystemConfigKey -from app.utils.singleton import Singleton from app.utils.string import StringUtils -class SearchChain(ChainBase, metaclass=Singleton): +class SearchChain(ChainBase): """ 站点资源搜索处理链 """ diff --git a/app/core/config.py b/app/core/config.py index 48fecb8a..02af7e67 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -136,7 +136,7 @@ class Settings(BaseSettings): # 种子标签 TORRENT_TAG: str = "MOVIEPILOT" # 下载保存目录,容器内映射路径需要一致 - DOWNLOAD_PATH: str = "/downloads" + DOWNLOAD_PATH: str = None # 电影下载保存目录,容器内映射路径需要一致 DOWNLOAD_MOVIE_PATH: str = None # 电视剧下载保存目录,容器内映射路径需要一致 @@ -275,7 +275,43 @@ class Settings(BaseSettings): def LIBRARY_PATHS(self) -> List[Path]: if self.LIBRARY_PATH: return [Path(path) for path in self.LIBRARY_PATH.split(",")] - return [] + return [self.CONFIG_PATH / "library"] + + @property + def SAVE_PATH(self) -> Path: + """ + 获取下载保存目录 + """ + if self.DOWNLOAD_PATH: + return Path(self.DOWNLOAD_PATH) + return self.CONFIG_PATH / "downloads" + + @property + def SAVE_MOVIE_PATH(self) -> Path: + """ + 获取电影下载保存目录 + """ + if self.DOWNLOAD_MOVIE_PATH: + return Path(self.DOWNLOAD_MOVIE_PATH) + return self.SAVE_PATH + + @property + def SAVE_TV_PATH(self) -> Path: + """ + 获取电视剧下载保存目录 + """ + if self.DOWNLOAD_TV_PATH: + return Path(self.DOWNLOAD_TV_PATH) + return self.SAVE_PATH + + @property + def SAVE_ANIME_PATH(self) -> Path: + """ + 获取动漫下载保存目录 + """ + if self.DOWNLOAD_ANIME_PATH: + return Path(self.DOWNLOAD_ANIME_PATH) + return self.SAVE_TV_PATH def __init__(self, **kwargs): super().__init__(**kwargs) @@ -291,6 +327,12 @@ class Settings(BaseSettings): with self.LOG_PATH as p: if not p.exists(): p.mkdir(parents=True, exist_ok=True) + with self.SAVE_PATH as p: + if not p.exists(): + p.mkdir(parents=True, exist_ok=True) + for path in self.LIBRARY_PATHS: + if not path.exists(): + path.mkdir(parents=True, exist_ok=True) class Config: case_sensitive = True diff --git a/app/modules/qbittorrent/__init__.py b/app/modules/qbittorrent/__init__.py index 32ac3403..5e83af43 100644 --- a/app/modules/qbittorrent/__init__.py +++ b/app/modules/qbittorrent/__init__.py @@ -123,7 +123,7 @@ class QbittorrentModule(_ModuleBase): if content_path: torrent_path = Path(content_path) else: - torrent_path = Path(settings.DOWNLOAD_PATH) / torrent.get('name') + torrent_path = settings.SAVE_PATH / torrent.get('name') ret_torrents.append(TransferTorrent( title=torrent.get('name'), path=torrent_path, @@ -142,7 +142,7 @@ class QbittorrentModule(_ModuleBase): if content_path: torrent_path = Path(content_path) else: - torrent_path = Path(settings.DOWNLOAD_PATH) / torrent.get('name') + torrent_path = settings.SAVE_PATH / torrent.get('name') ret_torrents.append(TransferTorrent( title=torrent.get('name'), path=torrent_path,