# jin_ri **Repository Path**: firfe/jin_ri ## Basic Information - **Project Name**: jin_ri - **Description**: 今日:自用KWGT接口,返回农历,一言,诗词 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-24 - **Last Updated**: 2025-10-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 今日 这是一个个人自用的 API。通过请求不同路径返回不同的信息,包括农历信息,随机一言,随机诗词。 所有请求都是 GET 请求,默认返回 JSON 数据。 这个项目是我用在安卓小部件自定义软件 KWGT 上的。所以所有返回内容的属性名称除了中文之外还有一个拼音缩写的名称。 项目仓库 - GitHub 仓库 https://github.com/Firfr/jin_ri - Gitee 仓库 https://gitee.com/firfe/jin_ri 这个项目没有提供公共接口(没钱买云服务器),需要自行部署。 欢迎关注我B站账号 [秦曱凧](https://space.bilibili.com/17547201) (读作 qín yuē zhēng) 有需要帮忙部署这个项目的朋友,一杯奶茶,即可程远程帮你部署,需要可联系。 微信号 `E-0_0-` 闲鱼搜索用户 `明月人间` 或者邮箱 `firfe163@163.com` 如果这个项目有帮到你。欢迎 start。 ## 目录 - [使用到的项目](#使用到的项目) - [项目配置](#项目配置) - [接口说明](#接口说明) - [jin_ri](#jin_ri) - [yi_yan](#yi_yan) - [shi_ci](#shi_ci) - [本地运行](#本地运行) - [Docker 运行](#docker-运行) - [手机KWGT效果示例](#效果示例) ## 使用到的项目 - 农历相关使用的是 Lunisolar - 专业的 Javascript 农历库 - 官网 https://lunisolar.js.org - GitHub https://github.com/waterbeside/lunisolar - 一言句子库来自一言官方 - 官网 https://hitokoto.cn - GitHub https://github.com/hitokoto-osc/sentences-bundle - 诗词来源 chinese-poetry/chinese-poetry - 最全中华古诗词数据库, 唐宋两朝近一万四千古诗人, 接近 5.5 万首唐诗加 26 万宋诗. 两宋时期 1564 位词人,21050 首词。 - 官网 https://github.com/chinese-poetry/chinese-poetry - GitHub https://awesome-poetry.top - 诗词只使用了其中的`元曲.json`、`唐诗三百首.json`、`宋词三百首.json`、`曹操.json`、`水墨唐诗.json`、`纳兰性德诗集.json`、`诗经.json`并进行了格式化。 ### 使用到的模块 - 服务端 Express - 跨域相关 cors - 调试运行 nodemon - 农历库 Lunisolar 为了减小体积用的是单文件,不是 npm 包。 ## 项目配置 - 端口 - 默认端口:1234,可以通过环境变量`PORT`修改。 - 跨域 - 跨域策略,通过环境变量`CORS`的值进行设置。默认是 0 - -1 不允许跨域 - 0 仅允许跨域列表中的域名跨域访问 - 1 允许所有网站跨域访问 - 允许跨域访问的域名列表设置 - 跨域列表文件在`代码/配置/跨域列表.txt` - 文件中,一行一个域名,只写域名,不要写路径,`//`开头的会忽略 - 示例内容 ```txt // 跨域列表,一行一个域名 http://192.168.13.20:5500/ http://192.168.13.7:1052/ ``` - 如果跨域列表不会配置,直接设置环境变量`CORS=1`允许全部跨域访问,或者设置环境变量`CORS=-1`不允许跨域访问 - 认证 - 认证是必须得,放置恶意访问, - 认证文件在`代码/配置/用户认证.json` - 示例如下 ```json [ { "用户名": "用户一", "令牌": "qwer" }, { "用户名": "用户二", "令牌": "asdf" } ] ``` - 整体是一个数组,每个对象是一个用户,用户名和令牌是必须的,用户名是给自己看的,令牌的值需要再请求的时候填写。 - 在请求时增加查询字符串`token`,值为用户令牌,如:`?token=qwer` ## 接口说明 所有请求都是 GET 请求,查询字符串`token`是必须的。 ### jin_ri - 请求路径 ``` /jin_ri/?token=令牌 ``` `令牌`的具体内容就是用户认证文件中的令牌 - 返回示例 ```json { "公历": { "年": 2025, "月": 10, "日": 21 }, "gl": { "n": 2025, "y": 10, "r": 21 }, "星期": 2, "星期大写": "二", "xq": 2, "xqdx": "二", "日期": "2025-10-21", "时间": "15:53:58.823", "rq": "2025-10-21", "sj": "15:53:58.823", "农历": { "年": "二〇二五年", "月": "九月(大)", "日": "初一", "时": "申時" }, "nl": { "n": "二〇二五年", "y": "九月(大)", "r": "初一", "s": "申時" }, "季节": "秋", "jj": "秋", "天干地支": { "年": "乙巳", "月": "丙戌", "日": "癸亥", "时": "庚申" }, "tgdz": { "n": "乙巳", "y": "丙戌", "r": "癸亥", "s": "庚申" }, "节气": "无", "jq": "无", "节气前": { "节气": "寒露", "节气日期": "2025-10-8", "过去天数": 13 }, "jqq": { "jq": "寒露", "rq": "2025-10-8", "ts": 13 }, "节气后": { "节气": "霜降", "节气日期": "2025-10-23", "距离天数": 2 }, "jqh": { "jq": "霜降", "rq": "2025-10-23", "ts": 2 }, "宜5": "整手足甲,整容,剃頭", "忌5": "修置產室,選將訓兵,嫁娶,安撫邊境,出師", "宜": "整容,剃頭,整手足甲", "忌": "安撫邊境,選將訓兵,出師,嫁娶,修置產室", "y5": "整手足甲,剃頭,整容", "j5": "修置產室,選將訓兵,安撫邊境,嫁娶,出師", "y": "整容,剃頭,整手足甲", "j": "安撫邊境,選將訓兵,出師,嫁娶,修置產室" } ``` `宜5`和`忌5`是从`宜`和`忌`中随机抽取 5 个。 ### yi_yan - 请求路径 ``` /yi_yan/?token=令牌 ``` `令牌`的具体内容就是用户认证文件中的令牌 - 其他查询字符串 - 查询字符串除了`token`外,其他参数都是可选的,可以不填。 - `t` 句子类型,默认随机,具体值参考项目 [句子类型](#句子类型) - `n` 句子的最小长度,默认 1,句子库中最短句子是 2 字 - `x` 句子的最大长度,默认 30,句子库中最长句子是 130 字 - `c` 返回格式,默认 JSON,1 是纯文本,纯文本只返回句子本身 - 请求示例 - 默认 ``` /yi_yan/?token=令牌 ``` - 指定类型 ``` /yi_yan/?token=令牌&t=c ``` - 指定最小长度 ``` /yi_yan/?token=令牌&n=5 ``` - 指定最大长度 ``` /yi_yan/?token=令牌&x=5 ``` - 指定返回类型 ``` /yi_yan/?token=令牌&c=1 ``` - 返回示例 - JSON ```json { "类型": "其他", "内容": "握不住的沙,不如扬了它。", "出处": "其他", "作者": "未知", "长度": 12, "lx": "其他", "nr": "握不住的沙,不如扬了它。", "cc": "其他", "zz": "未知", "cd": 12 } ``` - 纯文本 ``` 唯有门前镜湖水,春风不改旧时波。 ``` - 关于句子的出处和作者 - 如果句子是某个作品中的虚拟人物,出处是该作品,作者为该作品中的虚拟人物。 #### 句子类型 | 参数 | 说明 | | :--: | :------- | | a | 动画 | | b | 漫画 | | c | 游戏 | | d | 文学 | | e | 原创 | | f | 来自网络 | | g | 其他 | | h | 影视 | | i | 诗词 | | j | 网易云 | | k | 哲学 | | l | 抖机灵 | | 其他 | 随机 | ### shi_ci - 请求路径 ``` /shi_ci/?token=令牌 ``` `令牌`的具体内容就是用户认证文件中的令牌 - 其他查询字符串 - 查询字符串除了`token`外,只有一个`t`,可以不填。 - `t` 诗词类型,默认随机。 | 参数 | 说明 | | :--: | :------- | |c | 曹操 | |n | 纳兰性德诗集 | |sj | 诗经 | |sm | 水墨唐诗 | |sc | 宋词三百首 | |t | 唐诗三百首 | |y | 元曲 | - 返回示例 ```json { "诗词类型": "唐诗三百首", "作者": "李商隱", "朝代": "唐", "标题": "隋宮", "内容": [ "紫泉宮殿鎖煙霞,欲取蕪城作帝家。", "玉璽不緣歸日角,錦帆應是到天涯。", "于今腐草無螢火,終古垂楊有暮鴉。", "地下若逢陳後主,豈宜重問後庭花。" ], "内容文本": "紫泉宮殿鎖煙霞,欲取蕪城作帝家。\n玉璽不緣歸日角,錦帆應是到天涯。\n于今腐草無螢火,終古垂楊有暮鴉。\n地下若逢陳後主,豈宜重問後庭 花。", "nrwb": "紫泉宮殿鎖煙霞,欲取蕪城作帝家。\n玉璽不緣歸日角,錦帆應是到天涯。\n于今腐草無螢火,終古垂楊有暮鴉。\n地下若逢陳後主,豈宜重問後庭花。 ", "zz": "李商隱", "cd": "唐", "bt": "隋宮", "nr": [ "紫泉宮殿鎖煙霞,欲取蕪城作帝家。", "玉璽不緣歸日角,錦帆應是到天涯。", "于今腐草無螢火,終古垂楊有暮鴉。", "地下若逢陳後主,豈宜重問後庭花。" ] } ``` 所有属性中只有`诗词类型`、`标题`、`bt``内容`、`nr`、`内容文本`、`nrwb`是固定有的,其他属性不固定,可能没有。 ## 本地运行 - 本地有 node 环境,node 版本 20 以上 - 下载项目 - 进入项目目录 - 安装依赖 ```bash npm i ``` - 配置用户认证和跨域列表 - 运行 ```bash npm run start ``` ## Docker 运行 ### 镜像 从阿里云或华为云镜像仓库拉取镜像,注意填写镜像标签,镜像仓库中没有`latest`标签 容器内部端口`1234`,可通过设置环境变量`PORT`的值来指定监听端口。使用环境变量`CORS`设置跨域策略。 - 国内仓库 - AMD64 镜像 ```bash swr.cn-north-4.myhuaweicloud.com/firfe/jin_ri:1.0 ``` - ARM64 镜像 ```bash swr.cn-north-4.myhuaweicloud.com/firfe/jin_ri:1.0-arm64 ``` - DockerHub 仓库 - AMD64 镜像 ```bash firfe/jin_ri:1.0 ``` - ARM64 镜像 ```bash firfe/jin_ri:1.0-arm64 ``` ### docker run 命令部署 ```bash docker run -d \ --name jin_ri \ --network bridge \ --restart always \ --log-opt max-size=1m \ --log-opt max-file=1 \ -p 1234:1234 \ -v ./data:/app/代码/配置 \ firfe/jin_ri:1.0 ``` ### compose 文件部署 👍 推荐 ```yaml name: jin_ri services: jin_ri: container_name: jin_ri image: swr.cn-north-4.myhuaweicloud.com/firfe/jin_ri:1.0 network_mode: bridge restart: always logging: options: max-size: 1m max-file: "1" #environment: # 自定义端口 #PORT: 1234 # 跨域策略 # -1 不允许跨域,0 指定跨域列表,1 允许所有跨域 #CORS: 0 ports: - 1234:1234 volumes: - ./data:/app/代码/配置 ``` ## 效果示例 > API 接口在安卓手机上使用 KWGT 建立小部件的示例。 | 今日 | 一言 | 诗词 | | :--: | :--: | :--: | | ![今日](图片/今日.jpg) | ![一言](图片/一言.jpg) | ![诗词](图片/诗词.jpg) |