fix init paths

This commit is contained in:
jxxghp 2023-10-21 13:52:06 +08:00
parent cdbe5b2e2f
commit d490fcf5af
5 changed files with 57 additions and 19 deletions

View File

@ -1,4 +1,3 @@
from pathlib import Path
from typing import Any, List, Optional from typing import Any, List, Optional
from fastapi import APIRouter, Depends from fastapi import APIRouter, Depends
@ -61,7 +60,7 @@ def downloader(_: schemas.TokenPayload = Depends(verify_token)) -> Any:
查询下载器信息 查询下载器信息
""" """
transfer_info = DashboardChain().downloader_info() 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: if transfer_info:
return schemas.DownloaderInfo( return schemas.DownloaderInfo(
download_speed=transfer_info.download_speed, download_speed=transfer_info.download_speed,

View File

@ -202,33 +202,31 @@ class DownloadChain(ChainBase):
# 开启下载二级目录 # 开启下载二级目录
if _media.type == MediaType.MOVIE: 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: else:
if settings.DOWNLOAD_ANIME_PATH \ if _media.genre_ids \
and _media.genre_ids \
and set(_media.genre_ids).intersection(set(settings.ANIME_GENREIDS)): and set(_media.genre_ids).intersection(set(settings.ANIME_GENREIDS)):
# 动漫 # 动漫
download_dir = Path(settings.DOWNLOAD_ANIME_PATH) download_dir = settings.SAVE_ANIME_PATH
else: else:
# 电视剧 # 电视剧
download_dir = Path(settings.DOWNLOAD_TV_PATH or settings.DOWNLOAD_PATH) / _media.category download_dir = settings.SAVE_TV_PATH / _media.category
elif _media: elif _media:
# 未开启下载二级目录 # 未开启下载二级目录
if _media.type == MediaType.MOVIE: if _media.type == MediaType.MOVIE:
# 电影 # 电影
download_dir = Path(settings.DOWNLOAD_MOVIE_PATH or settings.DOWNLOAD_PATH) download_dir = settings.SAVE_MOVIE_PATH
else: else:
if settings.DOWNLOAD_ANIME_PATH \ if _media.genre_ids \
and _media.genre_ids \
and set(_media.genre_ids).intersection(set(settings.ANIME_GENREIDS)): and set(_media.genre_ids).intersection(set(settings.ANIME_GENREIDS)):
# 动漫 # 动漫
download_dir = Path(settings.DOWNLOAD_ANIME_PATH) download_dir = settings.SAVE_ANIME_PATH
else: else:
# 电视剧 # 电视剧
download_dir = Path(settings.DOWNLOAD_TV_PATH or settings.DOWNLOAD_PATH) download_dir = settings.SAVE_TV_PATH
else: else:
# 未识别 # 未识别
download_dir = Path(settings.DOWNLOAD_PATH) download_dir = settings.SAVE_PATH
else: else:
# 自定义下载目录 # 自定义下载目录
download_dir = Path(save_path) download_dir = Path(save_path)

View File

@ -16,11 +16,10 @@ from app.helper.torrent import TorrentHelper
from app.log import logger from app.log import logger
from app.schemas import NotExistMediaInfo from app.schemas import NotExistMediaInfo
from app.schemas.types import MediaType, ProgressKey, SystemConfigKey from app.schemas.types import MediaType, ProgressKey, SystemConfigKey
from app.utils.singleton import Singleton
from app.utils.string import StringUtils from app.utils.string import StringUtils
class SearchChain(ChainBase, metaclass=Singleton): class SearchChain(ChainBase):
""" """
站点资源搜索处理链 站点资源搜索处理链
""" """

View File

@ -136,7 +136,7 @@ class Settings(BaseSettings):
# 种子标签 # 种子标签
TORRENT_TAG: str = "MOVIEPILOT" TORRENT_TAG: str = "MOVIEPILOT"
# 下载保存目录,容器内映射路径需要一致 # 下载保存目录,容器内映射路径需要一致
DOWNLOAD_PATH: str = "/downloads" DOWNLOAD_PATH: str = None
# 电影下载保存目录,容器内映射路径需要一致 # 电影下载保存目录,容器内映射路径需要一致
DOWNLOAD_MOVIE_PATH: str = None DOWNLOAD_MOVIE_PATH: str = None
# 电视剧下载保存目录,容器内映射路径需要一致 # 电视剧下载保存目录,容器内映射路径需要一致
@ -275,7 +275,43 @@ class Settings(BaseSettings):
def LIBRARY_PATHS(self) -> List[Path]: def LIBRARY_PATHS(self) -> List[Path]:
if self.LIBRARY_PATH: if self.LIBRARY_PATH:
return [Path(path) for path in self.LIBRARY_PATH.split(",")] 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): def __init__(self, **kwargs):
super().__init__(**kwargs) super().__init__(**kwargs)
@ -291,6 +327,12 @@ class Settings(BaseSettings):
with self.LOG_PATH as p: with self.LOG_PATH as p:
if not p.exists(): if not p.exists():
p.mkdir(parents=True, exist_ok=True) 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: class Config:
case_sensitive = True case_sensitive = True

View File

@ -123,7 +123,7 @@ class QbittorrentModule(_ModuleBase):
if content_path: if content_path:
torrent_path = Path(content_path) torrent_path = Path(content_path)
else: else:
torrent_path = Path(settings.DOWNLOAD_PATH) / torrent.get('name') torrent_path = settings.SAVE_PATH / torrent.get('name')
ret_torrents.append(TransferTorrent( ret_torrents.append(TransferTorrent(
title=torrent.get('name'), title=torrent.get('name'),
path=torrent_path, path=torrent_path,
@ -142,7 +142,7 @@ class QbittorrentModule(_ModuleBase):
if content_path: if content_path:
torrent_path = Path(content_path) torrent_path = Path(content_path)
else: else:
torrent_path = Path(settings.DOWNLOAD_PATH) / torrent.get('name') torrent_path = settings.SAVE_PATH / torrent.get('name')
ret_torrents.append(TransferTorrent( ret_torrents.append(TransferTorrent(
title=torrent.get('name'), title=torrent.get('name'),
path=torrent_path, path=torrent_path,