diff --git a/.env.dev b/.env.dev index 867eac2e..e3aead21 100644 --- a/.env.dev +++ b/.env.dev @@ -1,47 +1,87 @@ -HOST=0.0.0.0 # 配置 NoneBot 监听的 IP/主机名 -PORT=8080 # 配置 NoneBot 监听的端口 -DEBUG=false # 开启 debug 模式 **请勿在生产环境开启** -SUPERUSERS=["123123123"] # 配置 NoneBot 超级用户:管理员qq,支持多管理员,逗号分隔 注意,启动消息只发送给第一个管理员 -#GUILD_SUPERUSERS=["144115218677832239"] # 配置 NoneBot 频道超级用户:管理员频道号,注意非qq号,可发送@后在gocq控制台获取 -NICKNAME=["elf", "ELF"] # 配置机器人的昵称 -COMMAND_START=["","/"] # 配置命令起始字符 -COMMAND_SEP=["."] # 配置命令分割字符 - -#RSS_PROXY="" # 代理地址 示例: "127.0.0.1:7890" -RSSHUB="https://rsshub.app" # rsshub订阅地址 -#RSSHUB_BACKUP=[] # 备用rsshub地址 示例: ["https://rsshub.app","https://rsshub.app"] 务必使用双引号!!! -DB_CACHE_EXPIRE=30 # 去重数据库的记录清理限定天数 -LIMIT=200 # 缓存rss条数 -MAX_LENGTH=1024 # 正文长度限制,防止消息太长刷屏,以及消息过长发送失败的情况 -ENABLE_BOOT_MESSAGE=true # 是否启用启动时的提示消息推送 +# 配置 NoneBot 监听的 IP/主机名 +HOST=0.0.0.0 +# 配置 NoneBot 监听的端口 +PORT=8080 +# 开启 debug 模式 **请勿在生产环境开启** +DEBUG=false +# 配置 NoneBot 超级用户:管理员qq,支持多管理员,逗号分隔 注意,启动消息只发送给第一个管理员 +SUPERUSERS=["123123123"] +# 配置 NoneBot 频道超级用户:管理员频道号,注意非qq号,可发送@后在gocq控制台获取 +#GUILD_SUPERUSERS=["144115218677832239"] +# 配置机器人的昵称 +NICKNAME=["elf","ELF"] +# 配置命令起始字符 +COMMAND_START=["","/"] +# 配置命令分割字符 +COMMAND_SEP=["."] + +# 代理地址 +#RSS_PROXY="127.0.0.1:7890" +# rsshub订阅地址 +RSSHUB="https://rsshub.app" +# 备用 rsshub 地址 示例: ["https://rsshub.app","https://rsshub.app"] 务必使用双引号!!! +RSSHUB_BACKUP=[] +# 去重数据库的记录清理限定天数 +DB_CACHE_EXPIRE=30 +# 缓存rss条数 +LIMIT=200 +# 正文长度限制,防止消息太长刷屏,以及消息过长发送失败的情况 +MAX_LENGTH=1024 +# 是否启用启动时的提示消息推送 +ENABLE_BOOT_MESSAGE=true # 图片压缩 -ZIP_SIZE=2048 # 非 GIF 图片压缩后的最大长宽值,单位 px -GIF_ZIP_SIZE=6144 # GIF 图片压缩临界值,单位 KB -IMG_FORMAT="{subs}/{name}{ext}" # 保存图片的文件名,可使用 {subs}:订阅名 {name}:文件名 {ext}:文件后缀(可省略) -IMG_DOWN_PATH="" # 图片的下载路径,默认为./data/image 可以为相对路径(./test)或绝对路径(/home) +# 非 GIF 图片压缩后的最大长宽值,单位 px +ZIP_SIZE=2048 +# GIF 图片压缩临界值,单位 KB +GIF_ZIP_SIZE=6144 +# 保存图片的文件名,可使用 {subs}:订阅名 {name}:文件名 {ext}:文件后缀(可省略) +IMG_FORMAT="{subs}/{name}{ext}" +# 图片的下载路径,默认为./data/image 可以为相对路径(./test)或绝对路径(/home) +IMG_DOWN_PATH="" -BLOCKQUOTE=true # 是否显示转发的内容(主要是微博),默认打开,如果关闭还有转发的信息的话,可以自行添加进屏蔽词(但是这整条消息就会没) -#BLACK_WORD=[] # 屏蔽词填写 支持正则,如 ["互动抽奖","微博抽奖平台"] 务必使用双引号!!! +# 是否显示转发的内容(主要是微博),默认打开,如果关闭还有转发的信息的话,可以自行添加进屏蔽词(但是这整条消息就会没) +BLOCKQUOTE=true +# 屏蔽词填写 支持正则,如 ["互动抽奖","微博抽奖平台"] 务必使用双引号!!! +BLACK_WORD=[] # 使用百度翻译API 可选,填的话两个都要填,不填默认使用谷歌翻译(需墙外?) # 百度翻译接口appid和secretKey,前往http://api.fanyi.baidu.com/获取 # 一般来说申请标准版免费就够了,想要好一点可以认证上高级版,有月限额,rss用也足够了 -#BAIDU_ID="" -#BAIDU_KEY="" +BAIDU_ID="" +BAIDU_KEY="" +# DEEPL 翻译API 可选,不填默认使用谷歌翻译(需墙外?) +DEEPL_TRANSLATOR_API_KEY="" +# 配合 deepl_translator 使用的语言检测接口,前往 https://detectlanguage.com/documentation 注册获取 api_key +SINGLE_DETECTION_API_KEY="" # qbittorrent 相关设置(文件下载位置等更多设置请在qbittorrent软件中设置) -#QB_USERNAME="" # qbittorrent 用户名 -#QB_PASSWORD="" # qbittorrent 密码 -#QB_WEB_URL="http://127.0.0.1:8081" # qbittorrent 客户端默认是关闭状态,请打开并设置端口号为 8081,同时勾选 “对本地主机上的客户端跳过身份验证” -#QB_DOWN_PATH="" # qb的文件下载地址,这个地址必须是 go-cqhttp能访问到的 -#DOWN_STATUS_MSG_GROUP=[] # 下载进度消息提示群组 示例 [12345678] 注意:最好是将该群设置为免打扰 -#DOWN_STATUS_MSG_DATE=10 # 下载进度检查及提示间隔时间,秒,不建议小于 10s +# qbittorrent 用户名 +QB_USERNAME="" +# qbittorrent 密码 +QB_PASSWORD="" +# qbittorrent 客户端默认是关闭状态,请打开并设置端口号为 8081,同时勾选 “对本地主机上的客户端跳过身份验证” +#QB_WEB_URL="http://127.0.0.1:8081" +# qb的文件下载地址,这个地址必须是 go-cqhttp能访问到的 +QB_DOWN_PATH="" +# 下载进度消息提示群组 示例 [12345678] 注意:最好是将该群设置为免打扰 +DOWN_STATUS_MSG_GROUP=[] +# 下载进度检查及提示间隔时间,单位秒,不建议小于 10 +DOWN_STATUS_MSG_DATE=10 # pikpak 相关设置 -#PIKPAK_USERNAME="" # pikpak 用户名 -#PIKPAK_PASSWORD="" # pikpak 密码 -#PIKPAK_DOWNLOAD_PATH="" # pikpak 离线保存的目录, 默认是根目录,示例: ELF_RSS/Downloads ,目录不存在会自动创建, 不能/结尾 +# pikpak 用户名 +PIKPAK_USERNAME="" +# pikpak 密码 +PIKPAK_PASSWORD="" +# pikpak 离线保存的目录, 默认是根目录,示例: ELF_RSS/Downloads ,目录不存在会自动创建, 不能/结尾 +PIKPAK_DOWNLOAD_PATH="" + +# Telegram 相关设置 +# Telegram 管理员 ID 列表,用于接收离线通知和管理机器人 +TELEGRAM_ADMIN_IDS=[] +# Telegram 机器人的 token +TELEGRAM_BOT_TOKEN="" # MYELF博客地址 https://myelf.club # 出现问题请在 GitHub 上提 issues diff --git a/pyproject.toml b/pyproject.toml index 91c7a323..56cf1cff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "ELF_RSS" -version = "2.6.20" +version = "2.6.21" description = "QQ机器人 RSS订阅 插件,订阅源建议选择 RSSHub" authors = ["Quan666 "] license = "GPL-3.0-only" diff --git a/src/plugins/ELF_RSS2/__init__.py b/src/plugins/ELF_RSS2/__init__.py index 7e1bb5de..5d81b5e7 100644 --- a/src/plugins/ELF_RSS2/__init__.py +++ b/src/plugins/ELF_RSS2/__init__.py @@ -15,7 +15,7 @@ from .rss_class import Rss from .utils import send_message_to_admin -VERSION = "2.6.20" +VERSION = "2.6.21" __plugin_meta__ = PluginMetadata( name="ELF_RSS", @@ -34,6 +34,8 @@ def check_first_connect(_: LifecycleMetaEvent) -> bool: start_metaevent = on_metaevent(rule=check_first_connect, temp=True) +FIRST_BOOT_MESSAGE = "首次启动,目前没有订阅,请添加!\n另外,请检查配置文件的内容(详见部署教程)!" +BOOT_SUCCESS_MESSAGE = "ELF_RSS 订阅器启动成功!" # 启动时发送启动成功信息 @@ -49,11 +51,10 @@ async def start(bot: Bot) -> None: rss_list = Rss.read_rss() # 读取list if not rss_list: - if plugin_config.enable_boot_message: - await send_message_to_admin(f"第一次启动,你还没有订阅,记得添加哟!\n{boot_message}", bot) - logger.info("第一次启动,你还没有订阅,记得添加哟!") + await send_message_to_admin(f"{FIRST_BOOT_MESSAGE}\n{boot_message}", bot) + logger.info(FIRST_BOOT_MESSAGE) if plugin_config.enable_boot_message: - await send_message_to_admin(f"ELF_RSS 订阅器启动成功!\n{boot_message}", bot) - logger.info("ELF_RSS 订阅器启动成功!") + await send_message_to_admin(f"{BOOT_SUCCESS_MESSAGE}\n{boot_message}", bot) + logger.info(BOOT_SUCCESS_MESSAGE) # 创建检查更新任务 await asyncio.gather(*[tr.add_job(rss) for rss in rss_list if not rss.stop]) diff --git a/src/plugins/ELF_RSS2/command/rsshub_add.py b/src/plugins/ELF_RSS2/command/rsshub_add.py index 76d0235c..4138912c 100644 --- a/src/plugins/ELF_RSS2/command/rsshub_add.py +++ b/src/plugins/ELF_RSS2/command/rsshub_add.py @@ -57,7 +57,7 @@ async def handle_rsshub_routes( await RSSHUB_ADD.reject("路由名不能为空,请重新输入") return - rsshub_url = URL(config.rsshub) + rsshub_url = URL(str(config.rsshub)) # 对本机部署的 RSSHub 不使用代理 local_host = [ "localhost", diff --git a/src/plugins/ELF_RSS2/config.py b/src/plugins/ELF_RSS2/config.py index 23b5a8c3..3a2ee426 100644 --- a/src/plugins/ELF_RSS2/config.py +++ b/src/plugins/ELF_RSS2/config.py @@ -14,8 +14,10 @@ class ELFConfig(BaseConfig): class Config: extra = "allow" + # 代理地址 rss_proxy: Optional[str] = None rsshub: AnyHttpUrl = "https://rsshub.app" # type: ignore + # 备用 rsshub 地址 rsshub_backup: List[AnyHttpUrl] = [] db_cache_expire: int = 30 limit: int = 200 @@ -31,6 +33,7 @@ class Config: blockquote: bool = True black_word: Optional[List[str]] = None + # 百度翻译的 appid 和 key baidu_id: Optional[str] = None baidu_key: Optional[str] = None deepl_translator_api_key: Optional[str] = None @@ -39,10 +42,10 @@ class Config: qb_username: Optional[str] = None # qbittorrent 用户名 qb_password: Optional[str] = None # qbittorrent 密码 - qb_web_url: Optional[str] = None + qb_web_url: Optional[str] = None # qbittorrent 的 web 地址 qb_down_path: Optional[str] = None # qb 的文件下载地址,这个地址必须是 go-cqhttp 能访问到的 - down_status_msg_group: Optional[List[int]] = None - down_status_msg_date: int = 10 + down_status_msg_group: Optional[List[int]] = None # 下载进度消息提示群组 + down_status_msg_date: int = 10 # 下载进度检查及提示间隔时间,单位秒 pikpak_username: Optional[str] = None # pikpak 用户名 pikpak_password: Optional[str] = None # pikpak 密码 diff --git a/src/plugins/ELF_RSS2/rss_class.py b/src/plugins/ELF_RSS2/rss_class.py index 6833963e..6090915b 100644 --- a/src/plugins/ELF_RSS2/rss_class.py +++ b/src/plugins/ELF_RSS2/rss_class.py @@ -44,7 +44,7 @@ def __init__(self, data: Optional[Dict[str, Any]] = None): self.__dict__.update(data) # 返回订阅链接 - def get_url(self, rsshub: str = config.rsshub) -> str: + def get_url(self, rsshub: str = str(config.rsshub)) -> str: if URL(self.url).scheme in ["http", "https"]: return self.url # 先判断地址是否 / 开头 diff --git a/src/plugins/ELF_RSS2/rss_parsing.py b/src/plugins/ELF_RSS2/rss_parsing.py index 832986ef..51aa9613 100644 --- a/src/plugins/ELF_RSS2/rss_parsing.py +++ b/src/plugins/ELF_RSS2/rss_parsing.py @@ -136,7 +136,7 @@ async def fetch_rss_backup( ) -> Dict[str, Any]: d = {} for rsshub_url in config.rsshub_backup: - rss_url = rss.get_url(rsshub=rsshub_url) + rss_url = rss.get_url(rsshub=str(rsshub_url)) try: resp = await session.get(rss_url, proxy=proxy) d = feedparser.parse(await resp.text())