@xzkcz/iztro-mcp-server
Version:
MCP server exposing iztro astrology methods for Zi Wei Dou Shu astrolabe generation and horoscope analysis
65 lines • 2.01 kB
JavaScript
import { astro } from "iztro";
/*
[
"00:00~01:00",
"01:00~03:00",
"03:00~05:00",
"05:00~07:00",
"07:00~09:00",
"09:00~11:00",
"11:00~13:00",
"13:00~15:00",
"15:00~17:00",
"17:00~19:00",
"19:00~21:00",
"21:00~23:00",
"23:00~00:00",
];
*/
export function getAstroYear({ solarBirthDate, timeIndex, gender, fixLeap, locale }) {
const astrolabe = astro.bySolar(solarBirthDate, timeIndex, gender, fixLeap, locale);
const FiveElementsClass = {
水二局: 1,
木三局: 2,
金四局: 3,
土五局: 4,
火六局: 5,
};
const fortunateStartYear = astrolabe.rawDates.lunarDate.lunarYear +
FiveElementsClass[astrolabe.fiveElementsClass];
const fortunateStartMonth = astrolabe.solarDate.split("-")[1];
const fortunateStartDay = astrolabe.solarDate.split("-")[2];
const endYear = fortunateStartYear + 100;
// 大限
const decadePeriods = [];
// 小限
const agePeriods = [];
// 流年
const yearPeriods = [];
for (let i = fortunateStartYear; i <= endYear; i++) {
const currentDate = [i, fortunateStartMonth, fortunateStartDay].join("-");
const horoscope = astrolabe.horoscope(currentDate);
const { stars, yearlyDecStar, ...selectedYearlyFields } = horoscope.yearly;
yearPeriods.push({
solarDate: horoscope.solarDate,
yearly: selectedYearlyFields,
});
agePeriods.push({
solarDate: horoscope.solarDate,
age: horoscope.age,
});
if (decadePeriods.length === 0 ||
horoscope.decadal.index !== decadePeriods[decadePeriods.length - 1].index) {
// remove stars from decadal fields
const { stars, ...selectedDecadalFields } = horoscope.decadal;
decadePeriods.push(selectedDecadalFields);
}
}
return {
astrolabe,
decadePeriods,
agePeriods,
yearPeriods
};
}
//# sourceMappingURL=getAstroYear.js.map