今日诗词 API,根据时间、地点、天气、事件智能返回一句古诗词,支持图片和 JSON 返回,提供 SDK,一分钟添加到网站(原一言古诗词 API 升级版) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
lhx2008

今日诗词 API,根据时间、地点、天气、事件智能返回一句古诗词,支持图片和 JSON 返回,提供 SDK,一分钟添加到网站(原一言古诗词 API 升级版)

  lhx2008
xenv Sep 25, 2018 21057 views
This topic created in 2777 days ago, the information mentioned may be changed or developed.



今日诗词



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

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


简介

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


怎么调用

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

引入:

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

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

比如:

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

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

论坛文章可以调用图片

![今日诗词]( https://v2.jinrishici.com/one.svg) 

( V2EX 回帖不支持这个)

另有小程序 SDK,详见 文档


为什么要做这个接口

上次在 v2 公开的 旧版本接口 还挺多人使用的,所以花了点时间重做了这个古诗词接口。

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


推荐怎么做的

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

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

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

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


关于产品

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

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


关于开发

上一个版本接口用的是 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 上,比同步开发的响应速度还是有质的提高。


写在后面

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

最后,诚挚的感觉各位 v 友的支持。

116 replies    2018-12-12 13:58:45 +08:00
1  2  
LengthMin
    1
LengthMin  
   Sep 25, 2018 via Androd
很赞
paperseller
    2
paperseller  
   Sep 25, 2018 via iPhone   2
不知道做成 ios12 捷径可不可行
Tink
    3
Tink  
PRO
   Sep 25, 2018 via iPhone
666,上捷径
lhx2008
    4
lhx2008  
OP
   Sep 25, 2018 via Android
@paperseller 没有玩过 ios,你可以试一下,不过不知道有没有地方存 token (或者 cookies )
Sanko
    5
Sanko  
   Sep 25, 2018 via Android
一直在用旧版接口,支持
Tink
    6
Tink  
PRO
   Sep 25, 2018 via iPhone   1
JamesSi
    7
JamesSi  
   Sep 25, 2018 via Android
好东西要支持
Tink
    8
Tink  
PRO
   Sep 25, 2018 via iPhone
@Tink #6 输出的是诗源,只要推荐诗句的话把那个 origin 删了就行
caijunyi
    9
caijunyi  
   Sep 26, 2018
http://caijunyi.net/ 已经添加,哈哈,好东西
wb14123
    10
wb14123  
   Sep 26, 2018
赞! Demo 里面能把整首诗输出就好了。
YingJie
    11
YingJie  
   Sep 26, 2018 via Android
旧版接口需要更换吗?
wb14123
    12
wb14123  
   Sep 26, 2018
但是测试了一下我在北京好像并没有和北京相关的诗句。
lhx2008
    13
lhx2008  
OP
   Sep 26, 2018 via Android
@wb14123 城市的诗句不多,不太好找。北京在唐宋也不是首都。
lhx2008
    14
lhx2008  
OP
   Sep 26, 2018 via Android
@YingJie 更换最好,也可以不换,旧版继续保留运营
why1
    15
why1  
   Sep 26, 2018 via Android
根据通讯录姓名返回一条怎样
NicholasYX
    16
NicholasYX  
   Sep 26, 2018 via iPhone
支持
lhx2008
    17
lhx2008  
OP
   Sep 26, 2018 via Android
@why1 哈哈,理论上应该也可以,不过现在感觉越来越少存通讯录了。
lhx2008
    18
lhx2008  
OP
   Sep 26, 2018 via Android
@wb14123 排版不太在行,现在就没输出原诗。不知道有没有 UI 或者前端的朋友帮忙搞一下 哈哈
lhx2008
    19
lhx2008  
OP
   Sep 26, 2018 via Android
@caijunyi 谢谢支持
ZiLong
    20
ZiLong  
   Sep 26, 2018
loethen
    21
loethen  
   Sep 26, 2018
很棒 已收藏
yangxiongguo
    22
yangxiongguo  
   Sep 26, 2018
好玩,支持
paperseller
    23
paperseller  
   Sep 26, 2018 via iPhone
@wb14123 添加一个合并文本 action,分隔符为新行
whileFalse
    24
whileFalse  
   Sep 26, 2018
虽然不知道有什么用,但是挺好玩的。
lhx2008
    25
lhx2008  
OP
   Sep 26, 2018 via Android
@whileFalse 可以加到博客最下面也不错
Edwards
    26
Edwards  
   Sep 26, 2018
战略性 mark
xi_lin
    27
xi_lin  
   Sep 26, 2018
很棒,赞一个
azoon
    28
azoon  
   Sep 26, 2018
不错不错,已经把楼主首页的功能直接搬走了。
xiyiailoli
    29
xiyiailoli  
   Sep 26, 2018 via Android
mark,周末试试
paperseller
    30
paperseller  
   Sep 26, 2018 via iPhone   2
mytry
    31
mytry  
   Sep 26, 2018   1
KAaBUcT0D4zEgtxZ
    32
KAaBUcT0D4zEgtxZ  
   Sep 26, 2018
小程序可以做成插件,直接集成
ww2000e
    33
ww2000e  
   Sep 26, 2018   2
刷出来个 菊花何太苦,遭此两重阳 。。
lhx2008
    34
lhx2008  
OP
   Sep 26, 2018 via Android
@aslanTT 不知道能不能过审,插件要求比较多,sdk 其实就是帮你请求了个网络而已,我晚上试试。谢谢
LxRuzx
    35
LxRuzx  
   Sep 26, 2018
不错哦 mark 了
KAaBUcT0D4zEgtxZ
    36
KAaBUcT0D4zEgtxZ  
   Sep 26, 2018
@lhx2008 这个过审问题不大,没有涉及到特殊分类,也没有涉及到社交、交易,就是个工具属性的。
lhx2008
    37
lhx2008  
OP
   Sep 26, 2018
@aslanTT 看了一下,自己没有搞公司的号,个人号还没法弄。
097ecom
    38
097ecom  
   Sep 26, 2018
mark 很好玩的样子
097ecom
    39
097ecom  
   Sep 26, 2018
楼主也是米农吧哈哈
lhx2008
    40
lhx2008  
OP
   Sep 26, 2018
@097ecom 不敢不敢,就持有了十几个米这样子,哈哈
techv
    41
techv  
   Sep 27, 2018
不错,已添加: https://imgless.com/
sagaxu
    42
sagaxu  
   Sep 27, 2018 via Android
vertx 可以跟 springboot 一起用,spring 负责配置解析和 ioc,vertx 处理请求。pojo 可以用 mapFrom/mapTo。回调可以用 Future 解决,此外 vertx 也支持 rxjava,甚至连 Kotlin 的 coroutine 也无缝支持了。

vertx 是一站式异步解决方案,webflux 的 clientside 目前基本空白。
EmpCold
    43
EmpCold  
   Sep 27, 2018
很少回复,正准备用一下。厉害了
lhx2008
    44
lhx2008  
OP
   Sep 27, 2018 via Android
@sagaxu
感谢回复
1.和 springboot 用可以的,不过用起来总是感觉怪怪的,webflux 直接免配置提供 springmvc 那一套,包括 函数注解,参数注解,viewmodel,参数校验
2.json 这个,vet.x 自带的很弱,map 功能好像也没有,并且还不太兼容其他的 json 包 /普通对象,比如发上 eventbus 要写一个编解码器 return 一下自己,如果是用 vert.x service 就必须只能传自己的 jsonObject,这个很蛋疼
3. 回调这个确实不是大问题,不过自带的确实也很弱,主要是 eventbus 和 blokingpool 这个回调机制如果不利用的话,其实和 webflux 差不多(都是 netty 搞一层)
4. webflux client 有的,功能不比 vert.x 少,也是异步链式使用的,数据库客户端也有 mongo redis cassandra
https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html#webflux-client
sagaxu
    45
sagaxu  
   Sep 27, 2018 via Android
@lhx2008 小项目不建议使用 eventbus,自带的 cluster 也可以不用,走 grpc 或者其它协议也很方便。

vertx 内置支持 rxjava 的 api,rxjava 在响应式这一块儿比谁弱呢?

webflux 作为 client 支持的协议还是太少,比如你贴的文档里,只有 webclient 一种。
lhx2008
    46
lhx2008  
OP
   Sep 27, 2018 via Android
@sagaxu 如果是微服务那些框架,应该是搞到 spring cloud 里面有一套解决方案

其他协议确实是不支持了
saozhu
    47
saozhu  
   Sep 27, 2018 via iPhone
今天什么日子 怎么全都带菊字的
lhx2008
    48
lhx2008  
OP
   Sep 27, 2018
@saozhu 可以看 https://www.jinrishici.com/doc/#how 的表,花类主要是补充一下诗词不够的情况。。
lhx2008
    49
lhx2008  
OP
   Sep 27, 2018
@lhx2008 哦,不,我看了一下,可能只是古诗写菊花的比较多吧。。菊花的事件转化规则还没写
zhuliuqi
    50
zhuliuqi  
   Sep 28, 2018
有意思 mark
tyhtao1990
    51
tyhtao1990  
   Sep 28, 2018
赞,楼主可以的
TimLang
    52
TimLang  
   Sep 29, 2018
@lhx2008 挂 adsense 广告的网站能免费试用吗
lhx2008
    53
lhx2008  
OP
   Sep 29, 2018 via Android
@TimLang 可以,只是说整个网页是 以我的推荐为主要内容 的不行
hanbing135
    54
hanbing135  
   Sep 29, 2018 via Android
建议出个微信小程序
lhx2008
    55
lhx2008  
OP
   Sep 29, 2018 via Android
@hanbing135 本来是有这个计划的,但是迫于 UI 太丑搁置了,而且没得参考。。
moxiaonai
    56
moxiaonai  
   Sep 29, 2018
mark
moxiaonai
    57
moxiaonai  
   Sep 29, 2018
文档太丑,推荐 https://github.com/docsifyjs/docsify 优化一下
lhx2008
    58
lhx2008  
OP
   Sep 29, 2018
@moxiaonai emm,还好吧?比较简洁明了,字大小也比较合适。除了没有代码高亮。acsiidoc 写的,spring 文档同款
dakb
    59
dakb  
   Sep 29, 2018
刚好需要。tks
StevenZhang
    60
StevenZhang  
   Sep 30, 2018
支持
amwyyyy
    61
amwyyyy  
   Sep 30, 2018
不错,我拿来做终端启动的欢迎语了
LWXYFER
    62
LWXYFER  
   Oct 1, 2018
支持
zealzz
    63
zealzz  
   Oct 2, 2018 via Android
可以试着把名人名言也放进去,这样内容应该会更丰富。
testsec
    64
testsec  
   Oct 3, 2018 via iPhone
如果有作者就更好了
lhx2008
    65
lhx2008  
OP
   Oct 3, 2018 via Android
@testsec json 接口啥都有,翻译都有
ddzzhen
    66
ddzzhen  
   Oct 8, 2018
有想法的人
chendeshen
    67
chendeshen  
   Oct 8, 2018
真的赞,真想看其 Spring 源码
liangzi
    68
liangzi  
   Oct 8, 2018 via Android
回头试试
sunnybird
    69
sunnybird  
   Oct 8, 2018
赞,mark
tonghuazhen
    70
tonghuazhen  
   Oct 9, 2018
https://blog.extrastu.xin 已加上,很赞
Nobitasean
    71
Nobitasean  
   Oct 9, 2018
更倾向于壁纸 api
SCaffrey
    72
SCaffrey  
   Oct 9, 2018 via Android
赞~

另:广大赖人站长 哈哈哈
liangzi
    73
liangzi  
   Oct 10, 2018 via Android
hexo 第二步,在你需要放置诗词的地方,添加一个 id 属性,id 名为 jinrishici-sentence 这个到底放哪儿?
lhx2008
    74
lhx2008  
OP
   Oct 10, 2018
@liangzi 放在哪就在哪里显示,比如把下面的两行放到一个空的 html 里面,打开浏览器就可以看到效果


<span id="jinrishici-sentence">正在加载今日诗词....</span>
<script src="https://sdk.jinrishici.com/v2/browser/jinrishici.js" charset="utf-8"></script>
liangzi
    75
liangzi  
   Oct 10, 2018 via Android
@lhx2008 回去试试 谢谢
dyxang
    76
dyxang  
   Oct 11, 2018 via Android
楼主可以试试这个百度诗词标签的思路
在手机上是这种效果
http://clients3.google.com/generate_204
dyxang
    77
dyxang  
   Oct 11, 2018 via Android
啊不发错了,是这个
dyxang
    78
dyxang  
   Oct 11, 2018 via Android
要是有程序和这个配合让诗词显示在电脑桌面就好了……
lhx2008
    79
lhx2008  
OP
   Oct 11, 2018 via Android
@dyxang 我采用了这个的部分数据,但是情感,动植物标签这种太泛化了。

显示在桌面也不错,应该十几二十行代码就可以了,不过我对桌面开发不太熟悉
linKnowEasy
    80
linKnowEasy  
   Oct 12, 2018
用楼主的 API, 写了一个 Mac 菜单栏。自己看
dyxang
    81
dyxang  
   Oct 12, 2018 via Android
@linKnowEasy windows 不行吗……
linKnowEasy
    82
linKnowEasy  
   Oct 12, 2018
@dyxang windows 可以试试 C # 或者跨平台. 应该也简单的
主要 Mac 在顶部,方便看。windows 的菜单栏在底部.
dyxang
    83
dyxang  
   Oct 12, 2018 via Android
@linKnowEasy 简单但是我不会。放弃了
corerzhang
    84
corerzhang  
   Oct 15, 2018
请教下楼主,如果是在移动端 App 的调用 JSON-TOKEN 接口,这个接口只需要在 headers 带上 token 参数,那么是如果确定用户的位置的?
lhx2008
    85
lhx2008  
OP
   Oct 15, 2018 via Android
@corerzhang IP 地址都在 TCP 头上面,因为 JSON-TOKEN 也是用户端调用,所以用户向我们的 HTTP 请求会附带 IP 信息
liuooooo
    86
liuooooo  
   Oct 17, 2018
z0ne
    87
z0ne  
   Oct 17, 2018
很棒!

上边很多朋友对 iOS 捷径很感兴趣啊!也有大牛做了出来,我正好有点时间,就把上边大牛做的捷径进行了修改优化+功能扩展,支持复制、分享等操作。

小程序中搜索 ShortCuts 就可以看到捷径下载啦!
或者扫一扫小程序码立即安装:

![]( )
imhx233
    88
imhx233  
   Oct 17, 2018 via iPhone
@livid 这人开了帖子推广他的 Shortcuts 小程序 然后在这里无意义回帖 感觉 spam
z0ne
    89
z0ne  
   Oct 17, 2018
@imhx233 不好意思给你带来了你觉得不舒服的感觉。

但是我要反驳一下,关于这个“无意义回帖”,我不太懂你指的无意义是什么?我是否可以理解为你这个回复和主题无关,也属于无意义的回帖?

我是看到上边大佬做出了 iOS 的捷径,而正好,我正在做这一块,然后下载安装体验了下,有很多可以改进优化扩展的地方,于是我直接进行了修改发布然后在这里分享,试问这个从何判断与主题无关呢?


顺便,除了 @站长,你也可以直接 @我的,不然感觉像回到了学生时代,隔壁桌男生举手报告老师说我在看课外读物似的。


语气有点冲,望谅解
z0ne
    90
z0ne  
   Oct 17, 2018
@z0ne
不然感觉像回到了学生时代,隔壁桌戴着眼镜的男生一脸愤怒地举起了手,“英语老师!他在你的课上看计算机的书!我建议你应该罚他出去站一个小时!”

哈哈~ 开玩笑,冷笑话
run2
    91
run2  
   Oct 19, 2018
建议可以加 query,省去某些关键词的推荐么,比如地区 全是一个地区的诗 看着也累 或者本来下雨或者很冷 再来关于雨的也很心伤
https://v2.jinrishici.com/one.json?DOnotMatchTags=area|weather 这么来
lhx2008
    92
lhx2008  
OP
   Oct 19, 2018
@sobigfish

首先说一下推荐方面的。推荐比较单调,比如一般一个人也只有 10 个标签,也就是推这 10 个标签的诗,这个问题存在,但是不太好解决,我目前也没想到什么办法。至于负效果的标签,可以考虑推荐一些正能量的诗?哈哈。


第二个是你提的这个,我的想法是不加,因为我这个主要还是站长放到他网站上面,所以是我的接口直接面向的是每一个不同的实际用户,我不想站长替用户做推荐的决定(比如,增加一些附加参数,可能导致推荐效果更差,这是站长难以预料的)。当然我这个产品也必须符合大多数的人的需求才行。
yinqi025
    93
yinqi025  
   Oct 20, 2018
蛮有趣的东西,已收藏
Mystery0
    94
Mystery0  
   Oct 20, 2018 via Android
挺有用的,收藏一,後面看看能不能加到 app 面(不盈利的 app 啦)
lhx2008
    95
lhx2008  
OP
   Oct 20, 2018 via Android
@Mystery0 谢谢,以自己的内容盈利的话没有关系的,我只是不想有人直接拿我的接口去赚钱
lusi1990
    96
lusi1990  
   Oct 20, 2018
很不错 ,收藏
PulpFunction
    97
PulpFunction  
   Oct 20, 2018
![今日诗词]( ‘ https://v2.jinrishici.com/one.svg ’)
PulpFunction
    98
PulpFunction  
   Oct 20, 2018
PulpFunction
    99
PulpFunction  
   Oct 20, 2018
看不出来啊 大佬还是文艺的雅痞
agonyperkey
    100
agonyperkey  
   Oct 23, 2018
我觉得,二十四节气,也可以整合一下标签
1  2  
About     Help     Advertise     Blog     API     FAQ     Solana     2675 Online   Highest 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 153ms UTC 13:56 PVG 21:56 LAX 06:56 JFK 09:56
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86