API de métaphysique chinoise
53 endpoints répartis en quatre familles: BaZi (18), calendrier et zodiaque chinois (15), Zi Wei Dou Shu (14) et I Ching (6). Le calendrier est dérivé des éphémérides, et non de tables de dates, il fonctionne donc pour les années 2 à 2899 et ne dépend pas de la mise à jour d’un référentiel par quelqu’un.
Ce qui est inclus
Section intitulée « Ce qui est inclus »| Famille | Endpoints | État |
|---|---|---|
| BaZi: piliers et analyse | 18 | Appareil classique complet |
| Calendrier, zodiaque, feng shui, Tong Shu | 15 | Dérivé des éphémérides |
| Zi Wei Dou Shu | 14 | Le placement des étoiles est calculé, onze référentiels restent des référentiels |
| I Ching | 6 | Hexagrammes, lancer de pièces, traits mutables |
En quoi cela diffère d’une bibliothèque gratuite
Section intitulée « En quoi cela diffère d’une bibliothèque gratuite »Réponse honnête: si vous n’avez besoin que des quatre piliers, prenez lunar-typescript. Il est sous licence MIT, calcule dans votre processus, hors ligne, sans limite de fréquence, et il n’y a rien à payer.
La différence commence là où s’arrête la bibliothèque.
| Quoi | Bibliothèques sous MIT | AstroWay API |
|---|---|---|
| Quatre piliers, 藏干, 纳音, 十神 | oui | oui |
| 神煞 avec les deux lectures là où les écoles divergent | non | oui |
| Interactions des branches 刑冲合害 | non | oui |
| Force du maître du jour dans le cadre 扶抑 | non | oui |
| Temps solaire vrai comme calcul distinct | non | oui |
| Étoiles volantes selon l’assise et la façade, nombre Gua | non | oui |
| Choix de date Tong Shu avec filtre par activité | non | oui |
| Vingt et une langues | non | oui |
| Une seule convention pour PHP, JavaScript et Python à la fois | non | oui |
La dernière ligne est précisément ce pour quoi on paie d’habitude. Une équipe dont le site est en PHP, l’application en JavaScript et les crons en Python maintient sinon trois implémentations de la limite de l’année et finit tôt ou tard par obtenir trois réponses différentes pour une même date de naissance.
Les conventions énoncées clairement
Section intitulée « Les conventions énoncées clairement »Quatre axes sur lesquels les calculateurs divergent, et aucun n’est une erreur. La plupart des implémentations choisissent en silence; nous écrivons le choix dans la réponse et tenons une page des conventions avec une vérification sur un dataset externe CC0.
| Axe | Notre réponse |
|---|---|
| Limite de l’année | 立春 Lichun, instant exact issu des éphémérides |
| Limite du jour | 23:00, le 子時 précoce appartient au jour suivant |
| Temps solaire vrai | désactivé par défaut, activable par un flag |
| Heure d’été | résolue par timezoneOffset, envoyé par le client |
curl -X POST https://api.astroway.info/v1/bazi/chart \ -H "X-Api-Key: $ASTROWAY_API_KEY" \ -H "Content-Type: application/json" \ -d '{"date":"1990-05-15","time":"14:30:00","timezoneOffset":3}'import { Astroway } from '@astroway/sdk';
const aw = new Astroway({ apiKey: process.env.ASTROWAY_API_KEY! });
const r = await aw.client.POST('/bazi/chart', { body: { date: '1990-05-15', time: '14:30:00', timezoneOffset: 3 },});console.log(r.data?.data?.pillars.map((p) => p.pillar));// [ 'Geng-Wu', 'Xin-Si', 'Geng-Chen', 'Gui-Wei' ]import osfrom astroway import Astroway
aw = Astroway(api_key=os.environ["ASTROWAY_API_KEY"])
chart = aw.post("/bazi/chart", body={ "date": "1990-05-15", "time": "14:30:00", "timezoneOffset": 3,})print([p["pillar"] for p in chart["pillars"]])# ['Geng-Wu', 'Xin-Si', 'Geng-Chen', 'Gui-Wei']Une application prête à cloner
Section intitulée « Une application prête à cloner »Démo en ligne et code sur GitHub, MIT.
Deux appels, POST /v1/bazi/chart pour 20 crédits et POST /v1/bazi/luck-pillars pour 10, renvoient les quatre piliers avec les troncs cachés, le nayin et les douze stades, le maître du jour avec son verdict de force, l’équilibre des éléments, les étoiles symboliques, les interactions des branches et le cycle décennal Da Yun. L’application les dessine: l’année à droite, comme dans la notation classique, la colonne du jour mise en évidence. Le backend tient en une seule route et aucune dépendance, car c’est bien là l’essentiel: le navigateur ne peut pas appeler l’API directement, la clé vit donc sur le serveur.
git clone https://github.com/astroway/starter-bazicd starter-bazi && npm installcp .env.example .env # your key goes herenpm run devTrois choses à en retenir. Envoyez le nom du fuseau, pas le décalage: Asia/Shanghai au 1990-05-15, c’est UTC+9, car la Chine appliquait l’heure d’été de 1986 à 1991. Envoyez la langue: la langue par défaut est l’ukrainien, et une page en anglais sans ce paramètre recevra les noms des éléments dans la mauvaise langue. Envoyez le sexe: le Da Yun avance ou recule selon lui, il n’existe pas de valeur neutre.
Les animaux, les éléments, le yin et le yang, les palais et les douze stades sont traduits en 21 langues. Ajoutez ?lang=es, et un champ *Name apparaîtra à côté du token anglais. Les champs anglais ne changent jamais: la localisation ajoute, elle ne remplace pas.
Les troncs, les branches, les noms des étoiles et le 纳音 ne sont volontairement pas traduits: leur nom international est le pinyin à côté du caractère.