This commit is contained in:
jxxghp 2023-08-31 07:14:57 +08:00
parent f0666986f0
commit 17fcd77b8e
4 changed files with 47 additions and 14 deletions

View File

@ -255,19 +255,19 @@ class TransferChain(ChainBase):
medias[file_mediainfo.tmdb_id] = file_mediainfo
transfers[file_mediainfo.tmdb_id] = transferinfo
else:
# 合并元数据
# 合并元数据
if (metas[file_mediainfo.tmdb_id].begin_episode or 0) > (file_meta.begin_episode or 0):
metas[file_mediainfo.tmdb_id].begin_episode = file_meta.begin_episode
if (metas[file_mediainfo.tmdb_id].end_episode or 0) < (file_meta.end_episode or 0):
metas[file_mediainfo.tmdb_id].end_episode = file_meta.end_episode
metas[file_mediainfo.tmdb_id].total_episode += file_meta.total_episode
# 合并元数据季
# 合并元数据季
if (metas[file_mediainfo.tmdb_id].begin_season or 0) > (file_meta.begin_season or 0):
metas[file_mediainfo.tmdb_id].begin_season = file_meta.begin_season
if (metas[file_mediainfo.tmdb_id].end_season or 0) < (file_meta.end_season or 0):
metas[file_mediainfo.tmdb_id].end_season = file_meta.end_season
metas[file_mediainfo.tmdb_id].total_season += file_meta.total_season
# 合并转移
# 合并转移数据
transfers[file_mediainfo.tmdb_id].file_count += transferinfo.file_count
transfers[file_mediainfo.tmdb_id].file_list.extend(transferinfo.file_list)
transfers[file_mediainfo.tmdb_id].file_list_new.extend(transferinfo.file_list_new)
@ -502,7 +502,7 @@ class TransferChain(ChainBase):
"""
新增转移成功历史记录
"""
self.transferhis.add(
self.transferhis.add_force(
src=str(src_path),
dest=str(transferinfo.target_path),
mode=settings.TRANSFER_TYPE,
@ -525,10 +525,10 @@ class TransferChain(ChainBase):
def __insert_fail_history(self, src_path: Path, download_hash: str, meta: MetaBase,
transferinfo: TransferInfo = None, mediainfo: MediaInfo = None):
"""
新增转移失败历史记录不能按download_hash判重
新增转移失败历史记录
"""
if mediainfo and transferinfo:
his = self.transferhis.add(
his = self.transferhis.add_force(
src=str(src_path),
dest=str(transferinfo.target_path),
mode=settings.TRANSFER_TYPE,
@ -549,7 +549,7 @@ class TransferChain(ChainBase):
files=json.dumps(transferinfo.file_list)
)
else:
his = self.transferhis.add(
his = self.transferhis.add_force(
title=meta.name,
year=meta.year,
src=str(src_path),
@ -562,8 +562,8 @@ class TransferChain(ChainBase):
)
return his
def send_transfer_message(self, meta: MetaBase, mediainfo: MediaInfo, transferinfo: TransferInfo,
season_episode: str = None):
def send_transfer_message(self, meta: MetaBase, mediainfo: MediaInfo,
transferinfo: TransferInfo, season_episode: str = None):
"""
发送入库成功的消息
"""

View File

@ -89,3 +89,36 @@ class DownloadHistory(Base):
DownloadHistory.seasons == season,
DownloadHistory.episodes == episode).order_by(
DownloadHistory.id.desc()).all()
class DownloadFiles(Base):
"""
下载文件记录
"""
id = Column(Integer, Sequence('id'), primary_key=True, index=True)
# 下载任务Hash
download_hash = Column(String, index=True)
# 下载器
downloader = Column(String)
# 完整路径
fullpath = Column(String, index=True)
# 保存路径
savepath = Column(String, index=True)
# 文件相对路径/名称
filepath = Column(String)
# 种子名称
torrentname = Column(String)
# 状态 0-已删除 1-正常
state = Column(Integer, nullable=False, default=1)
@staticmethod
def get_by_hash(db: Session, download_hash: str):
return db.query(DownloadFiles).filter(DownloadFiles.download_hash == download_hash).all()
@staticmethod
def get_by_full_path(db: Session, fullpath: str):
return db.query(DownloadFiles).filter(DownloadFiles.fullpath == fullpath).first()
@staticmethod
def get_by_save_path(db: Session, savepath: str):
return db.query(DownloadFiles).filter(DownloadFiles.savepath == savepath).all()

View File

@ -354,7 +354,7 @@ class FileTransferModule(_ModuleBase):
and mediainfo.genre_ids \
and set(mediainfo.genre_ids).intersection(set(settings.ANIME_GENREIDS)):
# 动漫
target_dir = target_dir / settings.LIBRARY_ANIME_NAME / mediainfo.category
target_dir = target_dir / settings.LIBRARY_ANIME_NAME
elif settings.LIBRARY_TV_NAME:
# 电视剧
target_dir = target_dir / settings.LIBRARY_TV_NAME / mediainfo.category
@ -390,7 +390,7 @@ class FileTransferModule(_ModuleBase):
# 返回转移后的路径
return TransferInfo(path=in_path,
target_path=new_path,
total_size=in_path.stat().st_size,
total_size=new_path.stat().st_size,
is_bluray=bluray_flag)
else:
# 转移单个文件
@ -444,9 +444,9 @@ class FileTransferModule(_ModuleBase):
logger.info(f"文件 {in_path} 转移成功")
return TransferInfo(path=in_path,
target_path=new_file,
target_path=new_file.parent,
file_count=1,
total_size=in_path.stat().st_size,
total_size=new_file.stat().st_size,
is_bluray=False,
file_list=[in_path],
file_list_new=[new_file])

View File

@ -490,7 +490,7 @@ class DirMonitor(_PluginBase):
def get_download_hash(self, src: Path, tmdb_id: int):
"""
获取download_hash
FIXME 从表中获取download_hash避免连接下载器
"""
file_name = src.name
downloadHis = self.downloadhis.get_last_by(tmdbid=tmdb_id)