本站受中华人民共和国法律保护
This website is protected by the law of People's Republic of China

MENU

一言API的灵活调用

August 29, 2018 • 教程

2018-08-29-01

简单来说,一言(ヒトコト)指的是就是一句话,可以是动漫中的台词,可以是小说中的语句,也可以是网络上的各种小段子。
或是感动,或是开心,又或是单纯的回忆,来到这里,留下你所喜欢的那一句句话,与大家分享,这就是一言存在的目的。
*:本段文本源自hitokoto.us.

在优化博客的过程中,顺手在底部调用了Hitokoto.cn.的接口,着实美观了不少。刚好有人询问我这个的实现方式,我就找几个比较成熟的一言项目来讲一讲顺便水篇文章。

1.Cn

接口:

  • 请求地址:https://v1.hitokoto.cn/
  • 请求协议:GET
  • 参数

    • c - Cat - 输出类型

      • a - Anime - 动画
      • b - Comic - 漫画
      • c - Game - 游戏
      • d - Novel - 小说
      • e - Myself - 原创
      • f - Internet - 网络
      • g - Other - 其他
      • NUll - 随机
    • encode -数据格式

      • text - 返回纯净文本
      • json

        • id
        • hitokoto - 文本
        • type - 类型
        • from - 出处
        • creator - 添加者
        • created_at - 添加时间
    • js
    • charset

      • utf-8
      • gbk
    • callback - 回调函数
<!-- JS -->
<script type="text/javascript" src="https://v1.hitokoto.cn/?encode=js"></script>
<script>hitokoto()</script>

<!-- HTML -->
<p id="hitokoto">:D 获取中...</p>
<script src="https://v1.hitokoto.cn/?encode=js&select=%23hitokoto" defer></script>

Cn的API文档十分齐全,我就不在此过多赘述了。

2.Meto

接口:

<!-- JS -->
<script type="text/javascript" src="https://api.i-meto.com/hitokoto?encode=js"></script>
<script>hitokoto()</script>

<!-- HTML -->
<p id='hitokoto'>:D 获取中...</p>
<script type="text/javascript" src="https://api.i-meto.com/hitokoto?encode=js-html" async defer></script>

3.LWL12

接口:

  • 请求地址:

https://api.lwl12.com/hitokoto/v1/

  • 请求方式:GET
  • 参数

    • charset

      • utf-8
      • gbk
    • encode - 数据格式

      • js
      • json - 函数名为echokoto的jsonp数据
      • text - 文本

        • source - 来源
        • author - 作者
        • realjson - 标准json数据
<!-- JS -->
<script type="text/javascript" src="https://api.lwl12.com/hitokoto/main/get?encode=js&charset=utf-8"></script>
<div id="hitokoto"><script>lwlhitokoto()</script></div>

<!-- HTML -->
<p id='hitokoto'>:D 获取中...</p>
<script type="text/javascript" src="https://api.lwl12.com/hitokoto/v1" async defer></script>

4.今日诗词

高自定义接口,可根据需求自行定制。所以我就不进行过多的说明了,下面展示几种调用方式。

  • 图片调用接口:

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

  • Markdown 格式
![今日诗词](https://v2.jinrishici.com/one.svg)
  • HTML 格式
<img alt="今日诗词" src="https://v2.jinrishici.com/one.svg">

4.小霖&张戈

前面介绍的三种方法都是调用的都是别人的接口,下面运用小霖&张戈开源的代码来本地部署Hitokoto。它将支持自定义一言库,但自定义分类、数据格式等功能就需要自行二开了,可以说有利也有弊,那么诸君自行挑选自己喜欢的方式啦。

1.在网站根目录下创建hitokoto.php文件

<?php
//获取句子文件的绝对路径
//如果你介意别人可能会拖走这个文本,可以把文件名自定义一下,或者通过Nginx禁止拉取也行。
$path = dirname(__FILE__);
$file = file($path."/hitokoto.txt");

//随机读取一行
$arr  = mt_rand( 0, count( $file ) - 1 );
$content  = trim($file[$arr]);

//编码判断,用于输出相应的响应头部编码
if (isset($_GET['charset']) && !empty($_GET['charset'])) {
    $charset = $_GET['charset'];
    if (strcasecmp($charset,"gbk") == 0 ) {
        $content = mb_convert_encoding($content,'gbk', 'utf-8');
    }
} else {
    $charset = 'utf-8';
}
header("Content-Type: text/html; charset=$charset");

//格式化判断,输出js或纯文本
if ($_GET['format'] === 'js') {
    echo "function hitokoto(){document.write('" . $content ."');}";
} else {
    echo $content;
}

,2.在网站根目录下创建hitokoto.txt
一行一个句子,程序将会随机获取。

3.调用接口

<script type="text/javascript" src="https://你的域名/hitokoto.php?format=js&charset=utf-8"></script>
<div id="hitokoto"><script>hitokoto()</script></div>

以上代码均已经过测试,可直接投入使用。
Github上类似的项目也不少,如果感兴趣的话可以去看看。

Tags: 一言
最后编辑于: October 26, 2018 18:30
Archives QR Code
QR Code for this page
Tipping QR Code
Leave a Comment

已有 3 条评论
  1. Hello,我也开发了一个 关于古诗词的 一言 API,可以根据场景智能推荐。不知道博主有没兴趣看一看,我们还提供炒鸡方便的安装SDK。
    https://www.jinrishici.com

    1. @乱码挺好的一个API,有空将这个API加进这篇文章😂

    2. @Scvoet谢谢@(太开心)