from collections import defaultdict
import datetime
from lunardate import LunarDate
Zhi = ["子", "醜", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"]
xiao_liu_ren = [
"大安",
"留连",
"速喜",
"赤口",
"小吉",
"空亡",
]
def get_factor_time(time: datetime.datetime = None):
if time is None:
time = datetime.datetime.now()
print(f"阳历时间:{time.isoformat()}")
lunar_time = LunarDate.fromSolarDate(time.year, time.month, time.day)
lunar_month = lunar_time.month
lunar_day = lunar_time.day
lunar_hour = (time.hour + 1) // 2
print(f"农历时间:{lunar_month} 月 {lunar_day} 日 {Zhi[lunar_hour]}({lunar_hour}) 时")
factor_month = xiao_liu_ren[(lunar_month - 1) % 6]
factor_day = xiao_liu_ren[(lunar_month - 1 + lunar_day - 1) % 6]
factor_hour = xiao_liu_ren[(lunar_month - 1 + lunar_day - 1 + lunar_hour) % 6]
print(f"小六壬月日时:{factor_month} {factor_day} {factor_hour}")
return factor_month, factor_day, factor_hour
def lost_item(factor):
guaci = {
"大安": {
"留连": "大安加留连,失物西北去。",
"速喜": "大安加速喜,失物当日见。",
"赤口": "大安加赤口,失物不用找。",
"小吉": "大安加小吉,失物不出门。",
"空亡": "大安加空亡,失物无踪影。",
"大安": "大安加大安,失物在家里。",
},
"留连": {
"大安": "留连加大安,物在家中藏。",
"速喜": "留连加速喜,失物三天里。",
"赤口": "留连加赤口,失物准丢失。",
"小吉": "留连加小吉,失物东南去。",
"空亡": "留连加空亡,失物不见面。",
"留连": "留连加留连,失物落在南。",
},
"速喜": {
"赤口": "速喜加赤口,失物往正北。",
"小吉": "速喜加小吉,失物在家里。",
"空亡": "速喜加空亡,失物不久见。",
"大安": "速喜加大安,失物不丢失。",
"留连": "速喜加留连,失物无信息。",
"速喜": "速喜加速喜,失物落正南。",
},
"赤口": {
"小吉": "赤口加小吉,失物无信息。",
"空亡": "赤口加空亡,失物不用找。",
"大安": "赤口加大安,失物东北找。",
"留连": "赤口加留连,失物不回还。",
"速喜": "赤口加速喜,失物有着落。",
"赤口": "赤口加赤口,失物正西找。",
},
"小吉": {
"空亡": "小吉加空亡,失物正东找。",
"大安": "小吉加大安,失物自己出。",
"留连": "小吉加留连,失物上西南。",
"速喜": "小吉加速喜,失物在院里。",
"赤口": "小吉加赤口,失物丢了手。",
"小吉": "小吉加小吉,失物在西南。",
},
"空亡": {
"大安": "空亡加大安,失物反复间。",
"留连": "空亡加留连,失物永不还。",
"速喜": "空亡加速喜,失物在家里。",
"赤口": "空亡加赤口,失物往远走。",
"小吉": "空亡加小吉,失物回家里。",
"空亡": "空亡加空亡,失物寻不见。",
},
}
return guaci[factor[1]][factor[2]]
if __name__ == "__main__":
res = get_factor_time(datetime.datetime(2023, 4, 24, 7, 15))
assert res == ("速喜", "大安", "小吉"), res
res = lost_item(res)
assert res == "大安加小吉,失物不出门。", res
res = get_factor_time(datetime.datetime(2022, 4, 30, 8, 20))
assert res == ("速喜", "留连", "空亡"), res
res = lost_item(res)
assert res == "留连加空亡,失物不见面。", res