本命盘API文档

交互式演示
直接生成星盘,查看效果
查看SDK →

接口说明

本接口用于生成本命盘,需要提供出生日期时间、地点信息,计算并绘制本命星盘图。本命盘显示个人出生时刻的星体位置和宫位分布,是占星学分析的基础。

基本信息

参数 值
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星盘图将在请求成功后显示在这里