单盘API接口文档 - 本命盘API、行运盘API、太阳返照盘API

接口说明

单盘接口用于生成基本的星盘图,包括本命盘、太阳返照盘等类型。此接口支持自定义宫位系统,并可选择是否使用中文字体。

基本信息

请求URL /onechart
请求方式 POST
Content-Type application/json

请求参数

参数名 类型 必填 说明
chart_type String 星盘类型,例如:"natal"(本命盘)、"transit"(行运盘)
data Object 星盘数据对象,包含日期时间、经纬度、时区信息
data.datetime String 日期时间,格式:"YYYY-MM-DD HH:MM:SS"
data.lat Number 纬度,例如:39.9042
data.lon Number 经度,例如:116.4074
data.tz String 时区,例如:"8.0"(东八区)
house_system String 宫位系统,例如:"P"(普拉西德),默认为"P"
use_chinese_font Boolean 是否使用中文字体,默认false
include_svg Boolean 是否包含SVG图像,默认false

请求示例

        {
        "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_svg":true,
        }

返回参数

参数名 类型 说明
data Object 星盘数据
data.houses Object/Array 宫位数据
data.planets Object 行星位置数据
svg String 生成的星盘SVG图形数据

返回示例

        {
        "data": {
        "houses": {
            "1": 0.0,
            "2": 30.0,
            "3": 60.0,
            "4": 90.0,
            "5": 120.0,
            "6": 150.0,
            "7": 180.0,
            "8": 210.0,
            "9": 240.0,
            "10": 270.0,
            "11": 300.0,
            "12": 330.0
        },
        "planets": {
            "SUN": 280.5,
            "MOON": 120.3,
            "MERCURY": 295.8,
            "VENUS": 310.2,
            "MARS": 185.6,
            "JUPITER": 89.4,
            "SATURN": 275.9
        }
        },
        "svg": "..."
        }

测试代码示例

import requests
import json

class OnechartAPITest:
    def __init__(self, base_url="http://chart.12sign.top"):
        self.base_url = base_url
    
    def test_natal_chart(self):
        """测试本命盘API"""
        url = f"{self.base_url}/onechart"
        data = {
            "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
        }
        
        try:
            response = requests.post(url, json=data)
            response.raise_for_status()
            result = response.json()
            
            print("本命盘API测试成功")
            print(f"返回数据包含: {list(result.keys())}")
            print("完整的返回数据:")
            print(result)
            # 保存SVG文件
            if 'svg' in result and result['svg']:
                with open('natal_chart_test.svg', 'w', encoding='utf-8') as f:
                    f.write(result['svg'])
                print("SVG文件已保存为 natal_chart_test.svg")
            
            return result
            
        except requests.exceptions.RequestException as e:
            print(f"请求错误: {e}")
            return None
        except json.JSONDecodeError as e:
            print(f"JSON解析错误: {e}")
            return None
    
    def test_transit_chart(self):
        """测试行运盘API"""
        url = f"{self.base_url}/onechart"
        data = {
            "chart_type": "transit",
            "data": {
                "datetime": "2024-01-01 12:00:00",
                "lat": 39.9042,
                "lon": 116.4074,
                "tz": "8.0"
            },
            "house_system": "P",
            "use_chinese_font": True
        }
        
        try:
            response = requests.post(url, json=data)
            response.raise_for_status()
            result = response.json()
            
            print("行运盘API测试成功")
            print(f"返回数据包含: {list(result.keys())}")
            print("完整的返回数据:")
            print(result)
            # 保存SVG文件
            if 'svg' in result and result['svg']:
                with open('transit_chart_test.svg', 'w', encoding='utf-8') as f:
                    f.write(result['svg'])
                print("SVG文件已保存为 transit_chart_test.svg")
            
            return result
            
        except requests.exceptions.RequestException as e:
            print(f"请求错误: {e}")
            return None
        except json.JSONDecodeError as e:
            print(f"JSON解析错误: {e}")
            return None

# 使用示例
if __name__ == "__main__":
    tester = OnechartAPITest()
    
    print("=== 测试本命盘API ===")
    natal_result = tester.test_natal_chart()
    
    print("\n=== 测试行运盘API ===")
    transit_result = tester.test_transit_chart()

注意事项

  • 日期时间格式必须严格遵循 YYYY-MM-DD HH:MM:SS 的格式
  • 经纬度使用数字格式,东经北纬为正,西经南纬为负
  • 时区使用字符串格式的数字,东区为正,西区为负,例如:"8.0"、"-5.0"
  • 宫位系统为可选参数,默认为"P"(普拉西德系统)
  • 支持的chart_type包括:"natal"(本命盘)、"transit"(行运盘)
  • 返回的SVG字段可能为null,表示未生成图形
  • API已通过完整测试,确保参数格式正确