Hexo 使用 API 添加 hitokoto (一言)
Dionysen

Keep主题本身自带一言(hitokoto,后续不再标注),只需在${blog-dir}/theme/keep/_config.yml中修改:

first_screen:
hitikoto: true

但是只能显示在主页中间,并且不能修改句子的种类和格式。

于是自己来修改。

官方文档:语句接口 | 一言开发者中心 (hitokoto.cn)

官方示例:使用示例 | 一言开发者中心 (hitokoto.cn)

本文参考了为您的Hexo博客添加Hitokoto一言功能 | Bill Yang’s Blog文章。

API的使用

在你想要加入一言的地方(.ejs文件)加入如下代码,比如要放到网页底部,就找到${blog-dir}/themes/keep/layout/_partial/footer.ejs,在其他元素后面加入代码:

<p id="hitokoto">Getting poem ... </p>
<p id="hitoauthor">Getting poem ... </p>
<p id="hitofrom">Getting poem ... </p> <!-- 此三行表示把下面脚本中获取的内容嵌入网页中 -->
<script>
fetch('https://v1.hitokoto.cn/?c=i') //此处c=i表示获取诗词类型,其他类型查看https://developer.hitokoto.cn/sentence/,找到所需要的类型,如文学,改成https://v1.hitokoto.cn/?c=d即可
.then(function (res){
return res.json();
})
.then(function (data) {
var hitokoto = document.getElementById('hitokoto');
hitokoto.innerText = data.hitokoto;//获取正文
var hitoauthor = document.getElementById('hitoauthor');
hitoauthor.innerText = "——" + data.from_who; // 获取作者
var hitofrom = document.getElementById('hitofrom');
hitofrom.innerText = "《" + data.from + '\xa0》'; //获取来源作品
})
.catch(function (err) {
console.error(err);
})
</script>

注:获取句子的类型:

参数 说明
a 动画
b 漫画
c 游戏
d 文学
e 原创
f 来自网络
g 其他
h 影视
i 诗词
j 网易云
k 哲学
l 抖机灵
其他 作为 动画 类型处理

可选择多个分类,例如: ?c=a&c=c

显示效果

以上效果为三行显示,并不美观:

image

可以缩为一行:

<p id="hitokoto_all">Getting poem ... </p>
<script>
fetch('https://v1.hitokoto.cn/?c=i')
.then(function (res){
return res.json();
})
.then(function (data) {
var hitokoto_all = document.getElementById('hitokoto_all');
hitokoto_all.innerText = data.hitokoto + " —— " + data.from_who +"《" + data.from + 》' ;
})
.catch(function (err) {
console.error(err);
})
</script>

// 这样还不够完美,应该在接受到句子之后刷新显示,改成如下:

<p id="hitokoto_all"><a href="#" id="hitokoto_text">获取诗词中 ... </a></p>
<script async <%= theme.pjax.enable === true ? 'data-pjax' : '' %>
>
fetch('https://v1.hitokoto.cn/?c=i')
.then(function (res){
return res.json();
})
.then(function (data) {
var hitokoto_all = document.getElementById('hitokoto_all');
hitokoto_all.innerText = data.hitokoto + " —— " + data.from_who +"《" + data.from + '》' ;
})
.catch(function (err) {
console.error(err);
})
</script>

效果为:

image

更多内容

请根据自己的需要自行选择要显示的内容:

返回参数名称 描述
id 一言标识
hitokoto 一言正文。编码方式 unicode。使用 utf-8。
type 类型。请参考第三节参数的表格
from 一言的出处
from_who 一言的作者
creator 添加者
creator_uid 添加者用户标识
reviewer 审核员标识
uuid 一言唯一标识;可以链接到 uuid 查看这个一言的完整信息
commit_from 提交方式
created_at 添加时间
length 句子长度
显示评论