fix plugin

This commit is contained in:
jxxghp 2023-08-03 14:27:57 +08:00
parent 7ebe943510
commit 95a44a97b6
2 changed files with 49 additions and 43 deletions

View File

@ -10,6 +10,7 @@ from apscheduler.triggers.cron import CronTrigger
from app.core.config import settings from app.core.config import settings
from app.core.event import eventmanager, Event from app.core.event import eventmanager, Event
from app.db.models.transferhistory import TransferHistory
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.plugins import _PluginBase from app.plugins import _PluginBase
@ -23,9 +24,9 @@ class MediaSyncDel(_PluginBase):
# 插件描述 # 插件描述
plugin_desc = "媒体库删除媒体后同步删除历史记录或源文件。" plugin_desc = "媒体库删除媒体后同步删除历史记录或源文件。"
# 插件图标 # 插件图标
plugin_icon = "emby.png" plugin_icon = "sync.png"
# 主题色 # 主题色
plugin_color = "#C90425" plugin_color = "#53BA47"
# 插件版本 # 插件版本
plugin_version = "1.0" plugin_version = "1.0"
# 插件作者 # 插件作者
@ -234,7 +235,7 @@ class MediaSyncDel(_PluginBase):
# 拼装页面 # 拼装页面
contents = [] contents = []
for history in historys: for history in historys:
type = history.get("type") htype = history.get("type")
title = history.get("title") title = history.get("title")
year = history.get("year") year = history.get("year")
season = history.get("season") season = history.get("season")
@ -276,7 +277,7 @@ class MediaSyncDel(_PluginBase):
'props': { 'props': {
'class': 'pa-0 px-2' 'class': 'pa-0 px-2'
}, },
'text': f'类型:{type}' 'text': f'类型:{htype}'
}, },
{ {
'component': 'VCardSubtitle', 'component': 'VCardSubtitle',
@ -374,8 +375,6 @@ class MediaSyncDel(_PluginBase):
media_year = del_media.get("year") media_year = del_media.get("year")
# 媒体路径 /data/series/国产剧/蜀山战纪 (2015)/Season 2/蜀山战纪 - S02E01 - 第1集.mp4 # 媒体路径 /data/series/国产剧/蜀山战纪 (2015)/Season 2/蜀山战纪 - S02E01 - 第1集.mp4
media_path = del_media.get("path") media_path = del_media.get("path")
# id 713083
id = del_media.get("id")
# 季数 S02 # 季数 S02
media_season = del_media.get("season") media_season = del_media.get("season")
# 集数 E02 # 集数 E02
@ -392,48 +391,53 @@ class MediaSyncDel(_PluginBase):
# 删除电影 # 删除电影
if media_type == "Movie": if media_type == "Movie":
msg = f'电影 {media_name}' msg = f'电影 {media_name}'
transfer_history = self._transferhis.get_by(mtype="电影", transfer_history: List[TransferHistory] = self._transferhis.get_by(
title=media_name, mtype="电影",
year=media_year) title=media_name,
logger.info(f"正在同步删除{msg}") year=media_year)
# 删除电视剧 # 删除电视剧
elif media_type == "Series": elif media_type == "Series":
msg = f'剧集 {media_name}' msg = f'剧集 {media_name}'
transfer_history = self._transferhis.get_by(mtype="电视剧", transfer_history: List[TransferHistory] = self._transferhis.get_by(
title=media_name, mtype="电视剧",
year=media_year) title=media_name,
logger.info(f"正在同步删除{msg}") year=media_year)
# 删除季 S02 # 删除季 S02
elif media_type == "Season": elif media_type == "Season":
msg = f'剧集 {media_name} {media_season}' msg = f'剧集 {media_name} {media_season}'
transfer_history = self._transferhis.get_by(mtype="电视剧", transfer_history: List[TransferHistory] = self._transferhis.get_by(
title=media_name, mtype="电视剧",
year=media_year, title=media_name,
season=media_season) year=media_year,
logger.info(f"正在同步删除{msg}") season=media_season)
# 删除剧集S02E02 # 删除剧集S02E02
elif media_type == "Episode": elif media_type == "Episode":
msg = f'剧集 {media_name} {media_season}{media_episode}' msg = f'剧集 {media_name} {media_season}{media_episode}'
transfer_history = self._transferhis.get_by(mtype="电视剧", transfer_history: List[TransferHistory] = self._transferhis.get_by(
title=media_name, mtype="电视剧",
year=media_year, title=media_name,
season=media_season, year=media_year,
episode=media_episode) season=media_season,
logger.info(f"正在同步删除{msg}") episode=media_episode)
else: else:
continue continue
logger.info(f"正在同步删除 {msg}")
if not transfer_history: if not transfer_history:
logger.info(f"未获取到 {msg} 转移记录") logger.info(f"未获取到 {msg} 转移记录")
continue continue
logger.info(f"获取到删除媒体数量 {len(transfer_history)}") logger.info(f"获取到删除历史记录数量 {len(transfer_history)}")
# 开始删除 # 开始删除
image = 'https://emby.media/notificationicon.png' image = 'https://emby.media/notificationicon.png'
for transferhis in transfer_history: for transferhis in transfer_history:
image = transferhis.image image = transferhis.image
self._transferhis.delete(transferhis.id) self._transferhis.delete(transferhis.id)
# 删除种子任务
if self._del_source and transferhis.download_hash:
self.chain.remove_torrents(transferhis.download_hash)
logger.info(f"同步删除 {msg} 完成!") logger.info(f"同步删除 {msg} 完成!")
@ -441,7 +445,7 @@ class MediaSyncDel(_PluginBase):
if self._notify: if self._notify:
self.post_message( self.post_message(
mtype=NotificationType.MediaServer, mtype=NotificationType.MediaServer,
title="Emby同步删除任务完成", title="媒体库同步删除任务完成",
text=f"{msg}\n" text=f"{msg}\n"
f"数量 {len(transfer_history)}\n" f"数量 {len(transfer_history)}\n"
f"时间 {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))}", f"时间 {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))}",
@ -488,15 +492,15 @@ class MediaSyncDel(_PluginBase):
del_medias = [] del_medias = []
# 循环获取媒体信息 # 循环获取媒体信息
for match in matches: for match in matches:
time = match[0] mtime = match[0]
# 排除已处理的媒体信息 # 排除已处理的媒体信息
if last_time and time < last_time: if last_time and mtime < last_time:
continue continue
type = match[1] mtype = match[1]
name = match[2] name = match[2]
path = match[3] path = match[3]
id = match[4] mid = match[4]
year = None year = None
year_pattern = r'\(\d+\)' year_pattern = r'\(\d+\)'
@ -506,7 +510,7 @@ class MediaSyncDel(_PluginBase):
season = None season = None
episode = None episode = None
if type == 'Episode' or type == 'Season': if mtype == 'Episode' or mtype == 'Season':
name_pattern = r"\/([\u4e00-\u9fa5]+)(?= \()" name_pattern = r"\/([\u4e00-\u9fa5]+)(?= \()"
season_pattern = r"Season\s*(\d+)" season_pattern = r"Season\s*(\d+)"
episode_pattern = r"S\d+E(\d+)" episode_pattern = r"S\d+E(\d+)"
@ -533,12 +537,12 @@ class MediaSyncDel(_PluginBase):
episode = None episode = None
media = { media = {
"time": time, "time": mtime,
"type": type, "type": mtype,
"name": name, "name": name,
"year": year, "year": year,
"path": path, "path": path,
"id": id, "id": mid,
"season": season, "season": season,
"episode": episode, "episode": episode,
} }
@ -572,15 +576,15 @@ class MediaSyncDel(_PluginBase):
del_medias = [] del_medias = []
# 循环获取媒体信息 # 循环获取媒体信息
for match in matches: for match in matches:
time = match[0] mtime = match[0]
# 排除已处理的媒体信息 # 排除已处理的媒体信息
if time < last_time: if time < last_time:
continue continue
type = match[1] mtype = match[1]
name = match[2] name = match[2]
path = match[3] path = match[3]
id = match[4] mid = match[4]
year = None year = None
year_pattern = r'\(\d+\)' year_pattern = r'\(\d+\)'
@ -590,7 +594,7 @@ class MediaSyncDel(_PluginBase):
season = None season = None
episode = None episode = None
if type == 'Episode' or type == 'Season': if mtype == 'Episode' or mtype == 'Season':
name_pattern = r"\/([\u4e00-\u9fa5]+)(?= \()" name_pattern = r"\/([\u4e00-\u9fa5]+)(?= \()"
season_pattern = r"Season\s*(\d+)" season_pattern = r"Season\s*(\d+)"
episode_pattern = r"S\d+E(\d+)" episode_pattern = r"S\d+E(\d+)"
@ -617,12 +621,12 @@ class MediaSyncDel(_PluginBase):
episode = None episode = None
media = { media = {
"time": time, "time": mtime,
"type": type, "type": mtype,
"name": name, "name": name,
"year": year, "year": year,
"path": path, "path": path,
"id": id, "id": mid,
"season": season, "season": season,
"episode": episode, "episode": episode,
} }
@ -647,7 +651,7 @@ class MediaSyncDel(_PluginBase):
except Exception as e: except Exception as e:
logger.error("退出插件失败:%s" % str(e)) logger.error("退出插件失败:%s" % str(e))
@eventmanager.register(EventType.HistoryDeleted) @eventmanager.register(EventType.MediaDeleted)
def remote_sync_del(self, event: Event): def remote_sync_del(self, event: Event):
""" """
媒体库同步删除 媒体库同步删除

View File

@ -32,6 +32,8 @@ class EventType(Enum):
DownloadAdded = "download.added" DownloadAdded = "download.added"
# 删除历史记录 # 删除历史记录
HistoryDeleted = "history.deleted" HistoryDeleted = "history.deleted"
# 删除媒体库文件
MediaDeleted = "media.deleted"
# 系统配置Key字典 # 系统配置Key字典