fix 目录监控从表中查询download_hash
This commit is contained in:
parent
84cbeaada2
commit
cb41086fa3
@ -20,8 +20,6 @@ from app.core.metainfo import MetaInfo
|
|||||||
from app.db.downloadhistory_oper import DownloadHistoryOper
|
from app.db.downloadhistory_oper import DownloadHistoryOper
|
||||||
from app.db.transferhistory_oper import TransferHistoryOper
|
from app.db.transferhistory_oper import TransferHistoryOper
|
||||||
from app.log import logger
|
from app.log import logger
|
||||||
from app.modules.qbittorrent import Qbittorrent
|
|
||||||
from app.modules.transmission import Transmission
|
|
||||||
from app.plugins import _PluginBase
|
from app.plugins import _PluginBase
|
||||||
from app.schemas import Notification, NotificationType, TransferInfo
|
from app.schemas import Notification, NotificationType, TransferInfo
|
||||||
from app.schemas.types import EventType, MediaType
|
from app.schemas.types import EventType, MediaType
|
||||||
@ -90,8 +88,6 @@ class DirMonitor(_PluginBase):
|
|||||||
_exclude_keywords = ""
|
_exclude_keywords = ""
|
||||||
# 存储源目录与目的目录关系
|
# 存储源目录与目的目录关系
|
||||||
_dirconf: Dict[str, Path] = {}
|
_dirconf: Dict[str, Path] = {}
|
||||||
qb = None
|
|
||||||
tr = None
|
|
||||||
_medias = {}
|
_medias = {}
|
||||||
# 退出事件
|
# 退出事件
|
||||||
_event = Event()
|
_event = Event()
|
||||||
@ -117,8 +113,6 @@ class DirMonitor(_PluginBase):
|
|||||||
self.stop_service()
|
self.stop_service()
|
||||||
|
|
||||||
if self._enabled:
|
if self._enabled:
|
||||||
self.qb = Qbittorrent()
|
|
||||||
self.tr = Transmission()
|
|
||||||
self._scheduler = BackgroundScheduler(timezone=settings.TZ)
|
self._scheduler = BackgroundScheduler(timezone=settings.TZ)
|
||||||
|
|
||||||
# 启动任务
|
# 启动任务
|
||||||
@ -294,8 +288,7 @@ class DirMonitor(_PluginBase):
|
|||||||
return
|
return
|
||||||
|
|
||||||
# 获取downloadhash
|
# 获取downloadhash
|
||||||
download_hash = self.get_download_hash(src=file_path,
|
download_hash = self.get_download_hash(src=str(file_path))
|
||||||
tmdb_id=mediainfo.tmdb_id)
|
|
||||||
|
|
||||||
target_path = str(transferinfo.file_list_new[0]) if transferinfo.file_list_new else str(
|
target_path = str(transferinfo.file_list_new[0]) if transferinfo.file_list_new else str(
|
||||||
transferinfo.target_path)
|
transferinfo.target_path)
|
||||||
@ -488,65 +481,13 @@ class DirMonitor(_PluginBase):
|
|||||||
del self._medias[medis_title_year_season]
|
del self._medias[medis_title_year_season]
|
||||||
continue
|
continue
|
||||||
|
|
||||||
def get_download_hash(self, src: Path, tmdb_id: int):
|
def get_download_hash(self, src: str):
|
||||||
"""
|
"""
|
||||||
FIXME 从表中获取download_hash,避免连接下载器
|
从表中获取download_hash,避免连接下载器
|
||||||
"""
|
"""
|
||||||
file_name = src.name
|
downloadHis = self.downloadhis.get_file_by_fullpath(src)
|
||||||
downloadHis = self.downloadhis.get_last_by(tmdbid=tmdb_id)
|
|
||||||
if downloadHis:
|
if downloadHis:
|
||||||
for his in downloadHis:
|
return downloadHis.download_hash
|
||||||
# qb
|
|
||||||
if settings.DOWNLOADER == "qbittorrent":
|
|
||||||
files = self.qb.get_files(tid=his.download_hash)
|
|
||||||
if files:
|
|
||||||
for file in files:
|
|
||||||
torrent_file_name = file.get("name")
|
|
||||||
if file_name == Path(torrent_file_name).name:
|
|
||||||
return his.download_hash
|
|
||||||
# tr
|
|
||||||
if settings.DOWNLOADER == "transmission":
|
|
||||||
files = self.tr.get_files(tid=his.download_hash)
|
|
||||||
if files:
|
|
||||||
for file in files:
|
|
||||||
torrent_file_name = file.name
|
|
||||||
if file_name == Path(torrent_file_name).name:
|
|
||||||
return his.download_hash
|
|
||||||
|
|
||||||
# 尝试获取下载任务补充download_hash
|
|
||||||
logger.debug(f"转移记录 {src} 缺失download_hash,尝试补充……")
|
|
||||||
|
|
||||||
# 获取tr、qb所有种子
|
|
||||||
qb_torrents, _ = self.qb.get_torrents()
|
|
||||||
tr_torrents, _ = self.tr.get_torrents()
|
|
||||||
|
|
||||||
# 种子名称
|
|
||||||
torrent_name = str(src).split("/")[-1]
|
|
||||||
torrent_name2 = str(src).split("/")[-2]
|
|
||||||
|
|
||||||
# 处理下载器
|
|
||||||
for torrent in qb_torrents:
|
|
||||||
if str(torrent.get("name")) == str(torrent_name) \
|
|
||||||
or str(torrent.get("name")) == str(torrent_name2):
|
|
||||||
files = self.qb.get_files(tid=torrent.get("hash"))
|
|
||||||
if files:
|
|
||||||
for file in files:
|
|
||||||
torrent_file_name = file.get("name")
|
|
||||||
if file_name == Path(torrent_file_name).name:
|
|
||||||
return torrent.get("hash")
|
|
||||||
|
|
||||||
# 处理辅种器 遍历所有种子,按照添加时间升序
|
|
||||||
if len(tr_torrents) > 0:
|
|
||||||
tr_torrents = sorted(tr_torrents, key=lambda x: x.added_date)
|
|
||||||
for torrent in tr_torrents:
|
|
||||||
if str(torrent.get("name")) == str(torrent_name) \
|
|
||||||
or str(torrent.get("name")) == str(torrent_name2):
|
|
||||||
files = self.tr.get_files(tid=torrent.get("hashString"))
|
|
||||||
if files:
|
|
||||||
for file in files:
|
|
||||||
torrent_file_name = file.name
|
|
||||||
if file_name == Path(torrent_file_name).name:
|
|
||||||
return torrent.get("hashString")
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_state(self) -> bool:
|
def get_state(self) -> bool:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user