Skip to content

古诗词 ​

基于 chinese-poetry 数据集,数据已全部迁移至 MySQL 数据库,提供古诗词、典籍、蒙学、作者、佳句的随机获取、搜索与列表查询功能。

数据说明

所有诗词数据均为繁体中文字符,搜索关键词建议使用繁体以获得最佳匹配结果。

随机获取古诗 ​

从数据库中随机获取一首古诗词(全量数据,非仅前几批),返回原始繁体与简体两套文本,并按简体内容自动提取字形生成子集字体文件。可选返回每句拼音。

  • 方法: GET
  • 路径: /api/web/chinese/poetry-random

请求参数 (Query) ​

参数类型必填说明
typestring否类型:tang唐诗 / song宋诗 / shijing诗经 / lunyu论语 / ci宋词 / chuci楚辞 / caocao曹操 / yuanqu元曲 / nalan纳兰 / wudaici五代词,默认 tang
pinyinstring否是否返回每句拼音:传 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) ​

参数类型必填说明
keywordstring是搜索关键词(建议使用繁体)
typestring否tang / song / ci / shijing / chuci / caocao / yuanqu / nalan / wudaici / all,默认 all
pageint否页码,默认 1
sizeint否每页条数,默认 20,最大 100
pinyinstring否是否返回每句拼音:传 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) ​

参数类型必填说明
dynastystring否朝代:tang / song / wei / wudai / yuan / qing / pre_qin
categorystring否类型:shi / ci / qu / shijing / chuci / caocao / nalan
authorstring否作者名(模糊匹配)
pageint否页码,默认 1
sizeint否每页条数,默认 20
pinyinstring否是否返回每句拼音:传 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) ​

参数类型必填说明
idint是诗词 ID
pinyinstring否是否返回每句拼音:传 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) ​

参数类型必填说明
dynastystring否朝代:tang / song / wudai
namestring否作者名(模糊搜索)
pageint否页码,默认 1
sizeint否每页条数,默认 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) ​

参数类型必填说明
idint否作者 ID(与 name 二选一)
namestring否作者名(与 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) ​

参数类型必填说明
categorystring否类型:lunyu论语 / mengzi孟子 / daxue大学 / zhongyong中庸
chapterstring否篇章名(模糊匹配)
pageint否页码,默认 1
sizeint否每页条数,默认 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) ​

参数类型必填说明
titlestring否读物名(模糊匹配)
chapterstring否章节(模糊匹配)
typestring否诗体类型
pageint否页码,默认 1
sizeint否每页条数,默认 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) ​

参数类型必填说明
categorystring否类型,默认 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) ​

参数类型必填说明
keywordstring是搜索关键词
categorystring否类型,默认 youmengying
pageint否页码,默认 1
sizeint否每页条数,默认 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_poetry99416唐诗 / 宋诗 / 宋词 / 诗经 / 楚辞 / 曹操 / 元曲 / 纳兰 / 五代
chinese_classics36论语 / 孟子 / 大学 / 中庸
chinese_mengxue84212 种蒙学读物
chinese_poets14174唐宋 / 宋词 / 五代作者
chinese_quotes219幽梦影佳句

数据导入脚本 ​

脚本路径: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 分钟后自动清理