mirror of
https://github.com/whyour/qinglong.git
synced 2026-07-01 04:40:38 +08:00
+11
-1
@@ -211,7 +211,17 @@ export FSKEY=""
|
||||
export QMSG_KEY=""
|
||||
export QMSG_TYPE=""
|
||||
|
||||
## 20. 自定义通知
|
||||
## 20.Ntfy
|
||||
## 官方文档: https://docs.ntfy.sh
|
||||
## ntfy_url 填写ntfy地址,如https://ntfy.sh
|
||||
## ntfy_topic 填写ntfy的消息应用topic
|
||||
## ntfy_priority 填写推送消息优先级,默认为3
|
||||
export NTFY_URL=""
|
||||
export NTFY_TOPIC=""
|
||||
export NTFY_PRIORITY="3"
|
||||
|
||||
|
||||
## 21. 自定义通知
|
||||
## 自定义通知 接收回调的URL
|
||||
export WEBHOOK_URL=""
|
||||
## WEBHOOK_BODY 和 WEBHOOK_HEADERS 多个参数时,直接换行或者使用 $'\n' 连接多行字符串,比如 export dd="line 1"$'\n'"line 2"
|
||||
|
||||
@@ -95,6 +95,10 @@ const push_config = {
|
||||
WEBHOOK_HEADERS: '', // 自定义通知 请求头
|
||||
WEBHOOK_METHOD: '', // 自定义通知 请求方法
|
||||
WEBHOOK_CONTENT_TYPE: '', // 自定义通知 content-type
|
||||
|
||||
NTFY_URL: '', // ntfy地址,如https://ntfy.sh,默认为https://ntfy.sh
|
||||
NTFY_TOPIC: '', // ntfy的消息应用topic
|
||||
NTFY_PRIORITY: '3', // 推送消息优先级,默认为3
|
||||
};
|
||||
|
||||
for (const key in push_config) {
|
||||
@@ -1188,6 +1192,42 @@ function webhookNotify(text, desp) {
|
||||
});
|
||||
}
|
||||
|
||||
function ntfyNotify(text, desp) {
|
||||
return new Promise((resolve) => {
|
||||
const { NTFY_URL, NTFY_TOPIC, NTFY_PRIORITY } = push_config;
|
||||
if (NTFY_TOPIC) {
|
||||
const options = {
|
||||
url: NTFY_URL || `https://ntfy.sh`,
|
||||
body: `${desp}\n${text}`,
|
||||
headers: {
|
||||
'Title': 'qinglong',
|
||||
'Priority': NTFY_PRIORITY || '3'
|
||||
},
|
||||
timeout,
|
||||
};
|
||||
$.post(options, (err, resp, data) => {
|
||||
try {
|
||||
if (err) {
|
||||
console.log('Ntfy 通知调用API失败😞\n', err);
|
||||
} else {
|
||||
if (data.success) {
|
||||
console.log('Ntfy 发送通知消息成功🎉\n');
|
||||
} else {
|
||||
console.log(`Ntfy 发送通知消息异常 ${JSON.stringify(data)}`);
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
$.logErr(e, resp);
|
||||
} finally {
|
||||
resolve(data);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function parseString(input, valueFormatFn) {
|
||||
const regex = /(\w+):\s*((?:(?!\n\w+:).)*)/g;
|
||||
const matches = {};
|
||||
@@ -1316,6 +1356,7 @@ async function sendNotify(text, desp, params = {}) {
|
||||
chronocatNotify(text, desp), // Chronocat
|
||||
webhookNotify(text, desp), // 自定义通知
|
||||
qmsgNotify(text, desp), // 自定义通知
|
||||
ntfyNotify(text, desp), // Ntfy
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
+32
-1
@@ -117,6 +117,10 @@ push_config = {
|
||||
'WEBHOOK_HEADERS': '', # 自定义通知 请求头
|
||||
'WEBHOOK_METHOD': '', # 自定义通知 请求方法
|
||||
'WEBHOOK_CONTENT_TYPE': '' # 自定义通知 content-type
|
||||
|
||||
'NTFY_URL': '', # ntfy地址,如https://ntfy.sh
|
||||
'NTFY_TOPIC': '', # ntfy的消息应用topic
|
||||
'NTFY_PRIORITY':'3', # 推送消息优先级,默认为3
|
||||
}
|
||||
# fmt: on
|
||||
|
||||
@@ -777,6 +781,32 @@ def chronocat(title: str, content: str) -> None:
|
||||
print(f"QQ群消息:{ids}推送失败!")
|
||||
|
||||
|
||||
def ntfy(title: str, content: str) -> None:
|
||||
"""
|
||||
通过 Ntfy 推送消息
|
||||
"""
|
||||
if not push_config.get("NTFY_TOPIC"):
|
||||
print("ntfy 服务的 NTFY_TOPIC 未设置!!\n取消推送")
|
||||
return
|
||||
print("ntfy 服务启动")
|
||||
priority = '3'
|
||||
if not push_config.get("NTFY_PRIORITY"):
|
||||
print("ntfy 服务的NTFY_PRIORITY 未设置!!默认设置为3")
|
||||
else:
|
||||
priority = push_config.get("NTFY_PRIORITY")
|
||||
data = (title + "\n" +content).encode(encoding='utf-8')
|
||||
headers = {
|
||||
"Title": "qinglong",
|
||||
"Priority": priority
|
||||
}
|
||||
url = push_config.get("NTFY_URL") + "/" + push_config.get("NTFY_TOPIC")
|
||||
response = requests.post(url, data=data, headers=headers)
|
||||
|
||||
if response["code"] == 200:
|
||||
print("Ntfy 推送成功!")
|
||||
else:
|
||||
print("Ntfy 推送失败!错误信息:", response)
|
||||
|
||||
def parse_headers(headers):
|
||||
if not headers:
|
||||
return {}
|
||||
@@ -937,7 +967,8 @@ def add_notify_function():
|
||||
notify_function.append(chronocat)
|
||||
if push_config.get("WEBHOOK_URL") and push_config.get("WEBHOOK_METHOD"):
|
||||
notify_function.append(custom_notify)
|
||||
|
||||
if push_config.get("NTFY_TOPIC"):
|
||||
notify_function.append(ntfy)
|
||||
if not notify_function:
|
||||
print(f"无推送渠道,请检查通知变量是否正确")
|
||||
return notify_function
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user