mirror of
https://github.com/d0zingcat/MoviePilot-Plugins.git
synced 2026-06-01 15:10:14 +00:00
下载器助手优化
This commit is contained in:
@@ -458,7 +458,7 @@
|
|||||||
"DownloaderHelper": {
|
"DownloaderHelper": {
|
||||||
"name": "下载器助手",
|
"name": "下载器助手",
|
||||||
"description": "自动做种、站点标签、自动删种。",
|
"description": "自动做种、站点标签、自动删种。",
|
||||||
"version": "1.4",
|
"version": "1.5",
|
||||||
"icon": "DownloaderHelper.png",
|
"icon": "DownloaderHelper.png",
|
||||||
"author": "hotlcc",
|
"author": "hotlcc",
|
||||||
"level": 2
|
"level": 2
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class DownloaderHelper(_PluginBase):
|
|||||||
# 插件图标
|
# 插件图标
|
||||||
plugin_icon = "DownloaderHelper.png"
|
plugin_icon = "DownloaderHelper.png"
|
||||||
# 插件版本
|
# 插件版本
|
||||||
plugin_version = "1.4"
|
plugin_version = "1.5"
|
||||||
# 插件作者
|
# 插件作者
|
||||||
plugin_author = "hotlcc"
|
plugin_author = "hotlcc"
|
||||||
# 作者主页
|
# 作者主页
|
||||||
@@ -101,7 +101,7 @@ class DownloaderHelper(_PluginBase):
|
|||||||
if self.__get_config_item(config_key='run_once'):
|
if self.__get_config_item(config_key='run_once'):
|
||||||
if self.__check_enable_any_task():
|
if self.__check_enable_any_task():
|
||||||
self.__start_scheduler()
|
self.__start_scheduler()
|
||||||
self.__scheduler.add_job(func=self.__run,
|
self.__scheduler.add_job(func=self.__try_run,
|
||||||
trigger='date',
|
trigger='date',
|
||||||
run_date=datetime.now(tz=pytz.timezone(settings.TZ)) + timedelta(seconds=3),
|
run_date=datetime.now(tz=pytz.timezone(settings.TZ)) + timedelta(seconds=3),
|
||||||
name='下载器助手任务-立即运行一次')
|
name='下载器助手任务-立即运行一次')
|
||||||
@@ -147,7 +147,7 @@ class DownloaderHelper(_PluginBase):
|
|||||||
"id": "DownloaderHelperTimerService",
|
"id": "DownloaderHelperTimerService",
|
||||||
"name": "下载器助手定时服务",
|
"name": "下载器助手定时服务",
|
||||||
"trigger": CronTrigger.from_crontab(cron),
|
"trigger": CronTrigger.from_crontab(cron),
|
||||||
"func": self.__run,
|
"func": self.__try_run,
|
||||||
"kwargs": {}
|
"kwargs": {}
|
||||||
}]
|
}]
|
||||||
else:
|
else:
|
||||||
@@ -171,14 +171,13 @@ class DownloaderHelper(_PluginBase):
|
|||||||
|
|
||||||
return [{
|
return [{
|
||||||
'component': 'VForm',
|
'component': 'VForm',
|
||||||
'content': [{
|
'content': [{ # 业务无关总控
|
||||||
'component': 'VRow',
|
'component': 'VRow',
|
||||||
'content': [{
|
'content': [{
|
||||||
'component': 'VCol',
|
'component': 'VCol',
|
||||||
'props': {
|
'props': {
|
||||||
'cols': 12,
|
'cols': 12,
|
||||||
'md': 4,
|
'xxl': 4, 'xl': 4, 'lg': 4, 'md': 4, 'sm': 6, 'xs': 12
|
||||||
'xl': 3
|
|
||||||
},
|
},
|
||||||
'content': [{
|
'content': [{
|
||||||
'component': 'VSwitch',
|
'component': 'VSwitch',
|
||||||
@@ -192,8 +191,7 @@ class DownloaderHelper(_PluginBase):
|
|||||||
'component': 'VCol',
|
'component': 'VCol',
|
||||||
'props': {
|
'props': {
|
||||||
'cols': 12,
|
'cols': 12,
|
||||||
'md': 4,
|
'xxl': 4, 'xl': 4, 'lg': 4, 'md': 4, 'sm': 6, 'xs': 12
|
||||||
'xl': 3
|
|
||||||
},
|
},
|
||||||
'content': [{
|
'content': [{
|
||||||
'component': 'VSwitch',
|
'component': 'VSwitch',
|
||||||
@@ -207,8 +205,7 @@ class DownloaderHelper(_PluginBase):
|
|||||||
'component': 'VCol',
|
'component': 'VCol',
|
||||||
'props': {
|
'props': {
|
||||||
'cols': 12,
|
'cols': 12,
|
||||||
'md': 4,
|
'xxl': 4, 'xl': 4, 'lg': 4, 'md': 4, 'sm': 6, 'xs': 12
|
||||||
'xl': 3
|
|
||||||
},
|
},
|
||||||
'content': [{
|
'content': [{
|
||||||
'component': 'VSwitch',
|
'component': 'VSwitch',
|
||||||
@@ -218,12 +215,14 @@ class DownloaderHelper(_PluginBase):
|
|||||||
'hint': '保存插件配置后是否立即触发一次插件任务运行'
|
'hint': '保存插件配置后是否立即触发一次插件任务运行'
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
}, {
|
}]
|
||||||
|
}, { # 业务相关总控
|
||||||
|
'component': 'VRow',
|
||||||
|
'content': [{
|
||||||
'component': 'VCol',
|
'component': 'VCol',
|
||||||
'props': {
|
'props': {
|
||||||
'cols': 12,
|
'cols': 12,
|
||||||
'md': 4,
|
'xxl': 4, 'xl': 4, 'lg': 4, 'md': 4, 'sm': 6, 'xs': 12
|
||||||
'xl': 3
|
|
||||||
},
|
},
|
||||||
'content': [{
|
'content': [{
|
||||||
'component': 'VSwitch',
|
'component': 'VSwitch',
|
||||||
@@ -237,8 +236,7 @@ class DownloaderHelper(_PluginBase):
|
|||||||
'component': 'VCol',
|
'component': 'VCol',
|
||||||
'props': {
|
'props': {
|
||||||
'cols': 12,
|
'cols': 12,
|
||||||
'md': 4,
|
'xxl': 4, 'xl': 4, 'lg': 4, 'md': 4, 'sm': 6, 'xs': 12
|
||||||
'xl': 3
|
|
||||||
},
|
},
|
||||||
'content': [{
|
'content': [{
|
||||||
'component': 'VSwitch',
|
'component': 'VSwitch',
|
||||||
@@ -252,8 +250,7 @@ class DownloaderHelper(_PluginBase):
|
|||||||
'component': 'VCol',
|
'component': 'VCol',
|
||||||
'props': {
|
'props': {
|
||||||
'cols': 12,
|
'cols': 12,
|
||||||
'md': 4,
|
'xxl': 4, 'xl': 4, 'lg': 4, 'md': 4, 'sm': 6, 'xs': 12
|
||||||
'xl': 3
|
|
||||||
},
|
},
|
||||||
'content': [{
|
'content': [{
|
||||||
'component': 'VSwitch',
|
'component': 'VSwitch',
|
||||||
@@ -270,7 +267,7 @@ class DownloaderHelper(_PluginBase):
|
|||||||
'component': 'VCol',
|
'component': 'VCol',
|
||||||
'props': {
|
'props': {
|
||||||
'cols': 12,
|
'cols': 12,
|
||||||
'md': 4
|
'xxl': 4, 'xl': 4, 'lg': 4, 'md': 4, 'sm': 6, 'xs': 12
|
||||||
},
|
},
|
||||||
'content': [{
|
'content': [{
|
||||||
'component': 'VTextField',
|
'component': 'VTextField',
|
||||||
@@ -285,7 +282,7 @@ class DownloaderHelper(_PluginBase):
|
|||||||
'component': 'VCol',
|
'component': 'VCol',
|
||||||
'props': {
|
'props': {
|
||||||
'cols': 12,
|
'cols': 12,
|
||||||
'md': 4
|
'xxl': 4, 'xl': 4, 'lg': 4, 'md': 4, 'sm': 6, 'xs': 12
|
||||||
},
|
},
|
||||||
'content': [{
|
'content': [{
|
||||||
'component': 'VTextField',
|
'component': 'VTextField',
|
||||||
@@ -299,7 +296,7 @@ class DownloaderHelper(_PluginBase):
|
|||||||
'component': 'VCol',
|
'component': 'VCol',
|
||||||
'props': {
|
'props': {
|
||||||
'cols': 12,
|
'cols': 12,
|
||||||
'md': 4
|
'xxl': 4, 'xl': 4, 'lg': 4, 'md': 4, 'sm': 6, 'xs': 12
|
||||||
},
|
},
|
||||||
'content': [{
|
'content': [{
|
||||||
'component': 'VTextField',
|
'component': 'VTextField',
|
||||||
@@ -324,7 +321,7 @@ class DownloaderHelper(_PluginBase):
|
|||||||
'model': 'tracker_mappings',
|
'model': 'tracker_mappings',
|
||||||
'label': 'Tracker映射',
|
'label': 'Tracker映射',
|
||||||
'placeholder': '格式:\n'
|
'placeholder': '格式:\n'
|
||||||
'<tracker-domain>:<site-domain>\n'
|
'<tracker-domain>:<site-domain>\n\n'
|
||||||
'例如:\n'
|
'例如:\n'
|
||||||
'chdbits.xyz:ptchdbits.co',
|
'chdbits.xyz:ptchdbits.co',
|
||||||
'hint': 'Tracker映射。用于在站点打标签时,指定tracker和站点域名不同的种子的域名对应关系;前面为tracker域名(完整域名或者主域名皆可),中间是英文冒号,后面是站点域名。'
|
'hint': 'Tracker映射。用于在站点打标签时,指定tracker和站点域名不同的种子的域名对应关系;前面为tracker域名(完整域名或者主域名皆可),中间是英文冒号,后面是站点域名。'
|
||||||
@@ -1066,15 +1063,24 @@ class DownloaderHelper(_PluginBase):
|
|||||||
text += '\n————————————\n'
|
text += '\n————————————\n'
|
||||||
return text
|
return text
|
||||||
|
|
||||||
def __run(self):
|
def __try_run(self, context: TaskContext = None):
|
||||||
"""
|
"""
|
||||||
运行插件任务
|
尝试运行插件任务
|
||||||
"""
|
"""
|
||||||
if not self.__task_lock.acquire(blocking=False):
|
if not self.__task_lock.acquire(blocking=False):
|
||||||
logger.info('已有进行中的任务,本次不执行')
|
logger.info('已有进行中的任务,本次不执行')
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
context = TaskContext()
|
self.__run_for_all(context=context)
|
||||||
|
finally:
|
||||||
|
self.__task_lock.release()
|
||||||
|
|
||||||
|
def __block_run(self, context: TaskContext = None):
|
||||||
|
"""
|
||||||
|
阻塞运行插件任务
|
||||||
|
"""
|
||||||
|
self.__task_lock.acquire()
|
||||||
|
try:
|
||||||
self.__run_for_all(context=context)
|
self.__run_for_all(context=context)
|
||||||
finally:
|
finally:
|
||||||
self.__task_lock.release()
|
self.__task_lock.release()
|
||||||
@@ -1100,6 +1106,10 @@ class DownloaderHelper(_PluginBase):
|
|||||||
|
|
||||||
self.__run_for_transmission(context=context)
|
self.__run_for_transmission(context=context)
|
||||||
|
|
||||||
|
if self.__exit_event.is_set():
|
||||||
|
logger.warn('插件服务正在退出,任务终止')
|
||||||
|
return context
|
||||||
|
|
||||||
# 发送通知
|
# 发送通知
|
||||||
self.__send_notify(context=context)
|
self.__send_notify(context=context)
|
||||||
|
|
||||||
@@ -1554,7 +1564,7 @@ class DownloaderHelper(_PluginBase):
|
|||||||
username = event.event_data.get('username')
|
username = event.event_data.get('username')
|
||||||
if username:
|
if username:
|
||||||
context.set_username(username=username)
|
context.set_username(username=username)
|
||||||
self.__run_for_all(context=context)
|
self.__block_run(context=context)
|
||||||
logger.info('下载添加事件监听任务执行结束')
|
logger.info('下载添加事件监听任务执行结束')
|
||||||
|
|
||||||
@eventmanager.register(EventType.DownloadFileDeleted)
|
@eventmanager.register(EventType.DownloadFileDeleted)
|
||||||
@@ -1576,5 +1586,5 @@ class DownloaderHelper(_PluginBase):
|
|||||||
logger.info('源文件删除事件监听任务执行开始...')
|
logger.info('源文件删除事件监听任务执行开始...')
|
||||||
context = TaskContext().enable_seeding(False).enable_tagging(False).enable_delete(True).set_deleted_event_data(
|
context = TaskContext().enable_seeding(False).enable_tagging(False).enable_delete(True).set_deleted_event_data(
|
||||||
event.event_data)
|
event.event_data)
|
||||||
self.__run_for_all(context=context)
|
self.__block_run(context=context)
|
||||||
logger.info('源文件删除事件监听任务执行结束')
|
logger.info('源文件删除事件监听任务执行结束')
|
||||||
|
|||||||
Reference in New Issue
Block a user