Fix page spacing and add daily poetry with manual write testing
This commit is contained in:
@@ -0,0 +1,143 @@
|
||||
"""A deterministic daily selection of public-domain classical Chinese poetry."""
|
||||
|
||||
from datetime import datetime
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
# Original classical works; no modern copyrighted translations are included.
|
||||
POEMS = [
|
||||
(
|
||||
"jing-ye-si",
|
||||
"静夜思",
|
||||
"李白",
|
||||
"床前明月光,疑是地上霜。\n举头望明月,低头思故乡。",
|
||||
),
|
||||
(
|
||||
"chun-xiao",
|
||||
"春晓",
|
||||
"孟浩然",
|
||||
"春眠不觉晓,处处闻啼鸟。\n夜来风雨声,花落知多少。",
|
||||
),
|
||||
(
|
||||
"deng-guan-que-lou",
|
||||
"登鹳雀楼",
|
||||
"王之涣",
|
||||
"白日依山尽,黄河入海流。\n欲穷千里目,更上一层楼。",
|
||||
),
|
||||
("xiang-si", "相思", "王维", "红豆生南国,春来发几枝。\n愿君多采撷,此物最相思。"),
|
||||
("lu-zhai", "鹿柴", "王维", "空山不见人,但闻人语响。\n返景入深林,复照青苔上。"),
|
||||
(
|
||||
"zhu-li-guan",
|
||||
"竹里馆",
|
||||
"王维",
|
||||
"独坐幽篁里,弹琴复长啸。\n深林人不知,明月来相照。",
|
||||
),
|
||||
(
|
||||
"jiang-xue",
|
||||
"江雪",
|
||||
"柳宗元",
|
||||
"千山鸟飞绝,万径人踪灭。\n孤舟蓑笠翁,独钓寒江雪。",
|
||||
),
|
||||
(
|
||||
"xun-yin-zhe",
|
||||
"寻隐者不遇",
|
||||
"贾岛",
|
||||
"松下问童子,言师采药去。\n只在此山中,云深不知处。",
|
||||
),
|
||||
(
|
||||
"min-nong",
|
||||
"悯农·其二",
|
||||
"李绅",
|
||||
"锄禾日当午,汗滴禾下土。\n谁知盘中餐,粒粒皆辛苦。",
|
||||
),
|
||||
("feng", "风", "李峤", "解落三秋叶,能开二月花。\n过江千尺浪,入竹万竿斜。"),
|
||||
(
|
||||
"wang-lu-shan",
|
||||
"望庐山瀑布",
|
||||
"李白",
|
||||
"日照香炉生紫烟,遥看瀑布挂前川。\n飞流直下三千尺,疑是银河落九天。",
|
||||
),
|
||||
(
|
||||
"zao-fa-bai-di",
|
||||
"早发白帝城",
|
||||
"李白",
|
||||
"朝辞白帝彩云间,千里江陵一日还。\n两岸猿声啼不住,轻舟已过万重山。",
|
||||
),
|
||||
(
|
||||
"wang-tian-men",
|
||||
"望天门山",
|
||||
"李白",
|
||||
"天门中断楚江开,碧水东流至此回。\n两岸青山相对出,孤帆一片日边来。",
|
||||
),
|
||||
(
|
||||
"zeng-wang-lun",
|
||||
"赠汪伦",
|
||||
"李白",
|
||||
"李白乘舟将欲行,忽闻岸上踏歌声。\n桃花潭水深千尺,不及汪伦送我情。",
|
||||
),
|
||||
(
|
||||
"shan-xing",
|
||||
"山行",
|
||||
"杜牧",
|
||||
"远上寒山石径斜,白云生处有人家。\n停车坐爱枫林晚,霜叶红于二月花。",
|
||||
),
|
||||
(
|
||||
"jiang-nan-chun",
|
||||
"江南春",
|
||||
"杜牧",
|
||||
"千里莺啼绿映红,水村山郭酒旗风。\n南朝四百八十寺,多少楼台烟雨中。",
|
||||
),
|
||||
(
|
||||
"ti-xi-lin-bi",
|
||||
"题西林壁",
|
||||
"苏轼",
|
||||
"横看成岭侧成峰,远近高低各不同。\n不识庐山真面目,只缘身在此山中。",
|
||||
),
|
||||
(
|
||||
"hui-xiang-ou-shu",
|
||||
"回乡偶书·其一",
|
||||
"贺知章",
|
||||
"少小离家老大回,乡音无改鬓毛衰。\n儿童相见不相识,笑问客从何处来。",
|
||||
),
|
||||
(
|
||||
"ye-yu-ji-bei",
|
||||
"夜雨寄北",
|
||||
"李商隐",
|
||||
"君问归期未有期,巴山夜雨涨秋池。\n何当共剪西窗烛,却话巴山夜雨时。",
|
||||
),
|
||||
(
|
||||
"feng-qiao",
|
||||
"枫桥夜泊",
|
||||
"张继",
|
||||
"月落乌啼霜满天,江枫渔火对愁眠。\n姑苏城外寒山寺,夜半钟声到客船。",
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
def catalog():
|
||||
return [
|
||||
{
|
||||
"id": p[0],
|
||||
"title": p[1],
|
||||
"author": p[2],
|
||||
"lines": p[3],
|
||||
"source": "Public-domain classical Chinese poetry",
|
||||
"edition": "frame-flow-classics-v1",
|
||||
}
|
||||
for p in POEMS
|
||||
]
|
||||
|
||||
|
||||
def get_poem(date=None, poem_id=None):
|
||||
day = (
|
||||
datetime.strptime(date, "%Y-%m-%d").date()
|
||||
if date
|
||||
else datetime.now(ZoneInfo("Asia/Shanghai")).date()
|
||||
)
|
||||
poems = catalog()
|
||||
if poem_id:
|
||||
selected = next((p for p in poems if p["id"] == poem_id), None)
|
||||
if selected is None:
|
||||
raise ValueError("Unknown poem")
|
||||
else:
|
||||
selected = poems[day.toordinal() % len(poems)]
|
||||
return {**selected, "date": day.isoformat()}
|
||||
Reference in New Issue
Block a user