主题
古诗词
基于 chinese-poetry 数据集,数据已全部迁移至 MySQL 数据库,提供古诗词、典籍、蒙学、作者、佳句的随机获取、搜索与列表查询功能。
数据说明
所有诗词数据均为繁体中文字符,搜索关键词建议使用繁体以获得最佳匹配结果。
随机获取古诗
从数据库中随机获取一首古诗词(全量数据,非仅前几批),返回原始繁体与简体两套文本,并按简体内容自动提取字形生成子集字体文件。可选返回每句拼音。
- 方法:
GET - 路径:
/api/web/chinese/poetry-random
请求参数 (Query)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
type | string | 否 | 类型:tang唐诗 / song宋诗 / shijing诗经 / lunyu论语 / ci宋词 / chuci楚辞 / caocao曹操 / yuanqu元曲 / nalan纳兰 / wudaici五代词,默认 tang |
pinyin | string | 否 | 是否返回每句拼音:传 1 或 true 时返回 paragraphsPinyin,不传则不返回 |
请求示例
bash
# 仅返回简体+原始文字
GET /api/web/chinese/poetry-random?type=tang
# 返回简体+原始文字+拼音
GET /api/web/chinese/poetry-random?type=tang&pinyin=1响应示例
json
{
"type": "tang",
"title": "靜夜思",
"titleSimplified": "静夜思",
"author": "李白",
"authorSimplified": "李白",
"paragraphs": [
"床前明月光,",
"疑是地上霜。",
"举头望明月,",
"低头思故乡。"
],
"paragraphsSimplified": [
"床前明月光,",
"疑是地上霜。",
"举头望明月,",
"低头思故乡。"
],
"paragraphsPinyin": [
"chuáng qián míng yuè guāng,",
"yí shì dì shàng shuāng。",
"jǔ tóu wàng míng yuè,",
"dī tóu sī gù xiāng。"
],
"urls": [
"https://lolku.cn/resources/tempFont/xxx/三极泼墨体.ttf",
"https://lolku.cn/resources/tempFont/xxx/三极泼墨体.woff",
"https://lolku.cn/resources/tempFont/xxx/三极泼墨体.woff2"
]
}字段说明
title/author/paragraphs:原始繁体文字titleSimplified/authorSimplified/paragraphsSimplified:简体文字,字体文件基于此生成paragraphsPinyin:仅当请求带pinyin=1(或true)时返回,与paragraphs一一对应
字体文件自动清理
接口会按简体内容自动提取字形生成 .ttf / .woff / .woff2 三种格式的子集字体,存放在 resources/tempFont/{时间戳}/ 目录下,并通过 Redis 记录待清理信息。
- Redis 键:
tempFont:{时间戳},TTL 20 分钟 - 待清理集合:
tempFont:pendingDelete,记录{ folder, expireAt } - 定时任务:每 5 分钟扫描一次,删除过期文件夹(集群模式下仅实例 0 执行)
GET在线测试
搜索古诗词
按关键词对数据库全量诗词进行全文搜索,匹配标题、作者、内容(paragraphs)。每条记录同时返回原始繁体与简体两套文本,可选返回每句拼音。
- 方法:
GET - 路径:
/api/web/chinese/poetry-search
请求参数 (Query)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
keyword | string | 是 | 搜索关键词(建议使用繁体) |
type | string | 否 | tang / song / ci / shijing / chuci / caocao / yuanqu / nalan / wudaici / all,默认 all |
page | int | 否 | 页码,默认 1 |
size | int | 否 | 每页条数,默认 20,最大 100 |
pinyin | string | 否 | 是否返回每句拼音:传 1 或 true 时每条记录追加 paragraphsPinyin |
请求示例
bash
GET /api/web/chinese/poetry-search?keyword=李白&type=tang&page=1&size=10
GET /api/web/chinese/poetry-search?keyword=李白&type=tang&pinyin=1响应示例
json
{
"total": 12,
"list": [
{
"id": 1,
"dynasty": "tang",
"category": "shi",
"title": "靜夜思",
"titleSimplified": "静夜思",
"author": "李白",
"authorSimplified": "李白",
"rhythmic": "",
"chapter": "",
"section": "",
"paragraphs": [
"床前明月光,",
"疑是地上霜。"
],
"paragraphsSimplified": [
"床前明月光,",
"疑是地上霜。"
],
"paragraphsPinyin": [
"chuáng qián míng yuè guāng,",
"yí shì dì shàng shuāng。"
]
}
],
"page": 1,
"size": 10
}字段说明
title/author/paragraphs:原始繁体文字titleSimplified/authorSimplified/paragraphsSimplified:简体文字,始终返回paragraphsPinyin:仅当请求带pinyin=1(或true)时返回,与paragraphs一一对应
GET在线测试
诗词列表
分页获取诗词列表,支持按朝代、类型、作者筛选。每条记录同时返回原始繁体与简体两套文本,可选返回每句拼音。
- 方法:
GET - 路径:
/api/web/chinese/poetry-list
请求参数 (Query)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
dynasty | string | 否 | 朝代:tang / song / wei / wudai / yuan / qing / pre_qin |
category | string | 否 | 类型:shi / ci / qu / shijing / chuci / caocao / nalan |
author | string | 否 | 作者名(模糊匹配) |
page | int | 否 | 页码,默认 1 |
size | int | 否 | 每页条数,默认 20 |
pinyin | string | 否 | 是否返回每句拼音:传 1 或 true 时每条记录追加 paragraphsPinyin |
请求示例
bash
GET /api/web/chinese/poetry-list?dynasty=tang&category=shi&author=李白&page=1&size=20
GET /api/web/chinese/poetry-list?dynasty=tang&category=shi&pinyin=1响应示例
json
{
"total": 1,
"list": [
{
"id": 1,
"dynasty": "tang",
"category": "shi",
"title": "靜夜思",
"titleSimplified": "静夜思",
"author": "李白",
"authorSimplified": "李白",
"rhythmic": "",
"chapter": "",
"section": "",
"paragraphs": [
"床前明月光,",
"疑是地上霜。"
],
"paragraphsSimplified": [
"床前明月光,",
"疑是地上霜。"
],
"paragraphsPinyin": [
"chuáng qián míng yuè guāng,",
"yí shì dì shàng shuāng。"
]
}
],
"page": 1,
"size": 20
}字段说明
title/author/paragraphs:原始繁体文字titleSimplified/authorSimplified/paragraphsSimplified:简体文字,始终返回paragraphsPinyin:仅当请求带pinyin=1(或true)时返回,与paragraphs一一对应
GET在线测试
诗词详情
按 ID 获取诗词详情,含注释与来源 ID。返回原始繁体与简体两套文本,可选返回每句拼音。
- 方法:
GET - 路径:
/api/web/chinese/poetry-detail
请求参数 (Query)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | int | 是 | 诗词 ID |
pinyin | string | 否 | 是否返回每句拼音:传 1 或 true 时追加 paragraphsPinyin |
请求示例
bash
GET /api/web/chinese/poetry-detail?id=1
GET /api/web/chinese/poetry-detail?id=1&pinyin=1响应示例
json
{
"id": 1,
"dynasty": "tang",
"category": "shi",
"title": "靜夜思",
"titleSimplified": "静夜思",
"author": "李白",
"authorSimplified": "李白",
"rhythmic": "",
"chapter": "",
"section": "",
"paragraphs": [
"床前明月光,",
"疑是地上霜。"
],
"paragraphsSimplified": [
"床前明月光,",
"疑是地上霜。"
],
"paragraphsPinyin": [
"chuáng qián míng yuè guāng,",
"yí shì dì shàng shuāng。"
],
"notes": [],
"source_id": 0
}字段说明
title/author/paragraphs:原始繁体文字titleSimplified/authorSimplified/paragraphsSimplified:简体文字,始终返回paragraphsPinyin:仅当请求带pinyin=1(或true)时返回,与paragraphs一一对应
GET在线测试
作者列表
分页获取作者列表,支持按朝代筛选与作者名模糊搜索。
- 方法:
GET - 路径:
/api/web/chinese/poets-list
请求参数 (Query)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
dynasty | string | 否 | 朝代:tang / song / wudai |
name | string | 否 | 作者名(模糊搜索) |
page | int | 否 | 页码,默认 1 |
size | int | 否 | 每页条数,默认 20 |
请求示例
bash
GET /api/web/chinese/poets-list?dynasty=tang&name=李白&page=1&size=20响应示例
json
{
"total": 1,
"list": [
{
"id": 1,
"name": "李白",
"dynasty": "tang",
"short_description": "字太白,号青莲居士……"
}
],
"page": 1,
"size": 20
}GET在线测试
作者详情
按 ID 或作者名获取作者详情(二选一,至少传一个)。
- 方法:
GET - 路径:
/api/web/chinese/poet-detail
请求参数 (Query)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | int | 否 | 作者 ID(与 name 二选一) |
name | string | 否 | 作者名(与 id 二选一) |
请求示例
bash
GET /api/web/chinese/poet-detail?id=1
GET /api/web/chinese/poet-detail?name=李白响应示例
json
{
"id": 1,
"name": "李白",
"dynasty": "tang",
"description": "李白(701年—762年),字太白……",
"short_description": "字太白,号青莲居士……",
"source_id": 0
}GET在线测试
典籍列表
获取典籍内容列表(论语 / 孟子 / 大学 / 中庸),支持按类型与篇章筛选。
- 方法:
GET - 路径:
/api/web/chinese/classics-list
请求参数 (Query)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
category | string | 否 | 类型:lunyu论语 / mengzi孟子 / daxue大学 / zhongyong中庸 |
chapter | string | 否 | 篇章名(模糊匹配) |
page | int | 否 | 页码,默认 1 |
size | int | 否 | 每页条数,默认 20 |
请求示例
bash
GET /api/web/chinese/classics-list?category=lunyu&chapter=学而&page=1&size=20响应示例
json
{
"total": 1,
"list": [
{
"id": 1,
"category": "lunyu",
"chapter": "学而",
"paragraphs": [
"子曰:学而时习之,不亦说乎?"
]
}
],
"page": 1,
"size": 20
}GET在线测试
蒙学读物列表
获取蒙学读物列表(三字经 / 百家姓 / 千字文 / 弟子规 / 千家诗 / 唐诗三百首 / 古文观止等共 12 种),支持按书名、章节、诗体类型筛选。
- 方法:
GET - 路径:
/api/web/chinese/mengxue-list
请求参数 (Query)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
title | string | 否 | 读物名(模糊匹配) |
chapter | string | 否 | 章节(模糊匹配) |
type | string | 否 | 诗体类型 |
page | int | 否 | 页码,默认 1 |
size | int | 否 | 每页条数,默认 20 |
请求示例
bash
GET /api/web/chinese/mengxue-list?title=三字经&page=1&size=20响应示例
json
{
"total": 1,
"list": [
{
"id": 1,
"title": "三字经",
"author": "王应麟",
"tags": "",
"type": "",
"chapter": "",
"subchapter": "",
"source": "",
"paragraphs": [
"人之初,性本善。"
]
}
],
"page": 1,
"size": 20
}GET在线测试
随机获取佳句
随机获取一条佳句(幽梦影等)。
- 方法:
GET - 路径:
/api/web/chinese/quotes-random
请求参数 (Query)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
category | string | 否 | 类型,默认 youmengying 幽梦影 |
请求示例
bash
GET /api/web/chinese/quotes-random?category=youmengying响应示例
json
{
"id": 1,
"category": "youmengying",
"content": "花不可以无蝶,山不可以无泉。",
"comment": [
"此言万物皆须相伴而生。"
]
}GET在线测试
搜索佳句
按关键词搜索佳句内容,支持分页。
- 方法:
GET - 路径:
/api/web/chinese/quotes-search
请求参数 (Query)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
keyword | string | 是 | 搜索关键词 |
category | string | 否 | 类型,默认 youmengying |
page | int | 否 | 页码,默认 1 |
size | int | 否 | 每页条数,默认 20 |
请求示例
bash
GET /api/web/chinese/quotes-search?keyword=花&category=youmengying&page=1&size=20响应示例
json
{
"total": 1,
"list": [
{
"id": 1,
"category": "youmengying",
"content": "花不可以无蝶,山不可以无泉。",
"comment": [
"此言万物皆须相伴而生。"
]
}
],
"page": 1,
"size": 20
}GET在线测试
数据库表结构
数据存储在 5 张 MySQL 表中:
| 表名 | 记录数 | 说明 |
|---|---|---|
chinese_poetry | 99416 | 唐诗 / 宋诗 / 宋词 / 诗经 / 楚辞 / 曹操 / 元曲 / 纳兰 / 五代 |
chinese_classics | 36 | 论语 / 孟子 / 大学 / 中庸 |
chinese_mengxue | 842 | 12 种蒙学读物 |
chinese_poets | 14174 | 唐宋 / 宋词 / 五代作者 |
chinese_quotes | 219 | 幽梦影佳句 |
数据导入脚本
脚本路径:task/chinesePoetry.js
bash
# 首次导入(跳过已存在的记录)
node task/chinesePoetry.js
# 强制重新导入(先清空所有表数据)
node task/chinesePoetry.js --force
# 仅建表不导入数据
node task/chinesePoetry.js --table-only强制导入
--force 会先 TRUNCATE 全部数据表再重新导入,请谨慎使用。
通用说明
统一响应格式
所有接口响应均由 formatDatas 统一包装:
json
{
"code": 200,
"data": { ... },
"message": "success"
}繁简与拼音
- 数据库存储的诗词数据均为繁体中文字符,搜索关键词建议使用繁体以获得最佳匹配结果
poetry-random/poetry-search/poetry-list/poetry-detail接口均同时返回原始繁体(title/author/paragraphs)与简体(titleSimplified/authorSimplified/paragraphsSimplified)两套文本- 上述接口传
pinyin=1(或true)时追加paragraphsPinyin(每句拼音,与paragraphs一一对应) poetry-random接口的子集字体基于简体内容生成,通过 Redis 记录,TTL 20 分钟后自动清理
