fix 目录监控登录转移方式错误

This commit is contained in:
jxxghp 2023-09-02 21:22:03 +08:00
parent 212e2f1287
commit 59b947fa65
3 changed files with 86 additions and 153 deletions

View File

@ -1,4 +1,3 @@
import json
import shutil import shutil
import threading import threading
from pathlib import Path from pathlib import Path
@ -188,10 +187,11 @@ class TransferChain(ChainBase):
if not file_mediainfo: if not file_mediainfo:
logger.warn(f'{file_path} 未识别到媒体信息') logger.warn(f'{file_path} 未识别到媒体信息')
# 新增转移失败历史记录 # 新增转移失败历史记录
his = self.__insert_fail_history( his = self.transferhis.add_fail(
src_path=file_path, src_path=file_path,
download_hash=download_hash, mode=settings.TRANSFER_TYPE,
meta=file_meta meta=file_meta,
download_hash=download_hash
) )
self.post_message(Notification( self.post_message(Notification(
mtype=NotificationType.Manual, mtype=NotificationType.Manual,
@ -225,8 +225,9 @@ class TransferChain(ChainBase):
logger.warn(f"{file_path.name} 入库失败:{transferinfo.message}") logger.warn(f"{file_path.name} 入库失败:{transferinfo.message}")
err_msgs.append(f"{file_path.name} {transferinfo.message}") err_msgs.append(f"{file_path.name} {transferinfo.message}")
# 新增转移失败历史记录 # 新增转移失败历史记录
self.__insert_fail_history( self.transferhis.add_fail(
src_path=file_path, src_path=file_path,
mode=settings.TRANSFER_TYPE,
download_hash=download_hash, download_hash=download_hash,
meta=file_meta, meta=file_meta,
mediainfo=file_mediainfo, mediainfo=file_mediainfo,
@ -259,8 +260,9 @@ class TransferChain(ChainBase):
transfers[mkey].fail_list.extend(transferinfo.fail_list) transfers[mkey].fail_list.extend(transferinfo.fail_list)
# 新增转移成功历史记录 # 新增转移成功历史记录
self.__insert_sucess_history( self.transferhis.add_success(
src_path=file_path, src_path=file_path,
mode=settings.TRANSFER_TYPE,
download_hash=download_hash, download_hash=download_hash,
meta=file_meta, meta=file_meta,
mediainfo=file_mediainfo, mediainfo=file_mediainfo,
@ -486,72 +488,6 @@ class TransferChain(ChainBase):
min_filesize=min_filesize) min_filesize=min_filesize)
return state, errmsg return state, errmsg
def __insert_sucess_history(self, src_path: Path, meta: MetaBase,
mediainfo: MediaInfo, transferinfo: TransferInfo,
download_hash: str = None):
"""
新增转移成功历史记录
"""
self.transferhis.add_force(
src=str(src_path),
dest=str(transferinfo.target_path),
mode=settings.TRANSFER_TYPE,
type=mediainfo.type.value,
category=mediainfo.category,
title=mediainfo.title,
year=mediainfo.year,
tmdbid=mediainfo.tmdb_id,
imdbid=mediainfo.imdb_id,
tvdbid=mediainfo.tvdb_id,
doubanid=mediainfo.douban_id,
seasons=meta.season,
episodes=meta.episode,
image=mediainfo.get_poster_image(),
download_hash=download_hash,
status=1,
files=json.dumps(transferinfo.file_list)
)
def __insert_fail_history(self, src_path: Path, download_hash: str, meta: MetaBase,
transferinfo: TransferInfo = None, mediainfo: MediaInfo = None):
"""
新增转移失败历史记录
"""
if mediainfo and transferinfo:
his = self.transferhis.add_force(
src=str(src_path),
dest=str(transferinfo.target_path),
mode=settings.TRANSFER_TYPE,
type=mediainfo.type.value,
category=mediainfo.category,
title=mediainfo.title or meta.name,
year=mediainfo.year or meta.year,
tmdbid=mediainfo.tmdb_id,
imdbid=mediainfo.imdb_id,
tvdbid=mediainfo.tvdb_id,
doubanid=mediainfo.douban_id,
seasons=meta.season,
episodes=meta.episode,
image=mediainfo.get_poster_image(),
download_hash=download_hash,
status=0,
errmsg=transferinfo.message or '未知错误',
files=json.dumps(transferinfo.file_list)
)
else:
his = self.transferhis.add_force(
title=meta.name,
year=meta.year,
src=str(src_path),
mode=settings.TRANSFER_TYPE,
seasons=meta.season,
episodes=meta.episode,
download_hash=download_hash,
status=0,
errmsg="未识别到媒体信息"
)
return his
def send_transfer_message(self, meta: MetaBase, mediainfo: MediaInfo, def send_transfer_message(self, meta: MetaBase, mediainfo: MediaInfo,
transferinfo: TransferInfo, season_episode: str = None): transferinfo: TransferInfo, season_episode: str = None):
""" """

View File

@ -1,8 +1,13 @@
import json
import time import time
from pathlib import Path
from typing import Any, List from typing import Any, List
from app.core.context import MediaInfo
from app.core.meta import MetaBase
from app.db import DbOper from app.db import DbOper
from app.db.models.transferhistory import TransferHistory from app.db.models.transferhistory import TransferHistory
from app.schemas import TransferInfo
class TransferHistoryOper(DbOper): class TransferHistoryOper(DbOper):
@ -88,3 +93,69 @@ class TransferHistoryOper(DbOper):
补充转移记录download_hash 补充转移记录download_hash
""" """
TransferHistory.update_download_hash(self._db, historyid, download_hash) TransferHistory.update_download_hash(self._db, historyid, download_hash)
def add_success(self, src_path: Path, mode: str, meta: MetaBase,
mediainfo: MediaInfo, transferinfo: TransferInfo,
download_hash: str = None):
"""
新增转移成功历史记录
"""
self.add_force(
src=str(src_path),
dest=str(transferinfo.target_path),
mode=mode,
type=mediainfo.type.value,
category=mediainfo.category,
title=mediainfo.title,
year=mediainfo.year,
tmdbid=mediainfo.tmdb_id,
imdbid=mediainfo.imdb_id,
tvdbid=mediainfo.tvdb_id,
doubanid=mediainfo.douban_id,
seasons=meta.season,
episodes=meta.episode,
image=mediainfo.get_poster_image(),
download_hash=download_hash,
status=1,
files=json.dumps(transferinfo.file_list)
)
def add_fail(self, src_path: Path, mode: str, meta: MetaBase, mediainfo: MediaInfo = None,
transferinfo: TransferInfo = None, download_hash: str = None):
"""
新增转移失败历史记录
"""
if mediainfo and transferinfo:
his = self.add_force(
src=str(src_path),
dest=str(transferinfo.target_path),
mode=mode,
type=mediainfo.type.value,
category=mediainfo.category,
title=mediainfo.title or meta.name,
year=mediainfo.year or meta.year,
tmdbid=mediainfo.tmdb_id,
imdbid=mediainfo.imdb_id,
tvdbid=mediainfo.tvdb_id,
doubanid=mediainfo.douban_id,
seasons=meta.season,
episodes=meta.episode,
image=mediainfo.get_poster_image(),
download_hash=download_hash,
status=0,
errmsg=transferinfo.message or '未知错误',
files=json.dumps(transferinfo.file_list)
)
else:
his = self.add_force(
title=meta.name,
year=meta.year,
src=str(src_path),
mode=mode,
seasons=meta.season,
episodes=meta.episode,
download_hash=download_hash,
status=0,
errmsg="未识别到媒体信息"
)
return his

View File

@ -1,8 +1,6 @@
import json
import re import re
import shutil import shutil
import threading import threading
import time
import traceback import traceback
from datetime import datetime from datetime import datetime
from pathlib import Path from pathlib import Path
@ -17,7 +15,6 @@ from watchdog.observers.polling import PollingObserver
from app.chain.transfer import TransferChain from app.chain.transfer import TransferChain
from app.core.config import settings from app.core.config import settings
from app.core.context import MediaInfo from app.core.context import MediaInfo
from app.core.meta import MetaBase
from app.core.metainfo import MetaInfo 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
@ -251,17 +248,10 @@ class DirMonitor(_PluginBase):
title=f"{file_path.name} 未识别到媒体信息,无法入库!" title=f"{file_path.name} 未识别到媒体信息,无法入库!"
)) ))
# 新增转移成功历史记录 # 新增转移成功历史记录
self.transferhis.add_force( self.transferhis.add_fail(
src=event_path, src_path=file_path,
dest=str(target),
mode=self._transfer_type, mode=self._transfer_type,
title=meta.name, meta=file_meta
year=meta.year,
seasons=file_meta.season,
episodes=file_meta.episode,
status=0,
errmsg="未识别到媒体信息",
date=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
) )
return return
logger.info(f"{file_path.name} 识别为:{mediainfo.type.value} {mediainfo.title_year}") logger.info(f"{file_path.name} 识别为:{mediainfo.type.value} {mediainfo.title_year}")
@ -286,8 +276,9 @@ class DirMonitor(_PluginBase):
# 转移失败 # 转移失败
logger.warn(f"{file_path.name} 入库失败:{transferinfo.message}") logger.warn(f"{file_path.name} 入库失败:{transferinfo.message}")
# 新增转移失败历史记录 # 新增转移失败历史记录
self.__insert_fail_history( self.transferhis.add_fail(
src_path=file_path, src_path=file_path,
mode=self._transfer_type,
download_hash=download_hash, download_hash=download_hash,
meta=file_meta, meta=file_meta,
mediainfo=mediainfo, mediainfo=mediainfo,
@ -302,8 +293,9 @@ class DirMonitor(_PluginBase):
return return
# 新增转移成功历史记录 # 新增转移成功历史记录
self.__insert_sucess_history( self.transferhis.add_success(
src_path=file_path, src_path=file_path,
mode=self._transfer_type,
download_hash=download_hash, download_hash=download_hash,
meta=file_meta, meta=file_meta,
mediainfo=mediainfo, mediainfo=mediainfo,
@ -467,72 +459,6 @@ class DirMonitor(_PluginBase):
return downloadHis.download_hash return downloadHis.download_hash
return None return None
def __insert_sucess_history(self, src_path: Path, meta: MetaBase,
mediainfo: MediaInfo, transferinfo: TransferInfo,
download_hash: str = None):
"""
新增转移成功历史记录
"""
self.transferhis.add_force(
src=str(src_path),
dest=str(transferinfo.target_path),
mode=self._transfer_type,
type=mediainfo.type.value,
category=mediainfo.category,
title=mediainfo.title,
year=mediainfo.year,
tmdbid=mediainfo.tmdb_id,
imdbid=mediainfo.imdb_id,
tvdbid=mediainfo.tvdb_id,
doubanid=mediainfo.douban_id,
seasons=meta.season,
episodes=meta.episode,
image=mediainfo.get_poster_image(),
download_hash=download_hash,
status=1,
files=json.dumps(transferinfo.file_list)
)
def __insert_fail_history(self, src_path: Path, download_hash: str, meta: MetaBase,
transferinfo: TransferInfo = None, mediainfo: MediaInfo = None):
"""
新增转移失败历史记录
"""
if mediainfo and transferinfo:
his = self.transferhis.add_force(
src=str(src_path),
dest=str(transferinfo.target_path),
mode=settings.TRANSFER_TYPE,
type=mediainfo.type.value,
category=mediainfo.category,
title=mediainfo.title or meta.name,
year=mediainfo.year or meta.year,
tmdbid=mediainfo.tmdb_id,
imdbid=mediainfo.imdb_id,
tvdbid=mediainfo.tvdb_id,
doubanid=mediainfo.douban_id,
seasons=meta.season,
episodes=meta.episode,
image=mediainfo.get_poster_image(),
download_hash=download_hash,
status=0,
errmsg=transferinfo.message or '未知错误',
files=json.dumps(transferinfo.file_list)
)
else:
his = self.transferhis.add_force(
title=meta.name,
year=meta.year,
src=str(src_path),
mode=settings.TRANSFER_TYPE,
seasons=meta.season,
episodes=meta.episode,
download_hash=download_hash,
status=0,
errmsg="未识别到媒体信息"
)
return his
def get_state(self) -> bool: def get_state(self) -> bool:
return self._enabled return self._enabled