feat 下载目录二级分类

This commit is contained in:
jxxghp
2023-07-21 07:25:29 +08:00
parent 9de57dd17b
commit 3be445b409
8 changed files with 38 additions and 19 deletions

View File

@ -202,25 +202,30 @@ class ChainBase(AbstractSingleton, metaclass=Singleton):
return self.run_module("filter_torrents", rule_string=rule_string,
torrent_list=torrent_list, season_episodes=season_episodes)
def download(self, torrent_path: Path, cookie: str,
episodes: Set[int] = None) -> Optional[Tuple[Optional[str], str]]:
def download(self, torrent_path: Path, download_dir: Path, cookie: str,
episodes: Set[int] = None,
) -> Optional[Tuple[Optional[str], str]]:
"""
根据种子文件,选择并添加下载任务
:param torrent_path: 种子文件地址
:param download_dir: 下载目录
:param cookie: cookie
:param episodes: 需要下载的集数
:return: 种子Hash错误信息
"""
return self.run_module("download", torrent_path=torrent_path, cookie=cookie, episodes=episodes)
return self.run_module("download", torrent_path=torrent_path, download_dir=download_dir,
cookie=cookie, episodes=episodes, )
def download_added(self, context: Context, torrent_path: Path) -> None:
def download_added(self, context: Context, torrent_path: Path, download_dir: Path) -> None:
"""
添加下载任务成功后,从站点下载字幕,保存到下载目录
:param context: 上下文,包括识别信息、媒体信息、种子信息
:param torrent_path: 种子文件地址
:param download_dir: 下载目录
:return: None该方法可被多个模块同时处理
"""
return self.run_module("download_added", context=context, torrent_path=torrent_path)
return self.run_module("download_added", context=context, torrent_path=torrent_path,
download_dir=download_dir)
def list_torrents(self, status: TorrentStatus = None,
hashs: Union[list, str] = None) -> Optional[List[Union[TransferTorrent, DownloadingTorrent]]]:

View File

@ -3,6 +3,7 @@ from pathlib import Path
from typing import List, Optional, Tuple, Set, Dict, Union
from app.chain import ChainBase
from app.core.config import settings
from app.core.context import MediaInfo, TorrentInfo, Context
from app.core.meta import MetaBase
from app.db.downloadhistory_oper import DownloadHistoryOper
@ -101,10 +102,16 @@ class DownloadChain(ChainBase):
torrent_file, _folder_name, _ = self.download_torrent(_torrent, userid=userid)
if not torrent_file:
return
# 下载目录
if settings.DOWNLOAD_CATEGORY and _media and _media.category:
download_dir = Path(settings.DOWNLOAD_PATH) / _media.category
else:
download_dir = Path(settings.DOWNLOAD_PATH)
# 添加下载
result: Optional[tuple] = self.download(torrent_path=torrent_file,
cookie=_torrent.site_cookie,
episodes=episodes)
episodes=episodes,
download_dir=download_dir)
if result:
_hash, error_msg = result
else:
@ -133,7 +140,7 @@ class DownloadChain(ChainBase):
self.post_download_message(meta=_meta, mediainfo=_media, torrent=_torrent,
channel=channel, userid=userid)
# 下载成功后处理
self.download_added(context=context, torrent_path=torrent_file)
self.download_added(context=context, torrent_path=torrent_file, download_dir=download_dir)
# 广播事件
self.eventmanager.send_event(EventType.DownloadAdded, {
"hash": _hash,