V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
lhx2008
V2EX  ›  分享创造

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

  lhx2008 ·
xenv · 2018-09-25 21:42:08 +08:00 · 19597 次点击
  •   查看本主题需要登录
    这是一个创建于 2456 天前的主题,其中的信息可能已经有所发展或是发生改变。



    今日诗词



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

    vertx 是一站式异步解决方案,webflux 的 clientside 目前基本空白。
    EmpCold
        43
    EmpCold  
       2018-09-27 17:35:16 +08:00
    很少回复,正准备用一下。厉害了
    lhx2008
        44
    lhx2008  
    OP
       2018-09-27 18:16:08 +08:00 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  
       2018-09-27 18:38:17 +08:00 via Android
    @lhx2008 小项目不建议使用 eventbus,自带的 cluster 也可以不用,走 grpc 或者其它协议也很方便。

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

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

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

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


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

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

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

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

    ![]( )
    imhx233
        88
    imhx233  
       2018-10-17 17:04:24 +08:00 via iPhone
    @livid 这人开了帖子推广他的 Shortcuts 小程序 然后在这里无意义回帖 感觉 spam
    z0ne
        89
    z0ne  
       2018-10-17 18:54:20 +08:00
    @imhx233 不好意思给你带来了你觉得不舒服的感觉。

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

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


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


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

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

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


    第二个是你提的这个,我的想法是不加,因为我这个主要还是站长放到他网站上面,所以是我的接口直接面向的是每一个不同的实际用户,我不想站长替用户做推荐的决定(比如,增加一些附加参数,可能导致推荐效果更差,这是站长难以预料的)。当然我这个产品也必须符合大多数的人的需求才行。
    yinqi025
        93
    yinqi025  
       2018-10-20 09:37:00 +08:00
    蛮有趣的东西,已收藏
    Mystery0
        94
    Mystery0  
       2018-10-20 11:45:23 +08:00 via Android
    挺有用的,暫時收藏一個,後面看看能不能加到 app 裡面(不盈利的 app 啦)
    lhx2008
        95
    lhx2008  
    OP
       2018-10-20 12:10:00 +08:00 via Android
    @Mystery0 谢谢,以自己的内容盈利的话没有关系的,我只是不想有人直接拿我的接口去赚钱
    lusi1990
        96
    lusi1990  
       2018-10-20 15:07:07 +08:00
    很不错 ,收藏
    PulpFunction
        97
    PulpFunction  
       2018-10-20 20:30:10 +08:00
    ![今日诗词]( ‘ https://v2.jinrishici.com/one.svg ’)
    PulpFunction
        98
    PulpFunction  
       2018-10-20 20:30:24 +08:00
    PulpFunction
        99
    PulpFunction  
       2018-10-20 20:31:54 +08:00
    看不出来啊 大佬还是文艺的雅痞
    agonyperkey
        100
    agonyperkey  
       2018-10-23 08:40:30 +08:00
    我觉得,二十四节气,也可以整合一下标签😁😁😁
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5087 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 06:52 · PVG 14:52 · LAX 23:52 · JFK 02:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.