Files
soul-yongping/scripts/post_to_feishu.py
2026-03-07 22:58:43 +08:00

83 lines
2.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
发文本到卡若日志飞书群webhook
用法:
python3 post_to_feishu.py "任意文本"
python3 post_to_feishu.py --release 9.23 --title "9.23 第110场Soul变现逻辑全程公开"
"""
import argparse
import json
import os
from pathlib import Path
from urllib.request import Request, urlopen
CONFIG_PATH = Path(__file__).resolve().parent / "feishu_publish_config.json"
WEBHOOK_ENV = "FEISHU_KARUO_LOG_WEBHOOK"
DEFAULT_WEBHOOK = "https://open.feishu.cn/open-apis/bot/v2/hook/8b7f996e-2892-4075-989f-aa5593ea4fbc"
WIKI_URL = "https://cunkebao.feishu.cn/wiki/FNP6wdvNKij7yMkb3xCce0CYnpd"
MINIPROGRAM_BASE = "https://soul.quwanzhi.com/read"
MATERIAL_HINT = "材料找卡若AI拿"
def load_webhook():
if os.environ.get(WEBHOOK_ENV):
return os.environ.get(WEBHOOK_ENV)
if CONFIG_PATH.exists():
with open(CONFIG_PATH, "r", encoding="utf-8") as f:
data = json.load(f)
return data.get("feishu_karuo_log_webhook") or data.get("webhook")
return DEFAULT_WEBHOOK
def send_text(text: str) -> bool:
webhook = load_webhook()
if not webhook:
print("未配置 webhook请设置 feishu_publish_config.json 或 FEISHU_KARUO_LOG_WEBHOOK")
return False
payload = {"msg_type": "text", "content": {"text": text}}
req = Request(
webhook,
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"},
method="POST",
)
try:
with urlopen(req, timeout=10) as resp:
r = json.loads(resp.read().decode())
if r.get("code") != 0:
print("飞书返回:", r)
return False
print("已发送到卡若日志飞书群")
return True
except Exception as e:
print("发送失败:", e)
return False
def main():
parser = argparse.ArgumentParser()
parser.add_argument("text", nargs="?", help="要发送的文本")
parser.add_argument("--release", help="章节 id如 9.23")
parser.add_argument("--title", help="文章标题")
args = parser.parse_args()
if args.release:
title = args.title or args.release
text = f"""📢 新发布
{title}
📱 小程序:{MINIPROGRAM_BASE}/{args.release}
📚 飞书目录:{WIKI_URL}
{MATERIAL_HINT}"""
send_text(text)
elif args.text:
send_text(args.text)
else:
parser.print_help()
if __name__ == "__main__":
main()