dyspark / utils /hitokoto.py
cacode's picture
Upload 33 files
d10e42a verified
import requests
from utils.config import get_config
hitokotoApi = "https://v1.hitokoto.cn/"
allHitokotoTypes = {
"动画": "a",
"漫画": "b",
"游戏": "c",
"文学": "d",
"原创": "e",
"来自网络": "f",
"其他": "g",
"影视": "h",
"诗词": "i",
"哲学": "k",
"抖机灵": "l",
}
def request_hitokoto():
"""请求一言 API 获取一句话"""
config = get_config()
api_url = hitokotoApi
for t in allHitokotoTypes.keys():
if t in config["hitokotoTypes"]:
if "?" not in api_url:
api_url += "?"
if "c=" in api_url:
api_url += f"&c={allHitokotoTypes[t]}"
else:
api_url += f"c={allHitokotoTypes[t]}"
try:
response = requests.get(api_url, timeout=10)
response.raise_for_status()
data = response.json()
theFrom = data.get("from")
if theFrom is None or theFrom.strip() == "":
theFrom = "未知来源"
theFromWho = data.get("from_who")
if theFromWho is None or theFromWho.strip() == "":
theFromWho = "未知作者"
return f"{data['hitokoto']} —— {theFrom} ({theFromWho})"
except Exception as e:
return "[error] 无法获取一言内容"