fix plugin
This commit is contained in:
parent
7ebe943510
commit
95a44a97b6
@ -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(
|
||||||
|
mtype="电影",
|
||||||
title=media_name,
|
title=media_name,
|
||||||
year=media_year)
|
year=media_year)
|
||||||
logger.info(f"正在同步删除{msg}")
|
|
||||||
# 删除电视剧
|
# 删除电视剧
|
||||||
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(
|
||||||
|
mtype="电视剧",
|
||||||
title=media_name,
|
title=media_name,
|
||||||
year=media_year)
|
year=media_year)
|
||||||
logger.info(f"正在同步删除{msg}")
|
|
||||||
# 删除季 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(
|
||||||
|
mtype="电视剧",
|
||||||
title=media_name,
|
title=media_name,
|
||||||
year=media_year,
|
year=media_year,
|
||||||
season=media_season)
|
season=media_season)
|
||||||
logger.info(f"正在同步删除{msg}")
|
|
||||||
# 删除剧集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(
|
||||||
|
mtype="电视剧",
|
||||||
title=media_name,
|
title=media_name,
|
||||||
year=media_year,
|
year=media_year,
|
||||||
season=media_season,
|
season=media_season,
|
||||||
episode=media_episode)
|
episode=media_episode)
|
||||||
logger.info(f"正在同步删除{msg}")
|
|
||||||
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):
|
||||||
"""
|
"""
|
||||||
媒体库同步删除
|
媒体库同步删除
|
||||||
|
@ -32,6 +32,8 @@ class EventType(Enum):
|
|||||||
DownloadAdded = "download.added"
|
DownloadAdded = "download.added"
|
||||||
# 删除历史记录
|
# 删除历史记录
|
||||||
HistoryDeleted = "history.deleted"
|
HistoryDeleted = "history.deleted"
|
||||||
|
# 删除媒体库文件
|
||||||
|
MediaDeleted = "media.deleted"
|
||||||
|
|
||||||
|
|
||||||
# 系统配置Key字典
|
# 系统配置Key字典
|
||||||
|
Loading…
x
Reference in New Issue
Block a user