diff --git a/.gitignore b/.gitignore
index 60199c5..8f4807e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,6 @@
*.xml
*.pyc
+/dist
+/cnlunar.egg-info
/.idea/
*.DS_Store
diff --git a/README.md b/README.md
index 941b95a..044fe42 100644
--- a/README.md
+++ b/README.md
@@ -23,6 +23,7 @@ $ pip3 install cnlunar
快速上手
```
+import datetime
import cnlunar
# a = cnlunar.Lunar() # 为空为当前时间
diff --git a/README.rst b/README.rst
index 941b95a..9c0e808 100644
--- a/README.rst
+++ b/README.rst
@@ -1,188 +1,141 @@
-# cnlunar
-项目优点
-1、不使用寿星通式[Y*D+C]-L,而使用香港天文台数据(阴阳合历,节气准农历日期才能准)
+ import datetime
-2、无数据库,依赖库少,运行快速,提供内容丰富
+ import cnlunar
-3、主要内容来自于《钦定协纪辨方书》,每一个神煞宜忌都有依据,遵循宜忌等第表,包含民用、御用事宜,且支持港式(通书配图)八字月柱算法-默认,通书原文文字农历月份算法,具体看date2LunarData.py
+ # a = cnlunar.Lunar() # 为空为当前时间
-4、不盈利,开源免费,长期有人维护
+ a = cnlunar.Lunar(datetime.datetime(2019, 2, 4, 22, 30))
-5、民俗社会科学项目,不搞封建迷信,宜忌意义在于民间是将红白事合理分开,避免今日您宴请宾客,邻居办白事情况出现,引起邻里纠纷社会分裂。
-
-特别鸣谢@DarkmoonRabbit(https://github.com/DarkmoonRabbit)
-
-相关产品:
-翻黄历 https://www.fanhuangli.com/
-
-万年历-最新专业桌面老黄历 https://apps.apple.com/cn/app/id1555822960
-
-```
-$ pip3 install cnlunar
-```
-快速上手
-
-```
-import cnlunar
-
-# a = cnlunar.Lunar() # 为空为当前时间
-
-a = cnlunar.Lunar(datetime.datetime(2019, 2, 4, 22, 30))
-dic = {
'日期': a.date,
+
'农历数字': (a.lunarYear, a.lunarMonth, a.lunarDay, '闰' if a.isLunarLeapMonth else ''),
+
'农历': '%s %s[%s]年 %s%s' % (a.lunarYearCn, a.year8Char, a.chineseYearZodiac, a.lunarMonthCn, a.lunarDayCn),
+
'星期': a.weekDayCn,
+
# 未增加除夕
+
'今日节日': (a.get_legalHolidays(), a.get_otherHolidays(), a.get_otherLunarHolidays()),
+
'八字': ' '.join([a.year8Char, a.month8Char, a.day8Char, a.twohour8Char]),
+
'今日节气': a.todaySolarTerms,
+
'下一节气': (a.nextSolarTerm, a.nextSolarTermDate, a.nextSolarTermYear),
+
'今年节气表': a.thisYearSolarTermsDic,
+
'季节': a.lunarSeason,
+
'今日时辰': a.twohour8CharList,
+
'时辰凶吉': a.get_twohourLuckyList(),
+
'生肖冲煞': a.chineseZodiacClash,
+
'星座': a.starZodiac,
+
'星次': a.todayEastZodiac,
+
'彭祖百忌': a.get_pengTaboo(),
+
'彭祖百忌精简': a.get_pengTaboo(long=4, delimit='
'),
+
'十二神': a.get_today12DayOfficer(),
+
'廿八宿': a.get_the28Stars(),
+
'今日三合': a.zodiacMark3List,
+
'今日六合': a.zodiacMark6,
+
'今日五行': a.get_today5Elements(),
+
'纳音': a.get_nayin(),
+
'九宫飞星': a.get_the9FlyStar(),
+
'吉神方位': a.get_luckyGodsDirection(),
+
'今日胎神': a.get_fetalGod(),
+
'神煞宜忌': a.angelDemon,
+
'今日吉神': a.goodGodName,
+
'今日凶煞': a.badGodName,
+
'宜': a.goodThing,
+
'忌': a.badThing,
+
'时辰经络': a.meridians
-}
-```
-
-项目概述:
-由于三体运动(主要地球、太阳、月球)无法准确预测,目前二十四节气依然还是靠天文台观测,Yovey使用传说中[Y*D+C]-L方法实际有很多天数不准,def getSolarTerms(_date)12个if嵌套判断让代码变得十分冗余,由简书网友“大咖_247c”首先发现计算不准问题……
-【方案过程】
-![image.png](https://upload-images.jianshu.io/upload_images/2369108-a121d5e561adc30b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
-
-1、在校验过数据与公式差异后,第一方案是采用15%黄经夹角计算,计算后差异依然存在,地球椭圆形轨道一年内公转速度差异超过7%;
-![开普勒.gif](https://upload-images.jianshu.io/upload_images/2369108-671532f9183aad1d.gif?imageMogr2/auto-orient/strip)
-
-2、在发现椭圆轨道问题后,尝试使用平均值、开普勒第二定律计算行星轨道,计算值已经十分贴近了,但依然和香港天文台数据有差异,恍然大悟,地球、月亮、太阳三个天体呈现无法完美预测的三体运动,甚至还包括木星引力影响(比如传说中九星连珠,虽然引力抵消微弱),而且太阳本身也在运动,地球和太阳的质量也不是永恒不变的,这就导致地球的恒星年相对稳定,但回归年浮动振荡;
-![image.png](https://upload-images.jianshu.io/upload_images/2369108-2cdf50bbe6b62989.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
-
-3、当试过所有技术物理原理还无法调节误差后,最终使用了Chen Jian的核心设计理念,添加了十六进制加存二十四节气。(还是要靠香港天文台)
-coding=UTF-8
-1901~2100年农历数据表
-Author: cuba3
-base code by Yovey , https://www.jianshu.com/p/8dc0d7ba2c2a
-powered by Late Lee, http://www.latelee.org/python/python-yangli-to-nongli.html#comment-78
-other author:Chen Jian, http://www.cnblogs.com/chjbbs/p/5704326.html
-数据来源: http://data.weather.gov.hk/gts/time/conversion1_text_c.htm
-
-[【GITHUB/cuba3】:pyLunarCalendar项目地址>>https://github.com/OPN48/pyLunarCalendar](https://github.com/OPN48/pyLunarCalendar])
-
-跟进Chen Jian的设计思路,增加了一层向量压缩。
-因为24节气每个月新历月固定有两个,所以list保持顺序,月份就不用存了,一定是1、1、2、2、3、3……
-只记录日期的话,日期数据过大,所以对200年内4800个数据进行分组比对,求出最小公约数,得出最小公约年向量[4, 19, 3, 18, 4, 19, 4, 19, 4, 20, 4, 20, 6, 22, 6, 22, 6, 22, 7, 22, 6, 21, 6, 21],将爬取数据减去这个最小公约向量,就得到了一个元素最大值不大于3的矩阵。
-所有数字不大于3,两个二进制就可满足存储一个日期,一个十六进制就能存储一个月,利用Python3 位移算法 << 2 将原本庞大的txt文本压缩成长度200的12位16进制list。
-```
-# 1901-2100年二十节气最小公约数序列 向量压缩法
-encryptionVectorList=[4, 19, 3, 18, 4, 19, 4, 19, 4, 20, 4, 20, 6, 22, 6, 22, 6, 22, 7, 22, 6, 21, 6, 21]
-
-# 1901-2100年二十节气数据 每个元素的存储格式如下:
-# 1-24
-# 节气所在天(减去节气最小公约数)
-# 1901-2100年香港天文台公布二十四节气按年存储16进制,1个16进制为4个2进制
-solarTermsData=[
- 0x6aaaa6aa9a5a, 0xaaaaaabaaa6a, 0xaaabbabbafaa, 0x5aa665a65aab, 0x6aaaa6aa9a5a, # 1901 ~ 1905
- 0xaaaaaaaaaa6a, 0xaaabbabbafaa, 0x5aa665a65aab, 0x6aaaa6aa9a5a, 0xaaaaaaaaaa6a,
- 0xaaabbabbafaa, 0x5aa665a65aab, 0x6aaaa6aa9a56, 0xaaaaaaaa9a5a, 0xaaabaabaaeaa,
- 0x569665a65aaa, 0x5aa6a6a69a56, 0x6aaaaaaa9a5a, 0xaaabaabaaeaa, 0x569665a65aaa,
- 0x5aa6a6a65a56, 0x6aaaaaaa9a5a, 0xaaabaabaaa6a, 0x569665a65aaa, 0x5aa6a6a65a56,
- 0x6aaaa6aa9a5a, 0xaaaaaabaaa6a, 0x555665665aaa, 0x5aa665a65a56, 0x6aaaa6aa9a5a,
- 0xaaaaaabaaa6a, 0x555665665aaa, 0x5aa665a65a56, 0x6aaaa6aa9a5a, 0xaaaaaaaaaa6a,
- 0x555665665aaa, 0x5aa665a65a56, 0x6aaaa6aa9a5a, 0xaaaaaaaaaa6a, 0x555665665aaa,
- 0x5aa665a65a56, 0x6aaaa6aa9a5a, 0xaaaaaaaaaa6a, 0x555665655aaa, 0x569665a65a56,
- 0x6aa6a6aa9a56, 0xaaaaaaaa9a5a, 0x5556556559aa, 0x569665a65a55, 0x6aa6a6a65a56,
- 0xaaaaaaaa9a5a, 0x5556556559aa, 0x569665a65a55, 0x5aa6a6a65a56, 0x6aaaa6aa9a5a,
- 0x5556556555aa, 0x569665a65a55, 0x5aa665a65a56, 0x6aaaa6aa9a5a, 0x55555565556a,
- 0x555665665a55, 0x5aa665a65a56, 0x6aaaa6aa9a5a, 0x55555565556a, 0x555665665a55,
- 0x5aa665a65a56, 0x6aaaa6aa9a5a, 0x55555555556a, 0x555665665a55, 0x5aa665a65a56,
- 0x6aaaa6aa9a5a, 0x55555555556a, 0x555665655a55, 0x5aa665a65a56, 0x6aa6a6aa9a5a,
- 0x55555555456a, 0x555655655a55, 0x5a9665a65a56, 0x6aa6a6a69a5a, 0x55555555456a,
- 0x555655655a55, 0x569665a65a56, 0x6aa6a6a65a56, 0x55555155455a, 0x555655655955,
- 0x569665a65a55, 0x5aa6a5a65a56, 0x15555155455a, 0x555555655555, 0x569665665a55,
- 0x5aa665a65a56, 0x15555155455a, 0x555555655515, 0x555665665a55, 0x5aa665a65a56,
- 0x15555155455a, 0x555555555515, 0x555665665a55, 0x5aa665a65a56, 0x15555155455a,
- 0x555555555515, 0x555665665a55, 0x5aa665a65a56, 0x15555155455a, 0x555555555515,
- 0x555655655a55, 0x5aa665a65a56, 0x15515155455a, 0x555555554515, 0x555655655a55,
- 0x5a9665a65a56, 0x15515151455a, 0x555551554515, 0x555655655a55, 0x569665a65a56,
- 0x155151510556, 0x555551554505, 0x555655655955, 0x569665665a55, 0x155110510556,
- 0x155551554505, 0x555555655555, 0x569665665a55, 0x55110510556, 0x155551554505,
- 0x555555555515, 0x555665665a55, 0x55110510556, 0x155551554505, 0x555555555515,
- 0x555665665a55, 0x55110510556, 0x155551554505, 0x555555555515, 0x555655655a55,
- 0x55110510556, 0x155551554505, 0x555555555515, 0x555655655a55, 0x55110510556,
- 0x155151514505, 0x555555554515, 0x555655655a55, 0x54110510556, 0x155151510505,
- 0x555551554515, 0x555655655a55, 0x14110110556, 0x155110510501, 0x555551554505,
- 0x555555655555, 0x14110110555, 0x155110510501, 0x555551554505, 0x555555555555,
- 0x14110110555, 0x55110510501, 0x155551554505, 0x555555555555, 0x110110555,
- 0x55110510501, 0x155551554505, 0x555555555515, 0x110110555, 0x55110510501,
- 0x155551554505, 0x555555555515, 0x100100555, 0x55110510501, 0x155151514505,
- 0x555555555515, 0x100100555, 0x54110510501, 0x155151514505, 0x555551554515,
- 0x100100555, 0x54110510501, 0x155150510505, 0x555551554515, 0x100100555,
- 0x14110110501, 0x155110510505, 0x555551554505, 0x100055, 0x14110110500,
- 0x155110510501, 0x555551554505, 0x55, 0x14110110500, 0x55110510501,
- 0x155551554505, 0x55, 0x110110500, 0x55110510501, 0x155551554505,
- 0x15, 0x100110500, 0x55110510501, 0x155551554505,0x555555555515]
-```
-4、根据《四库全书 - 协纪辨方书》添加了部分的吉神凶煞、八字,修正了部分八字月柱算法,关于值神方面的算法没有采用农历月算,而是根据农历八字月柱为依据,不同算法之间有细微区别。主要参考了老黄历、聚宝堂日历等,待持续优化
-铺注条例:
-凡铺注《万年历》、《通书》,先依用事次第察其所宜忌之日,于某日下注宜某事,某日下注忌某事,次按宜忌,较量其凶吉之轻重,以定去取。
-凡宜宣政事,布政事之日,只注宜宣政事。
-凡宜营建宫室、修宫室之日,只注宜营建宫室。
-
-凡吉足胜凶,从宜不从忌者,如遇德犹忌之事,则仍注忌。
-
-凡吉凶相抵,不注宜亦不注忌者,如遇德犹忌之事,则仍注忌。
-
-凡德合、赦愿、月恩、四相、时德等日,不注忌进人口、安床、经络、酝酿、开市、立券、交易、纳财、开仓库、出货财。如遇德犹忌,及从忌不从宜之日,则仍注忌。
-凡天狗寅日忌祭祀,不注宜求福、祈嗣。
-
-凡卯日忌穿井,不注宜开渠。壬日忌开渠,不注宜穿井。
-凡巳日忌出行,不注宜出师、遣使。
-凡酉日忌宴会,亦不注宜庆赐、赏贺。
-凡丁日忌剃头,亦不注宜整容。
-
-凡吉凶相抵,不注忌祈福,亦不注忌求嗣。
-
-凡忌诏命公卿、招贤,不注宜施恩、封拜、举正直、袭爵受封。
-凡忌施恩、封拜、举正直、袭爵受封,亦不注宜诏命公卿、招贤。
-凡宜宣政事之日遇往亡则改宣为布。
-凡月厌忌行幸、上官,不注宜颁诏、施恩封拜、诏命公卿、招贤、举正直。遇宜宣政事之日,则改宣为布。
-
-凡吉凶相抵,不注忌结婚姻,亦不注忌冠带、纳采问名、嫁娶、进人口,如遇德犹忌之日则仍注忌。
-凡吉凶相抵,不注忌嫁娶,亦不注忌冠带、结婚姻、纳采问名、进人口、搬移、安床,如遇德犹忌之日,则仍注忌。遇不将而不注忌嫁娶者,亦仍注忌。遇亥日、厌对、八专、四忌、四穷而仍注忌嫁娶者,只注所忌之事,其不忌者仍不注忌。
-凡吉凶相抵,不注忌搬移,亦不注忌安床。不注忌安床,亦不注忌搬移。如遇德犹忌之日,则仍注忌。
-凡吉凶相抵,不注忌解除,亦不注忌整容、剃头、整手足甲。如遇德犹忌之日,则仍注忌。
-凡吉凶相抵,不注忌修造动土、竖柱上梁,亦不注忌修宫室、缮城郭、筑提防、修仓库、鼓铸、苫盖、修置产室、开渠穿井、安碓硙、补垣塞穴、修饰垣墙、平治道涂、破屋坏垣。如遇德犹忌之日,则仍注忌。
-凡吉凶相抵,不注忌开市,亦不注忌立券、交易、纳财。不注忌纳财,亦不注忌开市、立券、交易。不注忌立券、交易,亦不注忌开市、纳财。
-凡吉凶相抵,不注忌开市、立券、交易,亦不注忌开仓库、出货财。如遇专忌之日,则仍注忌。
-凡吉凶相抵,不注忌牧养,亦不注忌纳畜。不注忌纳畜,亦不注忌牧养。
-凡吉凶相抵,有宜安葬不注忌启攒,有宜启攒不注忌安葬。
-
-凡土府、土符、地囊,只注忌补垣,亦不注宜塞穴。
-凡开日,不注宜破土、安葬、启攒,亦不注忌。遇忌则注。
-凡四忌、四穷只忌安葬。如遇鸣吠、鸣吠对亦不注宜破土、启攒。
-凡天吏、大时不以死败论者,遇四废、岁薄、逐阵仍以死败论。
-凡岁薄、逐阵日所宜事,照月厌所忌删去,所忌依然依从本日。
-
-凡二月甲戌、四月丙申、六月甲午、七月戊申、八月庚辰、九月辛卯、十月甲子、十二月甲子、德合与赦(天赦)、愿(天愿)所会之辰,诸事不忌。
-
-5、星次
-星纪、玄枵、娵訾、降娄、大梁、实沈、鹑首、鹑火、鹑尾、寿星、大火、析木
\ No newline at end of file
+
+八字月柱与八字日柱算神煞版本
+
+日期 : 2021-02-07 10:30:00
+
+农历数字 : (2020, 12, 26, '')
+
+农历 : 二零二零 庚子[鼠]年 腊月大廿六
+
+星期 : 星期日
+
+今日节日 : ('', '京汉铁路罢工纪念', '')
+
+八字 : 庚子 庚寅 丙戌 癸巳
+
+今日节气 : 无
+
+下一节气 : ('雨水', (2, 18), 2021)
+
+今年节气表 : {'小寒': (1, 5), '大寒': (1, 20), '立春': (2, 3), '雨水': (2, 18), '惊蛰': (3, 5), '春分': (3, 20), '清明': (4, 4), '谷雨': (4, 20), '立夏': (5, 5), '小满': (5, 21), '芒种': (6, 5), '夏至': (6, 21), '小暑': (7, 7), '大暑': (7, 22), '立秋': (8, 7), '处暑': (8, 23), '白露': (9, 7), '秋分': (9, 23), '寒露': (10, 8), '霜降': (10, 23), '立冬': (11, 7), '小雪': (11, 22), '大雪': (12, 7), '冬至': (12, 21)}
+
+季节 : 孟春
+
+今日时辰 : ['戊子', '己丑', '庚寅', '辛卯', '壬辰', '癸巳', '甲午', '乙未', '丙申', '丁酉', '戊戌', '己亥', '庚子']
+
+时辰凶吉 : ['凶', '凶', '吉', '凶', '吉', '吉', '凶', '凶', '吉', '吉', '凶', '吉', '凶']
+
+生肖冲煞 : 狗日冲龙
+
+星座 : 水瓶座
+
+星次 : 娵訾
+
+彭祖百忌 : 丙不修灶 必见灾殃,戌不吃犬 作怪上床
+
+彭祖百忌精简 : 丙不修灶
戌不吃犬
+
+十二神 : ('成', '司命', '黄道日')
+
+廿八宿 : 星日马
+
+今日三合 : ['虎', '马']
+
+今日六合 : 兔
+
+今日五行 : ['天干', '丙', '属火', '地支', '戌', '属土', '纳音', '土', '属土', '廿八宿', '星', '宿', '十二神', '成', '日']
+
+纳音 : 屋上土
+
+九宫飞星 : 279135684
+
+吉神方位 : ['喜神西南', '财神西南', '福神西北', '阳贵正西', '阴贵西北']
+
+今日胎神 : 厨灶栖外西北
+
+神煞宜忌 : ((['月德', '三合', '四相', '天喜', '月恩', '天官'], ['月厌', '神号', '伏兵', '地火', '受死', '飞廉', '大煞', '四击', '宝日']), (['祭祀', '出行', '结婚姻', '宴会', '嫁娶', '修造', '求医疗病', '上表章', '上官', '入学', '进人口', '竖柱上梁', '经络', '开市', '纳财', '安碓硙', '栽种', '牧养', '安葬', '选将', '求嗣', '酝酿', '临政', '庆赐', '安抚边境', '解除', '筑堤防', '祈福', '出师', '纳采', '纳畜', '营建', '立券交易', '缮城郭', '修宫室', '恤孤茕', '覃恩', '裁制', '开仓', '修仓库', '上册', '雪冤', '搬移'], ['剃头', '冠带', '修置产室', '开渠', '穿井', '平治道涂', '破屋坏垣', '伐木', '畋猎', '破土', '启攒', '布政事', '修饰垣墙', '整手足甲', '远回', '整容', '补垣', '取鱼', '鼓铸', '塞穴']))
+
+今日吉神 : ['月德', '三合', '四相', '天喜', '月恩', '天官']
+
+今日凶煞 : ['月厌', '神号', '伏兵', '地火', '受死', '飞廉', '大煞', '四击', '宝日']
+
+宜忌等第 : 中:吉不抵凶,遇德从宜不从忌,不遇从忌不从宜。
+
+宜 : ['祭祀', '出行', '结婚姻', '宴会', '嫁娶', '修造', '求医疗病', '上表章', '上官', '入学', '进人口', '竖柱上梁', '经络', '开市', '纳财', '安碓硙', '栽种', '牧养', '安葬', '选将', '求嗣', '酝酿', '临政', '庆赐', '安抚边境', '解除', '筑堤防', '祈福', '出师', '纳采', '纳畜', '营建', '立券交易', '缮城郭', '修宫室', '恤孤茕', '覃恩', '裁制', '开仓', '修仓库', '上册', '雪冤', '搬移']
+
+忌 : ['剃头', '冠带', '修置产室', '开渠', '穿井', '平治道涂', '破屋坏垣', '伐木', '畋猎', '破土', '启攒', '布政事', '修饰垣墙', '整手足甲', '远回', '整容', '补垣', '取鱼', '鼓铸', '塞穴']
+
+时辰经络 : 脾
\ No newline at end of file
diff --git a/cnlunar/__init__.py b/cnlunar/__init__.py
index b2896b4..a701d63 100644
--- a/cnlunar/__init__.py
+++ b/cnlunar/__init__.py
@@ -1,2 +1 @@
-from cnlunar.lunar import Lunar
-
+from cnlunar.lunar import Lunar
\ No newline at end of file
diff --git a/cnlunar/demo.py b/cnlunar/demo.py
index e9c91d1..d522cea 100644
--- a/cnlunar/demo.py
+++ b/cnlunar/demo.py
@@ -1,6 +1,5 @@
import datetime
import cnlunar
-# 测试数据
print('a = cnlunar.Lunar(datetime.datetime(2021, 2, 7, 10, 30), godType=\'8char\')')
print('\n八字月柱与八字日柱算神煞版本')
a = cnlunar.Lunar(datetime.datetime(2021, 2, 7, 10, 30), godType='8char')
diff --git a/setup.py b/setup.py
index 334b906..47e481b 100644
--- a/setup.py
+++ b/setup.py
@@ -1,9 +1,10 @@
from setuptools import setup
setup(
name='cnlunar',
- version='0.0.6',
+ version='0.0.7',
packages=['cnlunar'],
url='https://github.com/OPN48/pyLunarCalendar',
author='cuba3',
author_email='cuba3@163.com',
+ long_description=open('README.rst').read(),
)