Spaces:
Running
Running
|
Download USAGE_EXAMPLES.md from sisithefox/astrologybazi-api: direct link, hf CLI and curl.
- Browser
- Download file 10.8 kB
-
https://huggingface.co/spaces/sisithefox/astrologybazi-api/resolve/main/USAGE_EXAMPLES.md
- Command line
-
hf download hf://spaces/sisithefox/astrologybazi-api/USAGE_EXAMPLES.md
-
curl -L -o USAGE_EXAMPLES.md https://huggingface.co/spaces/sisithefox/astrologybazi-api/resolve/main/USAGE_EXAMPLES.md
10.8 kB
๐ฎ AstrologyBazi API - Usage Examples
Quick Reference
Base URL: https://sisithefox-astrologybazi-api.hf.space
Authentication: Add header x-api-key: your_api_key_here
Example 1: Basic BaZi Calculation (cURL)
curl -X POST "https://sisithefox-astrologybazi-api.hf.space/calculate-bazi" \
-H "Content-Type: application/json" \
-H "x-api-key: your_api_key_here" \
-d '{
"birth_date": "1990-01-15",
"birth_time": "08:30",
"gender": "male",
"is_lunar": false
}'
Example 2: Python Integration
import requests
API_URL = "https://sisithefox-astrologybazi-api.hf.space/calculate-bazi"
API_KEY = "your_api_key_here"
def get_bazi_chart(birth_date, birth_time, gender="male", is_lunar=False):
"""Get BaZi chart from API"""
headers = {
"Content-Type": "application/json",
"x-api-key": API_KEY
}
data = {
"birth_date": birth_date,
"birth_time": birth_time,
"gender": gender,
"is_lunar": is_lunar
}
response = requests.post(API_URL, headers=headers, json=data)
if response.status_code == 200:
result = response.json()
return result['data']
else:
raise Exception(f"API Error: {response.status_code} - {response.text}")
# Example usage
bazi_data = get_bazi_chart("1990-01-15", "08:30")
print("Day Master:", bazi_data['day_master']['gan'])
print("Element:", bazi_data['day_master']['element'])
print("\nFive Elements:")
for element, count in bazi_data['five_elements'].items():
print(f" {element}: {count}")
Example 3: JavaScript/TypeScript Integration
const API_URL = 'https://sisithefox-astrologybazi-api.hf.space/calculate-bazi';
const API_KEY = 'your_api_key_here';
interface BaZiRequest {
birth_date: string;
birth_time: string;
gender: 'male' | 'female';
is_lunar: boolean;
}
async function getBaZiChart(request: BaZiRequest) {
const response = await fetch(API_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': API_KEY,
},
body: JSON.stringify(request),
});
if (!response.ok) {
throw new Error(`API Error: ${response.status}`);
}
const result = await response.json();
return result.data;
}
// Example usage
const baziData = await getBaZiChart({
birth_date: '1990-01-15',
birth_time: '08:30',
gender: 'male',
is_lunar: false,
});
console.log('Day Master:', baziData.day_master.gan);
console.log('Five Elements:', baziData.five_elements);
Example 4: React Component
import { useState } from 'react';
const API_URL = 'https://sisithefox-astrologybazi-api.hf.space/calculate-bazi';
const API_KEY = process.env.NEXT_PUBLIC_BAZI_API_KEY;
interface BaZiFormData {
birthDate: string;
birthTime: string;
gender: 'male' | 'female';
isLunar: boolean;
}
export default function BaZiCalculator() {
const [formData, setFormData] = useState<BaZiFormData>({
birthDate: '',
birthTime: '',
gender: 'male',
isLunar: false,
});
const [result, setResult] = useState<any>(null);
const [loading, setLoading] = useState(false);
const calculateBaZi = async () => {
setLoading(true);
try {
const response = await fetch(API_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': API_KEY!,
},
body: JSON.stringify({
birth_date: formData.birthDate,
birth_time: formData.birthTime,
gender: formData.gender,
is_lunar: formData.isLunar,
}),
});
const data = await response.json();
setResult(data.data);
} catch (error) {
console.error('BaZi calculation failed:', error);
} finally {
setLoading(false);
}
};
return (
<div className="bazi-calculator">
<h2>BaZi Calculator</h2>
<input
type="date"
value={formData.birthDate}
onChange={(e) => setFormData({ ...formData, birthDate: e.target.value })}
/>
<input
type="time"
value={formData.birthTime}
onChange={(e) => setFormData({ ...formData, birthTime: e.target.value })}
/>
<button onClick={calculateBaZi} disabled={loading}>
{loading ? 'Calculating...' : 'Calculate BaZi'}
</button>
{result && (
<div className="result">
<h3>Day Master: {result.day_master.gan}</h3>
<p>Element: {result.day_master.element}</p>
<h4>Four Pillars:</h4>
<ul>
<li>Year: {result.bazi_chart.year.pillar}</li>
<li>Month: {result.bazi_chart.month.pillar}</li>
<li>Day: {result.bazi_chart.day.pillar}</li>
<li>Hour: {result.bazi_chart.hour.pillar}</li>
</ul>
</div>
)}
</div>
);
}
Example 5: Lunar Calendar Support
# Chinese Lunar Calendar example
# For someone born on lunar calendar: 1977ๅนดๅๅ8ๆ11ๆฅ
response = requests.post(
"https://sisithefox-astrologybazi-api.hf.space/calculate-bazi",
headers={"x-api-key": API_KEY},
json={
"birth_date": "1977-08-11", # Lunar date
"birth_time": "19:00",
"gender": "female",
"is_lunar": True # Important: Set to True for lunar calendar
}
)
result = response.json()
print("Solar date:", result['data']['solar_date']) # Auto-converted to solar
print("Lunar date:", result['data']['lunar_date'])
Example 6: Integration with astrologybazi.com
// Face-reading app integration
import { BaZiAPI } from './lib/bazi-api';
async function generateFortuneReading(userPhoto: File, birthInfo: BirthInfo) {
// Step 1: Analyze face with AI
const faceAnalysis = await analyzeFaceWithAI(userPhoto);
// Step 2: Get BaZi chart
const baziChart = await BaZiAPI.calculate({
birth_date: birthInfo.date,
birth_time: birthInfo.time,
gender: birthInfo.gender,
is_lunar: false,
});
// Step 3: Combine face reading + BaZi for comprehensive analysis
const fortuneReading = {
faceReading: faceAnalysis,
baziChart: baziChart,
dayMaster: baziChart.day_master,
fiveElements: baziChart.five_elements,
// AI interpretation combining both
interpretation: await generateAIInterpretation({
face: faceAnalysis,
bazi: baziChart,
}),
};
return fortuneReading;
}
Example 7: Error Handling
def safe_bazi_calculation(birth_date, birth_time):
"""BaZi calculation with proper error handling"""
try:
response = requests.post(
"https://sisithefox-astrologybazi-api.hf.space/calculate-bazi",
headers={
"Content-Type": "application/json",
"x-api-key": API_KEY
},
json={
"birth_date": birth_date,
"birth_time": birth_time,
"gender": "male",
"is_lunar": False
},
timeout=10
)
response.raise_for_status()
return response.json()['data']
except requests.exceptions.HTTPError as e:
if e.response.status_code == 403:
print("Invalid API key")
elif e.response.status_code == 400:
print("Invalid input data:", e.response.json()['detail'])
else:
print(f"HTTP error: {e}")
except requests.exceptions.Timeout:
print("Request timeout - API is slow or unavailable")
except Exception as e:
print(f"Unexpected error: {e}")
return None
Example 8: Batch Processing
import asyncio
import aiohttp
async def batch_calculate_bazi(birth_records):
"""Calculate BaZi for multiple people efficiently"""
async def calculate_one(session, record):
async with session.post(
"https://sisithefox-astrologybazi-api.hf.space/calculate-bazi",
headers={"x-api-key": API_KEY},
json=record
) as response:
result = await response.json()
return result['data']
async with aiohttp.ClientSession() as session:
tasks = [calculate_one(session, record) for record in birth_records]
results = await asyncio.gather(*tasks)
return results
# Example usage
birth_records = [
{"birth_date": "1990-01-15", "birth_time": "08:30", "gender": "male", "is_lunar": False},
{"birth_date": "1985-06-20", "birth_time": "14:45", "gender": "female", "is_lunar": False},
{"birth_date": "1992-03-10", "birth_time": "22:00", "gender": "male", "is_lunar": False},
]
results = asyncio.run(batch_calculate_bazi(birth_records))
Example 9: Simplified API for Mobile Apps
// iOS Swift example
struct BaZiService {
static let apiURL = "https://sisithefox-astrologybazi-api.hf.space/calculate-bazi-simple"
static let apiKey = "your_api_key_here"
struct BaZiRequest: Codable {
let birth_date: String
let birth_time: String
let gender: String
let is_lunar: Bool
}
static func calculateBaZi(birthDate: String, birthTime: String) async throws -> [String: Any] {
guard let url = URL(string: apiURL) else {
throw URLError(.badURL)
}
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue(apiKey, forHTTPHeaderField: "x-api-key")
let body = BaZiRequest(
birth_date: birthDate,
birth_time: birthTime,
gender: "male",
is_lunar: false
)
request.httpBody = try JSONEncoder().encode(body)
let (data, _) = try await URLSession.shared.data(for: request)
let result = try JSONDecoder().decode([String: Any].self, from: data)
return result
}
}
Testing the API
Visit the interactive documentation:
Swagger UI: https://sisithefox-astrologybazi-api.hf.space/docs
You can test all endpoints directly in your browser!
Common Issues
1. 403 Forbidden Error
- Cause: Invalid or missing API key
- Solution: Contact SisiTheFox for API access
2. 400 Bad Request
- Cause: Invalid date/time format
- Solution: Use
YYYY-MM-DDfor date,HH:MMfor time
3. 500 Internal Server Error
- Cause: BaZi calculation failed (rare)
- Solution: Check your input data, contact support if persists
Need Help?
- ๐ Full Documentation: https://sisithefox-astrologybazi-api.hf.space/docs
- ๐ง Email: contact@sisithefox.com
- ๐ Website: https://sisithefox.com
Made with โค๏ธ by SisiTheFox