紫微斗数API文档
接口说明
本接口用于生成紫微斗数星盘,需要提供出生日期、时间、性别等信息,计算并生成完整的紫微斗数星盘数据。紫微斗数是中国传统占星术,通过出生信息分析12宫位的星曜分布、四化、大限、流年等信息。
基本信息
- 接口URL:
/api/astrolabe
- 请求方式: GET
- Content-Type: application/json
- 接口地址: https://chart.12sign.top/api/astrolabe
请求参数
| 参数名 |
类型 |
必选 |
说明 |
| date |
string |
是 |
出生日期,格式:YYYY-MM-DD |
| time |
number |
否 |
出生时辰(0-11),0=子时、1=丑时、2=寅时、3=卯时、4=辰时、5=巳时、6=午时、7=未时、8=申时、9=酉时、10=戌时、11=亥时 |
| gender |
string |
否 |
性别,默认"女",可选值:"男"、"女" |
| fixLeap |
boolean |
否 |
是否调整闰月,默认false |
| lang |
string |
否 |
语言,默认"zh-CN",支持多语言输入输出 |
请求示例
{
"date": "2000-08-16",
"time": 2,
"gender": "男",
"fixLeap": true,
"lang": "zh-CN"
}
返回参数
| 参数名 |
类型 |
说明 |
| meta |
object |
元数据,包含阳历日期、农历日期、中文日期、时辰、星座、生肖、五行局、命宫地支、身宫地支、命宫索引 |
| palaces |
array |
12宫位数据数组,每个宫位包含索引、名称、天干、地支、主星、辅星、杂耀、四化、大限信息等 |
| surrounded |
object |
三方四正信息,包含命宫、财帛宫、官禄宫、迁移宫的索引 |
| horoscope |
object |
运限信息,包含大限、流年、流月、流日、流时的星曜信息 |
返回示例
{
"meta": {
"solarDate": "2000-08-16",
"lunarDate": "2000-7-17",
"chineseDate": "庚辰年甲申月丁丑日",
"time": "寅时",
"sign": "狮子座",
"zodiac": "龙",
"fiveElementsClass": "丁火",
"earthlyBranchOfSoulPalace": "戌",
"earthlyBranchOfBodyPalace": "辰",
"soulIndex": 10
},
"palaces": [
{
"index": 0,
"name": "命宫",
"heavenlyStem": "辛",
"earthlyBranch": "巳",
"majorStars": ["紫微", "天机"],
"minorStars": ["文昌", "文曲"],
"adjectiveStars": ["左辅", "右弼"],
"mutaged": "禄:天机",
"decadal": {
"range": [26, 35],
"heavenlyStem": "丙"
},
"ages": [26, 35],
"suiqian12": "破军",
"jiangqian12": "太阳"
}
],
"surrounded": {
"target": 10,
"opposite": 4,
"wealth": 2,
"career": 8
},
"horoscope": {
"decadal": {
"starsNames": [["贪狼", "巨门"], ["天相", "天梁"]]
},
"yearly": {
"starsNames": [["廉贞", "破军"], ["七杀", "天同"]],
"yearlyDecStar": {
"suiqian12": ["破军", "七杀", "天同", "廉贞"],
"jiangqian12": ["太阳", "武曲", "太阴", "贪狼"]
}
},
"monthly": {
"starsNames": [["天府", "太阴"], ["太阳", "天机"]]
},
"daily": {
"starsNames": [["紫微", "天机"], ["天相", "天梁"]]
},
"hourly": {
"starsNames": [["天府", "太阴"], ["太阳", "天机"]]
}
}
}
Python测试代码示例
import requests
import json
# 测试紫微斗数API
def test_ziwei_astrolabe(base_url="https://chart.12sign.top"):
url = f"{base_url}/api/astrolabe"
params = {
"date": "2000-08-16",
"time": 2,
"gender": "男",
"fixLeap": True,
"lang": "zh-CN"
}
try:
print("正在测试紫微斗数API...")
response = requests.get(url, params=params)
print(f"响应状态码: {response.status_code}")
if response.status_code == 200:
data = response.json()
print("紫微斗数API测试成功!")
print(f"返回数据包含: {list(data.keys())}")
# 打印基本信息
if 'meta' in data:
meta = data['meta']
print("\n基本信息:")
print(f" 阳历日期: {meta.get('solarDate')}")
print(f" 农历日期: {meta.get('lunarDate')}")
print(f" 星座: {meta.get('sign')}")
print(f" 生肖: {meta.get('zodiac')}")
print(f" 命宫索引: {meta.get('soulIndex')}")
# 保存JSON文件
with open('test_outputs/ziwei_result.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
print("JSON文件已保存: test_outputs/ziwei_result.json")
return data
else:
print(f"API请求失败: {response.status_code}")
print(f"错误信息: {response.text}")
return None
except Exception as e:
print(f"请求出错: {e}")
return None
# 测试不同出生信息的星盘
def test_multiple_charts():
test_cases = [
{
"name": "女命子时",
"params": {"date": "2000-01-01", "time": 0, "gender": "女"}
},
{
"name": "男命寅时",
"params": {"date": "1990-08-16", "time": 2, "gender": "男"}
},
{
"name": "繁体中文",
"params": {"date": "1985-06-15", "time": 4, "gender": "女", "lang": "zh-TW"}
},
{
"name": "英文输出",
"params": {"date": "1995-12-25", "time": 6, "gender": "男", "lang": "en-US"}
}
]
for case in test_cases:
print(f"\n=== 测试{case['name']}星盘 ===")
try:
response = requests.get("https://chart.12sign.top/api/astrolabe", params=case["params"])
if response.status_code == 200:
print(f"{case['name']}星盘生成成功")
else:
print(f"{case['name']}星盘生成失败: {response.status_code}")
except Exception as e:
print(f"{case['name']}星盘测试出错: {e}")
if __name__ == "__main__":
# 基本测试
test_ziwei_astrolabe()
# 多案例测试
test_multiple_charts()
注意事项
- 本接口支持跨域(CORS),可以直接从浏览器调用
- 日期格式必须严格遵循YYYY-MM-DD的格式
- 时辰参数为0-11的数字,代表十二时辰
- 时辰0代表子时(23:00-01:00),11代表亥时(21:00-23:00)
- 性别参数必须为"男"或"女",不能使用英文
- 支持多种语言输入输出
- fixLeap参数用于闰月调整,一般情况设为false
- 返回数据包含完整的12宫位信息、三方四正和运限信息
- palaces数组包含12个宫位,索引0-11对应12个宫位
- horoscope包含大限、流年、流月、流日、流时的星曜信息
- API支持GET请求,不支持POST请求
- 建议添加User-Agent等HTTP头以避免某些限制