From 44d4bcdd19c17fce754563b3b805fc633f2c4563 Mon Sep 17 00:00:00 2001 From: thsrite Date: Thu, 7 Sep 2023 10:16:44 +0800 Subject: [PATCH 1/8] =?UTF-8?q?fix=20=E7=9B=AE=E5=BD=95=E7=9B=91=E6=8E=A7?= =?UTF-8?q?=E5=B7=B2=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/plugins/dirmonitor/__init__.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/plugins/dirmonitor/__init__.py b/app/plugins/dirmonitor/__init__.py index 48ab6ecd..70be7087 100644 --- a/app/plugins/dirmonitor/__init__.py +++ b/app/plugins/dirmonitor/__init__.py @@ -69,9 +69,6 @@ class DirMonitor(_PluginBase): # 可使用的用户级别 auth_level = 1 - # 已处理的文件清单 - _synced_files = [] - # 私有属性 _scheduler = None transferhis = None @@ -193,9 +190,8 @@ class DirMonitor(_PluginBase): # 全程加锁 with lock: - if event_path not in self._synced_files: - self._synced_files.append(event_path) - else: + transfer_history = self.transferhis.get_by_src(event_path) + if transfer_history: logger.debug("文件已处理过:%s" % event_path) return From e5dc40e3c1cf92ce686bbfbf96b5965bb9eb4e3c Mon Sep 17 00:00:00 2001 From: thsrite Date: Thu, 7 Sep 2023 10:24:21 +0800 Subject: [PATCH 2/8] =?UTF-8?q?fix=20token=E8=BF=87=E6=9C=9F=E5=90=8E?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E8=8E=B7=E5=8F=96=E3=80=81=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E5=8F=91=E9=80=81=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/plugins/messageforward/__init__.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/app/plugins/messageforward/__init__.py b/app/plugins/messageforward/__init__.py index 52855564..4927ab2d 100644 --- a/app/plugins/messageforward/__init__.py +++ b/app/plugins/messageforward/__init__.py @@ -303,7 +303,7 @@ class MessageForward(_PluginBase): "enable_id_trans": 0, "enable_duplicate_check": 0 } - return self.__post_request(message_url, req_json, i, title) + return self.__post_request(message_url=message_url, req_json=req_json, i=i, title=title) def __send_image_message(self, title: str, text: str, image_url: str, userid: str = None, access_token: str = None, appid: str = None, i: int = None) -> Optional[bool]: @@ -335,9 +335,9 @@ class MessageForward(_PluginBase): ] } } - return self.__post_request(message_url, req_json, i, title) + return self.__post_request(message_url=message_url, req_json=req_json, i=i, title=title) - def __post_request(self, message_url: str, req_json: dict, i: int, title: str) -> bool: + def __post_request(self, message_url: str, req_json: dict, i: int, title: str, retry: int = 0) -> bool: """ 向微信发送请求 """ @@ -355,6 +355,11 @@ class MessageForward(_PluginBase): if ret_json.get('errcode') == 42001: # 重新获取token self.__flush_access_token(i) + retry += 1 + # 重发请求 + if retry <= 3: + self.__post_request(message_url=message_url, req_json=req_json, i=i, title=title, + retry=retry) logger.error(f"转发消息 {title} 失败,错误信息:{ret_json}") return False elif res is not None: @@ -364,7 +369,7 @@ class MessageForward(_PluginBase): logger.error(f"转发消息 {title} 失败,未获取到返回信息") return False except Exception as err: - logger.error(f"转发消息 {title} 失败,错误信息:{err}") + logger.error(f"转发消息 {title} 异常,错误信息:{err}") return False def __get_access_token(self, corpid, appsecret): From b01621049b3e64d1b63f30d6ca380c93f950b45d Mon Sep 17 00:00:00 2001 From: thsrite Date: Thu, 7 Sep 2023 10:55:01 +0800 Subject: [PATCH 3/8] =?UTF-8?q?feat=20=E6=96=B0=E5=A2=9E=E5=B7=B2=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E5=AA=92=E4=BD=93=E6=98=AF=E5=90=A6=E8=B7=9F=E9=9A=8F?= =?UTF-8?q?TMDB=E4=BF=A1=E6=81=AF=E5=8F=98=E5=8C=96=E5=BC=80=E5=85=B3?= =?UTF-8?q?=EF=BC=8C=E5=85=B3=E9=97=AD=E5=88=99=E5=BB=B6=E7=94=A8=E5=AA=92?= =?UTF-8?q?=E4=BD=93=E5=BA=93=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + app/chain/transfer.py | 5 + app/core/config.py | 2 + app/plugins/dirmonitor/__init__.py | 292 +++++++++++++------------ app/plugins/libraryscraper/__init__.py | 8 + 5 files changed, 165 insertions(+), 143 deletions(-) diff --git a/README.md b/README.md index 149d1e3d..11117996 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,7 @@ docker pull jxxghp/moviepilot:latest - **DOWNLOAD_SUBTITLE:** 下载站点字幕,`true`/`false`,默认`true` - **REFRESH_MEDIASERVER:** 入库刷新媒体库,`true`/`false`,默认`true` - **SCRAP_METADATA:** 刮削入库的媒体文件,`true`/`false`,默认`true` +- **SCRAP_FOLLOW_TMDB:** 新增已入库媒体是否跟随TMDB信息变化,`true`/`false`,默认`true` - **TORRENT_TAG:** 种子标签,默认为`MOVIEPILOT`,设置后只有MoviePilot添加的下载才会处理,留空所有下载器中的任务均会处理 - **LIBRARY_PATH:** 媒体库目录,多个目录使用`,`分隔 - **LIBRARY_MOVIE_NAME:** 电影媒体库目录名,默认`电影` diff --git a/app/chain/transfer.py b/app/chain/transfer.py index d841b666..868409a7 100644 --- a/app/chain/transfer.py +++ b/app/chain/transfer.py @@ -351,6 +351,11 @@ class TransferChain(ChainBase): # 媒体目录 if transfer_info.target_path.is_file(): transfer_info.target_path = transfer_info.target_path.parent + # 如果未开启新增已入库媒体是否跟随TMDB信息变化则根据tmdbid查询之前的title + if not settings.SCRAP_FOLLOW_TMDB: + transfer_historys = self.transferhis.get_by(tmdbid=str(mediainfo.tmdb_id)) + if not transfer_historys: + mediainfo.title = transfer_historys[0].title # 刮削 self.scrape_metadata(path=transfer_info.target_path, mediainfo=media) # 刷新媒体库,根目录或季目录 diff --git a/app/core/config.py b/app/core/config.py index debf69c0..5833aebb 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -39,6 +39,8 @@ class Settings(BaseSettings): SEARCH_SOURCE: str = "themoviedb" # 刮削入库的媒体文件 SCRAP_METADATA: bool = True + # 新增已入库媒体是否跟随TMDB信息变化 + SCRAP_FOLLOW_TMDB: bool = True # 刮削来源 SCRAP_SOURCE: str = "themoviedb" # TMDB图片地址 diff --git a/app/plugins/dirmonitor/__init__.py b/app/plugins/dirmonitor/__init__.py index 70be7087..4fa70664 100644 --- a/app/plugins/dirmonitor/__init__.py +++ b/app/plugins/dirmonitor/__init__.py @@ -308,6 +308,12 @@ class DirMonitor(_PluginBase): transferinfo=transferinfo ) + # 如果未开启新增已入库媒体是否跟随TMDB信息变化则根据tmdbid查询之前的title + if not settings.SCRAP_FOLLOW_TMDB: + transfer_historys = self.transferhis.get_by(tmdbid=str(mediainfo.tmdb_id)) + if not transfer_historys: + mediainfo.title = transfer_historys[0].title + # 刮削元数据,根目录或季目录 self.chain.scrape_metadata(path=transferinfo.target_path.parent, mediainfo=mediainfo) @@ -478,149 +484,149 @@ class DirMonitor(_PluginBase): def get_form(self) -> Tuple[List[dict], Dict[str, Any]]: return [ - { - 'component': 'VForm', - 'content': [ - { - 'component': 'VRow', - 'content': [ - { - 'component': 'VCol', - 'props': { - 'cols': 12, - 'md': 6 - }, - 'content': [ - { - 'component': 'VSwitch', - 'props': { - 'model': 'enabled', - 'label': '启用插件', - } - } - ] - }, - { - 'component': 'VCol', - 'props': { - 'cols': 12, - 'md': 6 - }, - 'content': [ - { - 'component': 'VSwitch', - 'props': { - 'model': 'notify', - 'label': '发送通知', - } - } - ] - } - ] - }, - { - 'component': 'VRow', - 'content': [ - { - 'component': 'VCol', - 'props': { - 'cols': 12, - 'md': 6 - }, - 'content': [ - { - 'component': 'VSelect', - 'props': { - 'model': 'mode', - 'label': '监控模式', - 'items': [ - {'title': '兼容模式', 'value': 'compatibility'}, - {'title': '性能模式', 'value': 'fast'} - ] - } - } - ] - }, - { - 'component': 'VCol', - 'props': { - 'cols': 12, - 'md': 6 - }, - 'content': [ - { - 'component': 'VSelect', - 'props': { - 'model': 'transfer_type', - 'label': '转移方式', - 'items': [ - {'title': '移动', 'value': 'move'}, - {'title': '复制', 'value': 'copy'}, - {'title': '硬链接', 'value': 'link'}, - {'title': '软链接', 'value': 'softlink'} - ] - } - } - ] - } - ] - }, - { - 'component': 'VRow', - 'content': [ - { - 'component': 'VCol', - 'props': { - 'cols': 12 - }, - 'content': [ - { - 'component': 'VTextarea', - 'props': { - 'model': 'monitor_dirs', - 'label': '监控目录', - 'rows': 5, - 'placeholder': '每一行一个目录,支持两种配置方式:\n' - '监控目录\n' - '监控目录:转移目的目录' - } - } - ] - } - ] - }, - { - 'component': 'VRow', - 'content': [ - { - 'component': 'VCol', - 'props': { - 'cols': 12 - }, - 'content': [ - { - 'component': 'VTextarea', - 'props': { - 'model': 'exclude_keywords', - 'label': '排除关键词', - 'rows': 2, - 'placeholder': '每一行一个关键词' - } - } - ] - } - ] - } - ] - } - ], { - "enabled": False, - "notify": False, - "mode": "fast", - "transfer_type": settings.TRANSFER_TYPE, - "monitor_dirs": "", - "exclude_keywords": "" - } + { + 'component': 'VForm', + 'content': [ + { + 'component': 'VRow', + 'content': [ + { + 'component': 'VCol', + 'props': { + 'cols': 12, + 'md': 6 + }, + 'content': [ + { + 'component': 'VSwitch', + 'props': { + 'model': 'enabled', + 'label': '启用插件', + } + } + ] + }, + { + 'component': 'VCol', + 'props': { + 'cols': 12, + 'md': 6 + }, + 'content': [ + { + 'component': 'VSwitch', + 'props': { + 'model': 'notify', + 'label': '发送通知', + } + } + ] + } + ] + }, + { + 'component': 'VRow', + 'content': [ + { + 'component': 'VCol', + 'props': { + 'cols': 12, + 'md': 6 + }, + 'content': [ + { + 'component': 'VSelect', + 'props': { + 'model': 'mode', + 'label': '监控模式', + 'items': [ + {'title': '兼容模式', 'value': 'compatibility'}, + {'title': '性能模式', 'value': 'fast'} + ] + } + } + ] + }, + { + 'component': 'VCol', + 'props': { + 'cols': 12, + 'md': 6 + }, + 'content': [ + { + 'component': 'VSelect', + 'props': { + 'model': 'transfer_type', + 'label': '转移方式', + 'items': [ + {'title': '移动', 'value': 'move'}, + {'title': '复制', 'value': 'copy'}, + {'title': '硬链接', 'value': 'link'}, + {'title': '软链接', 'value': 'softlink'} + ] + } + } + ] + } + ] + }, + { + 'component': 'VRow', + 'content': [ + { + 'component': 'VCol', + 'props': { + 'cols': 12 + }, + 'content': [ + { + 'component': 'VTextarea', + 'props': { + 'model': 'monitor_dirs', + 'label': '监控目录', + 'rows': 5, + 'placeholder': '每一行一个目录,支持两种配置方式:\n' + '监控目录\n' + '监控目录:转移目的目录' + } + } + ] + } + ] + }, + { + 'component': 'VRow', + 'content': [ + { + 'component': 'VCol', + 'props': { + 'cols': 12 + }, + 'content': [ + { + 'component': 'VTextarea', + 'props': { + 'model': 'exclude_keywords', + 'label': '排除关键词', + 'rows': 2, + 'placeholder': '每一行一个关键词' + } + } + ] + } + ] + } + ] + } + ], { + "enabled": False, + "notify": False, + "mode": "fast", + "transfer_type": settings.TRANSFER_TYPE, + "monitor_dirs": "", + "exclude_keywords": "" + } def get_page(self) -> List[dict]: pass diff --git a/app/plugins/libraryscraper/__init__.py b/app/plugins/libraryscraper/__init__.py index b55fa6ee..ee104260 100644 --- a/app/plugins/libraryscraper/__init__.py +++ b/app/plugins/libraryscraper/__init__.py @@ -10,6 +10,7 @@ from apscheduler.triggers.cron import CronTrigger from app.core.config import settings from app.core.context import MediaInfo from app.core.metainfo import MetaInfo +from app.db.transferhistory_oper import TransferHistoryOper from app.helper.nfo import NfoReader from app.log import logger from app.plugins import _PluginBase @@ -41,6 +42,7 @@ class LibraryScraper(_PluginBase): user_level = 1 # 私有属性 + transferhis = None _scheduler = None _scraper = None # 限速开关 @@ -66,6 +68,7 @@ class LibraryScraper(_PluginBase): # 启动定时任务 & 立即运行一次 if self._enabled or self._onlyonce: + self.transferhis = TransferHistoryOper(self.db) self._scheduler = BackgroundScheduler(timezone=settings.TZ) if self._cron: logger.info(f"媒体库刮削服务启动,周期:{self._cron}") @@ -304,6 +307,11 @@ class LibraryScraper(_PluginBase): if not mediainfo: logger.warn(f"未识别到媒体信息:{file}") continue + # 如果未开启新增已入库媒体是否跟随TMDB信息变化则根据tmdbid查询之前的title + if not settings.SCRAP_FOLLOW_TMDB: + transfer_historys = self.transferhis.get_by(tmdbid=str(mediainfo.tmdb_id)) + if not transfer_historys: + mediainfo.title = transfer_historys[0].title # 开始刮削 self.chain.scrape_metadata(path=file, mediainfo=mediainfo) From 54b09a17c2264d58dcde224882876cbf2448f03e Mon Sep 17 00:00:00 2001 From: thsrite Date: Thu, 7 Sep 2023 11:12:16 +0800 Subject: [PATCH 4/8] fix --- app/chain/transfer.py | 11 +++++------ app/plugins/dirmonitor/__init__.py | 12 ++++++------ app/plugins/libraryscraper/__init__.py | 2 +- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/app/chain/transfer.py b/app/chain/transfer.py index 868409a7..cd4357d1 100644 --- a/app/chain/transfer.py +++ b/app/chain/transfer.py @@ -242,7 +242,11 @@ class TransferChain(ChainBase): f"回复:```\n/redo {his.id} [tmdbid]|[类型]\n``` 手动识别转移。" )) continue - + # 如果未开启新增已入库媒体是否跟随TMDB信息变化则根据tmdbid查询之前的title + if not settings.SCRAP_FOLLOW_TMDB: + transfer_historys = self.transferhis.get_by(tmdbid=str(mediainfo.tmdb_id)) + if transfer_historys: + mediainfo.title = transfer_historys[0].title logger.info(f"{file_path.name} 识别为:{file_mediainfo.type.value} {file_mediainfo.title_year}") # 电视剧没有集无法转移 @@ -351,11 +355,6 @@ class TransferChain(ChainBase): # 媒体目录 if transfer_info.target_path.is_file(): transfer_info.target_path = transfer_info.target_path.parent - # 如果未开启新增已入库媒体是否跟随TMDB信息变化则根据tmdbid查询之前的title - if not settings.SCRAP_FOLLOW_TMDB: - transfer_historys = self.transferhis.get_by(tmdbid=str(mediainfo.tmdb_id)) - if not transfer_historys: - mediainfo.title = transfer_historys[0].title # 刮削 self.scrape_metadata(path=transfer_info.target_path, mediainfo=media) # 刷新媒体库,根目录或季目录 diff --git a/app/plugins/dirmonitor/__init__.py b/app/plugins/dirmonitor/__init__.py index 4fa70664..5f7f8671 100644 --- a/app/plugins/dirmonitor/__init__.py +++ b/app/plugins/dirmonitor/__init__.py @@ -260,6 +260,12 @@ class DirMonitor(_PluginBase): meta=file_meta ) return + + # 如果未开启新增已入库媒体是否跟随TMDB信息变化则根据tmdbid查询之前的title + if not settings.SCRAP_FOLLOW_TMDB: + transfer_historys = self.transferhis.get_by(tmdbid=str(mediainfo.tmdb_id)) + if transfer_historys: + mediainfo.title = transfer_historys[0].title logger.info(f"{file_path.name} 识别为:{mediainfo.type.value} {mediainfo.title_year}") # 更新媒体图片 @@ -308,12 +314,6 @@ class DirMonitor(_PluginBase): transferinfo=transferinfo ) - # 如果未开启新增已入库媒体是否跟随TMDB信息变化则根据tmdbid查询之前的title - if not settings.SCRAP_FOLLOW_TMDB: - transfer_historys = self.transferhis.get_by(tmdbid=str(mediainfo.tmdb_id)) - if not transfer_historys: - mediainfo.title = transfer_historys[0].title - # 刮削元数据,根目录或季目录 self.chain.scrape_metadata(path=transferinfo.target_path.parent, mediainfo=mediainfo) diff --git a/app/plugins/libraryscraper/__init__.py b/app/plugins/libraryscraper/__init__.py index ee104260..f963a152 100644 --- a/app/plugins/libraryscraper/__init__.py +++ b/app/plugins/libraryscraper/__init__.py @@ -310,7 +310,7 @@ class LibraryScraper(_PluginBase): # 如果未开启新增已入库媒体是否跟随TMDB信息变化则根据tmdbid查询之前的title if not settings.SCRAP_FOLLOW_TMDB: transfer_historys = self.transferhis.get_by(tmdbid=str(mediainfo.tmdb_id)) - if not transfer_historys: + if transfer_historys: mediainfo.title = transfer_historys[0].title # 开始刮削 self.chain.scrape_metadata(path=file, mediainfo=mediainfo) From bf8893d71b5ab91a6b4d27460858a9d7dc368c36 Mon Sep 17 00:00:00 2001 From: thsrite Date: Thu, 7 Sep 2023 11:16:11 +0800 Subject: [PATCH 5/8] =?UTF-8?q?fix=20=E6=96=87=E4=BB=B6=E6=89=80=E5=9C=A8?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B9=E9=87=8D=E6=96=B0=E5=88=AE=E5=89=8A?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/chain/transfer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/chain/transfer.py b/app/chain/transfer.py index cd4357d1..444c72ae 100644 --- a/app/chain/transfer.py +++ b/app/chain/transfer.py @@ -352,11 +352,11 @@ class TransferChain(ChainBase): for mkey, media in medias.items(): transfer_meta = metas[mkey] transfer_info = transfers[mkey] + # 刮削 + self.scrape_metadata(path=transfer_info.target_path, mediainfo=media) # 媒体目录 if transfer_info.target_path.is_file(): transfer_info.target_path = transfer_info.target_path.parent - # 刮削 - self.scrape_metadata(path=transfer_info.target_path, mediainfo=media) # 刷新媒体库,根目录或季目录 self.refresh_mediaserver(mediainfo=media, file_path=transfer_info.target_path) # 发送通知 From 27ff77b5046d658a152895b52a8b77feb9ef3b76 Mon Sep 17 00:00:00 2001 From: thsrite Date: Thu, 7 Sep 2023 12:25:01 +0800 Subject: [PATCH 6/8] fix type --- app/chain/transfer.py | 3 ++- app/db/models/transferhistory.py | 5 ++++- app/db/transferhistory_oper.py | 5 +++-- app/plugins/dirmonitor/__init__.py | 3 ++- app/plugins/libraryscraper/__init__.py | 3 ++- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/app/chain/transfer.py b/app/chain/transfer.py index 444c72ae..1899b002 100644 --- a/app/chain/transfer.py +++ b/app/chain/transfer.py @@ -244,7 +244,8 @@ class TransferChain(ChainBase): continue # 如果未开启新增已入库媒体是否跟随TMDB信息变化则根据tmdbid查询之前的title if not settings.SCRAP_FOLLOW_TMDB: - transfer_historys = self.transferhis.get_by(tmdbid=str(mediainfo.tmdb_id)) + transfer_historys = self.transferhis.get_by(tmdbid=mediainfo.tmdb_id, + type=mediainfo.type.value) if transfer_historys: mediainfo.title = transfer_historys[0].title logger.info(f"{file_path.name} 识别为:{file_mediainfo.type.value} {file_mediainfo.title_year}") diff --git a/app/db/models/transferhistory.py b/app/db/models/transferhistory.py index dd8eb392..2777ad40 100644 --- a/app/db/models/transferhistory.py +++ b/app/db/models/transferhistory.py @@ -85,11 +85,14 @@ class TransferHistory(Base): return db.query(func.count(TransferHistory.id)).filter(TransferHistory.title.like(f'%{title}%')).first()[0] @staticmethod - def list_by(db: Session, title: str = None, year: int = None, season: str = None, + def list_by(db: Session, type: str = None, title: str = None, year: int = None, season: str = None, episode: str = None, tmdbid: str = None): """ 据tmdbid、season、season_episode查询转移记录 """ + if tmdbid and type: + return db.query(TransferHistory).filter(TransferHistory.tmdbid == tmdbid, + TransferHistory.type == type).all() if tmdbid and not season and not episode: return db.query(TransferHistory).filter(TransferHistory.tmdbid == tmdbid).all() if tmdbid and season and not episode: diff --git a/app/db/transferhistory_oper.py b/app/db/transferhistory_oper.py index 3c5e6688..e04bf4c7 100644 --- a/app/db/transferhistory_oper.py +++ b/app/db/transferhistory_oper.py @@ -51,12 +51,13 @@ class TransferHistoryOper(DbOper): """ return TransferHistory.statistic(self._db, days) - def get_by(self, title: str = None, year: str = None, - season: str = None, episode: str = None, tmdbid: str = None) -> List[TransferHistory]: + def get_by(self, title: str = None, year: str = None, type: str = None, + season: str = None, episode: str = None, tmdbid: int = None) -> List[TransferHistory]: """ 按类型、标题、年份、季集查询转移记录 """ return TransferHistory.list_by(db=self._db, + type=type, title=title, year=year, season=season, diff --git a/app/plugins/dirmonitor/__init__.py b/app/plugins/dirmonitor/__init__.py index 5f7f8671..73887bd5 100644 --- a/app/plugins/dirmonitor/__init__.py +++ b/app/plugins/dirmonitor/__init__.py @@ -263,7 +263,8 @@ class DirMonitor(_PluginBase): # 如果未开启新增已入库媒体是否跟随TMDB信息变化则根据tmdbid查询之前的title if not settings.SCRAP_FOLLOW_TMDB: - transfer_historys = self.transferhis.get_by(tmdbid=str(mediainfo.tmdb_id)) + transfer_historys = self.transferhis.get_by(tmdbid=mediainfo.tmdb_id, + type=mediainfo.type.value) if transfer_historys: mediainfo.title = transfer_historys[0].title logger.info(f"{file_path.name} 识别为:{mediainfo.type.value} {mediainfo.title_year}") diff --git a/app/plugins/libraryscraper/__init__.py b/app/plugins/libraryscraper/__init__.py index f963a152..d6bee73a 100644 --- a/app/plugins/libraryscraper/__init__.py +++ b/app/plugins/libraryscraper/__init__.py @@ -309,7 +309,8 @@ class LibraryScraper(_PluginBase): continue # 如果未开启新增已入库媒体是否跟随TMDB信息变化则根据tmdbid查询之前的title if not settings.SCRAP_FOLLOW_TMDB: - transfer_historys = self.transferhis.get_by(tmdbid=str(mediainfo.tmdb_id)) + transfer_historys = self.transferhis.get_by(tmdbid=mediainfo.tmdb_id, + type=mediainfo.type.value) if transfer_historys: mediainfo.title = transfer_historys[0].title # 开始刮削 From e01268222cb67b68cfa3a4ff99591fc008830fbd Mon Sep 17 00:00:00 2001 From: thsrite Date: Thu, 7 Sep 2023 12:27:04 +0800 Subject: [PATCH 7/8] fix --- app/chain/transfer.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/chain/transfer.py b/app/chain/transfer.py index 1899b002..4f5d42ef 100644 --- a/app/chain/transfer.py +++ b/app/chain/transfer.py @@ -244,10 +244,10 @@ class TransferChain(ChainBase): continue # 如果未开启新增已入库媒体是否跟随TMDB信息变化则根据tmdbid查询之前的title if not settings.SCRAP_FOLLOW_TMDB: - transfer_historys = self.transferhis.get_by(tmdbid=mediainfo.tmdb_id, - type=mediainfo.type.value) + transfer_historys = self.transferhis.get_by(tmdbid=file_mediainfo.tmdb_id, + type=file_mediainfo.type.value) if transfer_historys: - mediainfo.title = transfer_historys[0].title + file_mediainfo.title = transfer_historys[0].title logger.info(f"{file_path.name} 识别为:{file_mediainfo.type.value} {file_mediainfo.title_year}") # 电视剧没有集无法转移 From 4c7321a7380a32ca9070e6938a2678e3f36e7557 Mon Sep 17 00:00:00 2001 From: thsrite Date: Thu, 7 Sep 2023 13:57:27 +0800 Subject: [PATCH 8/8] fix --- app/chain/transfer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/chain/transfer.py b/app/chain/transfer.py index 4f5d42ef..9328532a 100644 --- a/app/chain/transfer.py +++ b/app/chain/transfer.py @@ -353,11 +353,11 @@ class TransferChain(ChainBase): for mkey, media in medias.items(): transfer_meta = metas[mkey] transfer_info = transfers[mkey] - # 刮削 - self.scrape_metadata(path=transfer_info.target_path, mediainfo=media) # 媒体目录 if transfer_info.target_path.is_file(): transfer_info.target_path = transfer_info.target_path.parent + # 刮削 + self.scrape_metadata(path=transfer_info.target_path, mediainfo=media) # 刷新媒体库,根目录或季目录 self.refresh_mediaserver(mediainfo=media, file_path=transfer_info.target_path) # 发送通知