add 站点管理命令

This commit is contained in:
jxxghp
2023-06-14 16:48:55 +08:00
parent 0b6a52f788
commit c726864412
6 changed files with 90 additions and 5 deletions

54
app/chain/site_manage.py Normal file
View File

@ -0,0 +1,54 @@
from app.chain import ChainBase
from app.db.sites import Sites
class SiteManageChain(ChainBase):
"""
站点远程管理处理链
"""
_sites: Sites = None
def __init__(self):
super().__init__()
self._sites = Sites()
def process(self):
"""
查询所有站点,发送消息
"""
site_list = self._sites.list()
if not site_list:
self.post_message(title="没有维护任何站点信息!")
title = f"共有 {len(site_list)} 个站点,回复 `/site_disable` `[id]` 禁用站点:"
messages = []
for site in site_list:
if site.render:
render_str = " [仿真]"
else:
render_str = ""
if site.is_active:
messages.append(f"{site.id}. {site.name}{site.url}{render_str}")
else:
messages.append(f"{site.id}. ~~{site.name}{site.url}{render_str}~~")
# 发送列表
self.post_message(title=title, text="\n".join(messages))
def disable(self, arg_str):
"""
禁用站点
"""
if not arg_str:
return
arg_str = arg_str.strip()
if not arg_str.isdigit():
return
site_id = int(arg_str)
site = self._sites.get(site_id)
if not site:
self.post_message(title=f"站点编号 {site_id} 不存在!")
return
# 删除站点
self._sites.delete(site_id)
# 重新发送消息
self.process()

View File

@ -64,6 +64,7 @@ class SubscribeChain(ChainBase):
if mediainfo.type == MediaType.TV:
if not season:
season = 1
# 总集数
if not kwargs.get('total_episode'):
if not mediainfo.seasons:
# 补充媒体信息
@ -82,6 +83,11 @@ class SubscribeChain(ChainBase):
kwargs.update({
'total_episode': total_episode
})
# 缺失集
if not kwargs.get('lack_episode'):
kwargs.update({
'lack_episode': kwargs.get('total_episode')
})
# 添加订阅
sid, err_msg = self.subscribes.add(mediainfo, season=season, **kwargs)
if not sid:
@ -297,13 +303,15 @@ class SubscribeChain(ChainBase):
if not subscribes:
self.post_message(title='没有任何订阅!')
return
title = f"共有 {len(subscribes)} 个订阅,回复```/subscribe_delete [id]```删除订阅:"
title = f"共有 {len(subscribes)} 个订阅,回复 `/subscribe_delete` `[id]` 删除订阅:"
messages = []
for subscribe in subscribes:
if subscribe.type == MediaType.MOVIE.value:
messages.append(f"{subscribe.id}. {subscribe.name}{subscribe.year}")
else:
messages.append(f"{subscribe.id}. {subscribe.name}{subscribe.year})第{subscribe.season}")
messages.append(f"{subscribe.id}. {subscribe.name}{subscribe.year})第{subscribe.season} "
f"[{subscribe.total_episode - (subscribe.lack_episode or subscribe.total_episode)}"
f"/{subscribe.total_episode}]")
# 发送列表
self.post_message(title=title, text='\n'.join(messages))

View File

@ -5,6 +5,7 @@ from typing import Any
from app.chain import ChainBase
from app.chain.cookiecloud import CookieCloudChain
from app.chain.douban_sync import DoubanSyncChain
from app.chain.site_manage import SiteManageChain
from app.chain.subscribe import SubscribeChain
from app.chain.transfer import TransferChain
from app.core.event import eventmanager, EventManager
@ -77,6 +78,16 @@ class Command(metaclass=Singleton):
"func": TransferChain().process,
"description": "下载文件整理",
"data": {}
},
"/sites": {
"func": SiteManageChain().process,
"description": "查询站点",
"data": {}
},
"/site_disable": {
"func": SiteManageChain().disable,
"description": "禁用站点",
"data": {}
}
}
plugin_commands = self.pluginmanager.get_plugin_commands()

View File

@ -25,6 +25,12 @@ class Sites:
return True, "新增站点成功"
return False, "站点已存在"
def get(self, sid: int):
"""
查询单个站点
"""
return Site.get(self._db, sid)
def list(self) -> List[Site]:
"""
获取站点列表
@ -37,6 +43,12 @@ class Sites:
"""
return Site.get_actives(self._db)
def delete(self, sid: int):
"""
删除站点
"""
return Site.delete(self._db, sid)
def get_by_domain(self, domain: str) -> Site:
"""
按域名获取站点

View File

@ -248,7 +248,7 @@ class Slack:
"type": "section",
"text": {
"type": "mrkdwn",
"text": f"*{title}*"
"text": f"**{title}**"
}
}
blocks = [title_section, {

View File

@ -79,9 +79,9 @@ class Telegram(metaclass=Singleton):
try:
if text:
caption = f"*{title}*\n{text}"
caption = f"**{title}**\n{text}"
else:
caption = f"*{title}*"
caption = f"**{title}**"
if userid:
chat_id = userid