chinese-poetry-db-web:一个基于chinese-poetry的数据库和网页UI
鸣谢
包含
- 唐宋诗
- 宋词
- 曹操诗集
- 五代 花间集
- 五代 南唐
- 元曲
- 楚辞
- 论语
- 纳兰性德
使用方法
- 利用chinese-poetry-collection8.zip解压后的利用chinese-poetry-collection8.sql导入到一个叫做"chinese-poetry-collection"的MySQL数据库
- 安装必要依赖:flask, opencc, pymysql
xxx/chinese-poetry-db-web$user-1> pip3 install -r requirements.txt
- 在本仓库进行:后端(flask),启动!
xxx/chinese-poetry-db-web$user-1> python3 server.py
- 在本仓库下面的"chinese-poetry-web"进行:前端(node),启动!
xxx/chinese-poetry-db-web/chinese-poetry-web$user-1> npm install
xxx/chinese-poetry-db-web/chinese-poetry-web$user-1> npm run dev
- (可选)前端打包部署
数据库设计
使用MySQL
Poetry:
- p_id: 诗词Id
- p_title: 诗词标题
- p_author_id: 作者Id,连表查询时使用,对应author表a_id
- p_rhythmic_id: 词牌/旋律Id,连表查询时使用,对应rhythmic表r_id
- p_paragraph: 正文
- p_note: 注释
- p_collection_id: 诗集/文集Id,连表查询时使用,对应Collection表c_id
- p_other: 闲置
- p_img_path: 后续配图使用路径
Author:
- a_id: 作者Id
- a_name: 作者姓名(e.g., 李白)
- a_dynasty_id: 朝代Id,连表查询时使用,对应dynasty表d_id
- a_img_path: 后续配图使用路径
Dynasty:
- d_id: 朝代Id
- d_name: 朝代名称(e.g., 宋朝)
- d_img_path: 后续配图使用路径
Collection:
- c_id: 诗集/文集Id
- c_name: 诗集/文集名称(e.g., 宋词)
- c_note: 详情
Rhythmic:
- r_id: 词牌/旋律Id
- r_name: 词牌/旋律名称(e.g., 青玉案)
- r_note: 详情
- r_img_path: 后续配图使用路径
后端
server.py,使用Flask制成,全部方法为GET
/search/poem
通过字符串查询 诗词
参数
- query_str:查询字符串
- query_type:查询模式,必须为"title"(标题查询), "para"(正文查询), "rhy"(词牌/韵律查询), 或"author"(作者查询)其中一种
- items_per_page:每页查询个数
- curr_page:目前页数(从1开始)
返回
{
"code": 0,
"msg": "",
"num_res": 59,
"result": [
{
"a_id": 251,
"a_name": "張子容",
"p_id": 1389,
"p_paragraph": "林花發岸口,氣色動江新。\n此夜江中月,流光花上春。\n分明石潭裏,宜照浣紗人。",
"p_title": "相和歌辭 春江花月夜二首 一",
"r_id": null,
"r_name": null
}, ...
]
}
/search/author
通过字符串查询 作者
参数
- query_str:查询字符串
- items_per_page:每页查询个数
- curr_page:目前页数(从1开始)
返回
{
"code": 0,
"msg": "",
"num_res": 2,
"result": [
{
"a_id": 13628,
"a_name": "温庭筠",
"d_id": 4,
"d_name": "五代"
}, ...
]
}
/search/rhythmic
通过字符串查询 词牌/韵律
参数
- r_name:查询字符串
- items_per_page:每页查询个数
- curr_page:目前页数(从1开始)
返回
{
"code": 0,
"msg": "",
"num_res": 2,
"result": [
{
"r_id": 362,
"r_img_path": null,
"r_name": "青玉案",
"r_note": ""
}, ...
]
}
/query/poem_by_id
通过poem的Id查询完整的 诗词信息
参数
- p_id:poem的Id
返回
{
"a_id": 173,
"a_name": "溫庭筠",
"c_name": "唐宋诗",
"d_name": "唐朝",
"p_id": 26316,
"p_img_path": null,
"p_note": null,
"p_paragraph": "晨起動征鐸,客行悲故鄉。\n雞聲茅店月,人迹板橋霜。\n槲葉落山路,枳花明驛牆。\n因思杜陵夢,鳧雁滿迴塘。",
"p_title": "商山早行",
"r_id": null,
"r_name": null
}
/query/poem_by_author
通过author的Id查询 诗词列表
参数
- a_id:author的Id
- items_per_page:每页查询个数
- curr_page:目前页数(从1开始)
返回
[
{
"a_id": 173,
"a_name": "溫庭筠",
"p_id": 1023,
"p_paragraph": "太子池南樓百尺,八窗新樹疎簾隔。\n黃金鋪首畫鉤陳,羽葆亭童拂交戟。\n盤紆闌楯臨高臺,帳殿臨流鸞扇開。\n早雁聲鳴細波起,映花鹵簿龍飛回。",
"p_title": "橫吹曲辭 雍臺歌",
"r_id": null,
"r_name": null
}, ...
]
/query/poem_by_rhythmic
通过rhythmic的Id查询 诗词列表
参数
- r_id:rhythmic的Id
- items_per_page:每页查询个数
- curr_page:目前页数(从1开始)
返回
[
{
"a_id": 12455,
"a_name": "苏轼",
"p_id": 313147,
"p_paragraph": "大江东去,浪淘尽、千古风流人物。\n故垒西边人道是,三国周郎赤壁。\n乱石穿空,惊涛拍岸,卷起千堆雪。\n江山如画,一时多少豪杰。\n遥想公瑾当年,小乔初嫁了,雄姿英发。\n羽扇纶巾谈笑间,强虏灰飞烟灭。\n故国神游,多情应笑,我早生华发。\n人间如梦,一尊还酹江月。",
"p_title": null,
"r_id": 282,
"r_name": "念奴娇"
}, ...
]
/query/poem_by_collection
通过collection的Id查询 诗词列表
参数
- c_id:collection的Id
- items_per_page:每页查询个数
- curr_page:目前页数(从1开始)
返回
[
{
"a_id": 7,
"a_name": "太宗皇帝",
"p_id": 1,
"p_paragraph": "秦川雄帝宅,函谷壯皇居。\n綺殿千尋起,離宮百雉餘。\n連甍遙接漢,飛觀迥凌虛。\n雲日隱層闕,風煙出綺疎。",
"p_title": "帝京篇十首 一",
"r_id": null,
"r_name": null
}, ...
]
/query/random_poem
获取一个随机诗词
参数
- 无