Hitokoto·一言是一个挺有意思的项目,一言网(Hitokoto.cn)创立于2016年,隶属于萌创Team,目前网站主要提供一句话服务。
动漫也好、小说也好、网络也好,不论在哪里,我们总会看到有那么一两个句子能穿透你的心。我们把这些句子汇聚起来,形成一言网络,以传递更多的感动。
简单来说,一言指的就是一句话,可以是动漫中的台词,也可以是电影中的经典台词亦或者是生活中的小感悟...
或是感动,或是开心,有或是单纯的回忆。来到这里,留下你所喜欢的那一句句话,与大家分享,这就是一言存在的目的。
本API去除原API的各种链接、各种参数,简洁得只剩下字了!还能免去一个插件使用。
数据获取
- 请求地址:https://api.sep.cc
- 请求方式:GET
- 请求编码:接口:charset 参数:UTF-8/GBK
- 请求参数:接口:
format
参数:js - 禁止协议:http请求协议已禁止,防劫持
<?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; }
以上代码保存为 index.php,然后上传到网站根目录下的 hitokoto 文件夹, hitokoto.txt 文本文件自行添加句子并上传到 hitokoto 文件夹内。
在您所需要显示的地方添加以下代码;
Typecho丨Wordpress:
<script type="text/javascript" src="https://api.sep.cc/?format=js&charset=utf-8"></script>
<div id="hitokoto"><script>hitokoto()</script></div>
如不想自己搭建,可以直接复制以上代码添加到您所需要显示的地方即可。
高阶版:无需刷新网页自动滚动更新一言显示脚本
以下代码保存为 js 文件,并引入;
(function() { var server = 'https://api.sep.cc'; var target = document.getElementById('hitokoto'); var fadeDur = 1; var waitDur = 10; var errorMsg = '加载出现了问题!'; /* -- 配置部分结束 -- */ var first = true; var present = ''; target.style.opacity = 0; target.style.transition = 'opacity ' + fadeDur + 's'; function loadData() { var connect = new XMLHttpRequest(); connect.open('GET', server, true); connect.onload = function() { if (connect.status >= 200 && connect.status < 400) { present = connect.responseText; if (first) { first = false; target.textContent = present; fadeIn(); } else { fadeOut(); } } else { target.style.opacity = 1; target.textContent = errorMsg; setTimeout(loadData, (fadeDur + waitDur) * 1000); } } connect.onerror = function() { target.textContent = errorMsg; setTimeout(loadData, (fadeDur + waitDur) * 1000); } connect.send(); } function fadeOut() { target.style.opacity = 0; setTimeout(function() { target.textContent = present; fadeIn(); }, fadeDur * 1000); } function fadeIn() { target.style.opacity = 1; setTimeout(loadData, (fadeDur + waitDur) * 1000); } loadData(); })(); // 来源参考:https://www.tcdw.net/post/hitokoto-auto/
对应的 HTML
显示对象需修改如下:
<span id="hitokoto"></span>
hitokoto API
搭建于国内服务器,延迟低,速度快。
网络上有很多现成的一言API,随时都有可能不提供调用服务,而且别人的一言句子我不太喜欢,并且简单好用的都不开源,复杂的虽然开源,但是麻烦,还要数据库和其他环境编译什么的,麻烦!索性自己编写了一个,不需要数据库也不需要其他的环境编译,一个txt和一个php文件直接调用,简单高效。
现在,你每刷新一次,菜单栏上方都会出现不同的一句话哦。
自建一言API许巍歌词版本,去除了官方所有的文本,自收录许巍所有专辑经典歌词,个人定制。
2020.11.23 更新修复 wordpress 无法调用 BUG。
2021.10.03 修复 typecho 不能调用的BUG,现在不管你是 wordpress 还是typecho 都可以完美适配调用此 API。
2022.09.20 添加 JavaScript 自动滚动显示功能。
大佬,我也想要一个学习学习。[email protected]
啊,我也是写了个php文件。
直接读取txt然后分出列表再按照随机数输出一行。