本命盘API文档
接口说明
本接口用于生成本命盘,需要提供出生日期时间、地点信息,计算并绘制本命星盘图。本命盘显示个人出生时刻的星体位置和宫位分布,是占星学分析的基础。
基本信息
| 参数 | 值 |
|---|---|
| Base URL | https://chart.12sign.top |
| 接口URL | /onechart |
| 请求方式 | POST |
| Content-Type | application/json |
请求参数
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| chart_type | string | 是 | 固定值:"natal" |
| data.datetime | string | 是 | 出生日期时间,格式:YYYY-MM-DD HH:MM |
| data.lat | number | 是 | 出生地纬度 |
| data.lon | number | 是 | 出生地经度 |
| data.tz | string | 是 | 出生地时区,格式:数字字符串,如"8.0"表示UTC+8 |
| house_system | string | 否 | 宫位系统,默认为普拉西德分宫制(P) |
| use_chinese_font | boolean | 否 | 是否使用中文字体,默认false |
| include_svg | True | 否 | 是否返回SVG |
请求示例
{
"chart_type": "natal",
"data": {
"datetime": "1990-01-01 12:00:00",
"lat": 39.9042,
"lon": 116.4074,
"tz": "8.0"
},
"house_system": "P",
"use_chinese_font": true,
"include_analysis": true
}
返回参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| success | boolean | 请求是否成功 |
| data | object | 星盘数据,包含行星位置、宫位等信息 |
| svg | string | 星盘SVG图形数据 |
返回示例
{
"data": {
"chart_type": "natal",
"birth_date": "1990-01-01 12:00:00",
"planets": {
"sun": {"degree": 280.5, "sign": "Capricorn", "house": 10},
"moon": {"degree": 125.3, "sign": "Leo", "house": 5},
"mercury": {"degree": 295.8, "sign": "Capricorn", "house": 10},
"venus": {"degree": 310.2, "sign": "Aquarius", "house": 11},
"mars": {"degree": 185.6, "sign": "Libra", "house": 7},
"jupiter": {"degree": 89.4, "sign": "Cancer", "house": 4},
"saturn": {"degree": 275.9, "sign": "Capricorn", "house": 10},
"uranus": {"degree": 305.1, "sign": "Aquarius", "house": 11},
"neptune": {"degree": 285.3, "sign": "Capricorn", "house": 10},
"pluto": {"degree": 295.7, "sign": "Capricorn", "house": 10}
},
"houses": {
"1": {"degree": 45.2, "sign": "Taurus"},
"2": {"degree": 75.8, "sign": "Gemini"},
"3": {"degree": 105.4, "sign": "Cancer"},
"4": {"degree": 135.0, "sign": "Leo"},
"5": {"degree": 165.6, "sign": "Virgo"},
"6": {"degree": 195.2, "sign": "Libra"},
"7": {"degree": 225.8, "sign": "Scorpio"},
"8": {"degree": 255.4, "sign": "Sagittarius"},
"9": {"degree": 285.0, "sign": "Capricorn"},
"10": {"degree": 315.6, "sign": "Aquarius"},
"11": {"degree": 345.2, "sign": "Pisces"},
"12": {"degree": 15.8, "sign": "Aries"}
}
},
"svg": ""
}
Python测试代码示例
import requests
import json
import os
# 测试本命盘API
def test_natal_chart(base_url="http://chart.12sign.top"):
url = f"{base_url}/onechart"
payload = {
"chart_type": "natal",
"data": {
"datetime": "1990-01-01 12:00:00",
"lon": 116.4,
"lat": 39.9,
"tz": "8.0"
},
"house_system": "P",
"use_chinese_font": True,
"include_svg": True
}
try:
print("正在测试本命盘API...")
response = requests.post(url, json=payload, headers={'Content-Type': 'application/json'})
print(f"响应状态码: {response.status_code}")
if response.status_code == 200:
data = response.json()
print("本命盘API测试成功!")
print(f"返回数据包含: {list(data.keys())}")
print("完整的返回数据:")
print(data)
# 保存SVG文件
if 'svg' in data and data['svg']:
os.makedirs('test_outputs', exist_ok=True)
with open('test_outputs/natal_chart_test.svg', 'w', encoding='utf-8') as f:
f.write(data['svg'])
print("SVG文件已保存: test_outputs/natal_chart_test.svg")
# 打印行星位置信息
if 'data' in data and 'planets' in data['data']:
print("\n行星位置信息:")
for planet, info in data['data']['planets'].items():
print(f"{planet}: {info}")
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_natal_charts():
test_cases = [
{
"name": "北京出生",
"data": {
"datetime": "1990-01-01 12:00:00",
"lon": 116.4,
"lat": 39.9,
"tz": "8.0"
}
},
{
"name": "上海出生",
"data": {
"datetime": "1985-06-15 14:30:00",
"lon": 121.5,
"lat": 31.2,
"tz": "8.0"
}
},
{
"name": "纽约出生",
"data": {
"datetime": "1992-12-25 08:15:00",
"lon": -74.0,
"lat": 40.7,
"tz": "-5.0"
}
}
]
for case in test_cases:
print(f"\n=== 测试{case['name']}本命盘 ===")
payload = {
"chart_type": "natal",
"data": case["data"],
"house_system": "P",
"use_chinese_font": True
}
try:
response = requests.post("http://chart.12sign.top/onechart", json=payload)
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_natal_chart()
# 多案例测试
test_multiple_natal_charts()
在线测试
请求地址:
https://chart.12sign.top/onechart
请求参数(JSON):
返回结果:
点击“发送请求”后在此显示结果
星盘图:
SVG星盘图将在请求成功后显示在这里