Files
astrbot_plugin_jx3/core/api_data.py
T
2025-09-22 18:04:12 +08:00

84 lines
2.6 KiB
Python

# core/request.py
import requests
import json
from astrbot.api import logger
def api_data_post(api_url, json_data=None, outdata=None):
"""
获取数据的POST请求函数
Args:
api_url: API地址
json_data: POST请求的JSON数据
outdata: 返回数据中要提取的字段
Returns:
成功时返回outdata字段的数据,失败返回None
"""
try:
response = requests.post(api_url, json=json_data, timeout=10, verify=False)
response.raise_for_status()
data = response.json()
# 检查是否有code字段
if 'code' in data:
# 有code字段时,检查是否成功
if data.get('code') not in [200, "0", 0]:
logger.error(f"API返回错误:{data.get('code', '未知状态')} {data.get('msg', '未知错误')}")
return None
else:
# 无code字段时,检查数据是否为空
if not data:
logger.error("API返回空数据")
return None
if outdata is None or outdata == "":
return data
return data.get(outdata, {})
except requests.exceptions.RequestException as e:
logger.error(f"请求出错: {e}")
return None
except json.JSONDecodeError as e:
logger.error(f"JSON解析错误: {e}")
return None
def api_data_get(api_url,params=None,outdata=None):
"""
获取数据的GET请求函数
Args:
api_url: API地址
params: 其他查询参数
Returns:
成功时返回outdata字段的数据,失败返回None
"""
try:
response = requests.get(api_url, params, timeout=10, verify=False)
response.raise_for_status()
data = response.json()
# 检查是否有code字段
if 'code' in data:
# 有code字段时,检查是否成功
if data.get('code') not in [200, "0", 0]:
logger.error(f"API返回错误:{data.get('code', '未知状态')} {data.get('msg', '未知错误')}")
return None
else:
# 无code字段时,检查数据是否为空
if not data:
logger.error("API返回空数据")
return None
if outdata is None or outdata == "":
return data
return data.get(outdata, {})
except requests.exceptions.RequestException as e:
logger.error(f"请求出错: {e}")
return None
except json.JSONDecodeError as e:
logger.error(f"JSON解析错误: {e}")
return None