简介

今日诗词 API 是一个可以返回一句古诗词名句的接口。它可以通过图片和 JSON 格式调用。今日诗词 API 根据不同地点、时间、节日、季节、天气、景观、城市、事件进行智能推荐。

演示:

官网: https://www.jinrishici.com/

调用文档: https://www.jinrishici.com/doc/

怎么调用

博客类的网站可以直接使用 sdk 调用

引入:

1
2
3
4
<script
src="https://sdk.jinrishici.com/v2/browser/jinrishici.js"
charset="utf-8"
></script>

在需要添加的地方加一个 id="jinrishici-sentence"

比如:

1
<span id="jinrishici-sentence">正在加载今日诗词....</span>

另有回调函数,可以自行处理,详见 文档

论坛文章可以调用图片

1
https://v2.jinrishici.com/one.svg

另有小程序 SDK,详见 文档

为什么要做这个接口

在一些游戏中,根据游戏内不同的天气或日期,可以触发一系列“奇遇”或者“成就”,这个感觉非常过瘾。我的想法也是想打通虚拟与现实的界限,做一个没有人做过的诗词推荐产品。当然也感谢一些网友(见 文档 致谢)的建议。

推荐怎么做的

在推荐方面,主要是能根据真实世界的环境做出诗词推荐。这个和传统的推荐系统不同,并不是基于历史数据集推荐的的形式,而主要是利用时间地点上下文信息,把时间地点天气信息转化为事件,根据事件标签进行相关推荐。这个领域我目前还没有看到有相关的产品,所以也是摸石头过河的状态。在评估诗词好坏,推荐契合度的时候,也引入了一些指标,但是具体效果仍待评估。

当然这也可能是一个恶性循环,因为我们没有办法收集用户的喜好,所以可能永远没有办法做到根据个人喜好推荐。当然,也有考虑商用版本,可以基于注册用户的推荐。

这个产品只有我一个人完成,所以无论是推荐事件制定还是诗词源标注上,都是以我自己的经验制定和打标,难免有偏颇之处,不过广大 v 友也可以提提意见,看看如何不断改进这个系统。十分感谢。

详细的推荐思路和推荐标签: https://www.jinrishici.com/doc/#how

关于产品

为了方便广大赖人站长朋友添加这个 API 到网站上,我在上一个版本就已经“独家”搞出基于 svg 的接口返回的形式,不过具体使用上可能还是稍微麻烦。现在我直接把 SDK 也写好,就可以像百度统计一样直接复制调用了。

我也想把影响力扩展到小程序上面,我们为小程序也提供了 SDK,并且我重新注册了一个 .com 域名并且备案(旧接口仍然提供服务,域名不变)。

关于开发

上一个版本接口用的是 vert.x 开发,vert.x 引入了大量 js 风格,在中大型项目上面非常蛋疼,比如没有 POJO,全是 JsonObject。没有接口,只有类似反射的调用方法。没有 IOC,只能自己 new。还有可怕的回调地狱。

好在 Spring 给了 Java 异步开发者一些希望。Spring Webflux 经过一年多的迭代,已经达到基本能用的水平。尤其是配套的 Reactor 3 采用了类似 Rxjava 的链式操作(或者可以理解为 Stream 的异步加强版),大幅简化了并行开发,异步开发的难度,提高了可读性。目前 Spring Webflux 已经集成在 Spring Boot 2 中,无缝和 SpringMVC 使用方法对接,并且可以无缝享受到 Spring Boot 全家桶。本接口采用 Webflux 开发。

然而 Webflux 也继承了 Spring 家一贯臃肿的风格,性能比 Vert.x 差不少,不过好歹也是运行在 Netty 上,比同步开发的响应速度还是有质的提高。

写在后面

更多有关本产品的细节,我已经在 文档 中阐述。当然,在使用之前,你需要同意我们的使用协议。(不能使用在违法网站上等)。