小东西
浮光 (The History) · …◁◁ ▷ ▷▷
原站音乐由外部服务提供,音源尚未迁移。

搭建自己的 “一言 API”

什么是一言

动漫也好、小说也好、网络也好,不论在哪里,我们总会看到有那么一两个句子能穿透你的心。我们把这些句子汇聚起来,形成一言网络,以传递更多的感动。 简单来说,一言指的就是一句话,可以是动漫中的台词,也可以是网络上的各种小段子。或是感动,或是开心,有或是单纯的回忆。来到这里,留下你所喜欢的那一句句话,与大家分享,这就是一言存在的目的

以上是摘自 Hitokoto.cn的介绍。当然一言也可以做很多其他事情,什么毒鸡汤啦,舔狗日记啦,全看你的创造力了。

搭建一言api

在一言API网站根目录内新建 index.php文件,并写入以下代码。

<?php
header("Content-type: text/html; charset=utf-8"); //设置编码 utf-8 
//获取句子文件的绝对路径
$path = dirname(__FILE__);
 
//接受type参数
if (isset($_GET['type']) && !empty($_GET['type'])) {
    $type = $_GET['type'];
    $file = file($path."/".$type.".txt");
} else {
    $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';
}

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

API使用方法

请求地址为: https: //your-domain/?type=jitang&encode=js [scode type=“yellow”] 需要将代码和地址中的 https://your-domain替换为自己 "一言 API"的地址 例如

  • 博客地址为 https://example.com
  • hitokoto文件夹位于网站根目录 /api文件夹内

那么 一言 API的地址为 https://example.com/api/hitokoto [/scode]

参数详解:

  • type:指定文本库文件名,无参数时默认为 'hitokoto.txt'
  • encode:赋值为 'js'时返回js代码,否则返回文本

示例1: 请求地址:https: //your-domain 返回 hitokoto.txt文本库内随机语句。 点我查看

示例2: 请求地址:https: //your-domain/?type=jitang 返回 jitang.txt文本库内随机语句。 点我查看

示例3: 请求地址:https: //your-domain/?encode=js 返回 hitokoto.txt文本库内随机语句,返回形式为 js代码。 点我查看

示例4: 请求地址:https: //your-domain/?type=jitang&encode=js 返回 jitang.txt文本库内随机语句,返回形式为 js代码。 点我查看

网页调用

PHP调用方法

添加如下代码到页面头部

<?php $hitokoto = file_get_contents('https://your-domain'); ?>

在需要显示“一言”的标签,插入如下代码:

<?php echo $hitokoto; ?>

JS调用方法

添加如下代码到页面底部;

$.post("https://your-domain/hitokoto", function(hitokoto) {
$(".content").html(hitokoto);
});

其他——纯js实现一言功能

前端显示代码 注意下 ID 值可以任意设置,调用的时候改下就行:

<div id="quotes" class="quotes"></div>

JS 获取一言函数 值得注意的是 TXT 文本文件的位置。

var txtUrl = "./js/quotes.txt";        // 一言文本本件(TXT)位置
window.onload = function(){
	getQuotesTxt( 'quotes', txtUrl);       // 获取一言
	window.setInterval( "getQuotesTxt( 'quotes', txtUrl)", 5000);    // 加个定时器自动刷新
}
 
// Text 文本文件中随机获取一行
function getQuotesTxt( id, url) {
	var i = 0,
		resultTxt = "",
		resultArr = [];
	
	if( !url ) { return "TXT 文件路径未设置!"}
	x = fetch(url)
	.then(function(response) {
		return response.text();
	})
	.then(function(text) {
		resultArr = text.toString().split(/[\n]/);        
		i = Math.floor( Math.random()*resultArr.length );
		resultTxt = resultArr[i];                       
		document.getElementById( id ).innerHTML = resultTxt;
	});
}

只需要向函数传递 DOM 元素的 id 属性值及文本文件的 url 地址即可。地址建议改成绝对路径,因为 js 是以调用位置做相对定位的

本文参考来源: https://blog.imvann.com/6.html https://blog.quietguoguo.com/3962.html

最后修改:© 允许规范转载

2 条评论

  1. http://www.baidu.com 中国 · 广东 Chrome 94.0.4606.71 Windows 10 / 11 电脑

    hello

  2. 沧笙踏歌 中国 · 广东 · 中山 Firefox 115.0 Windows 10 / 11 电脑

    请问如果要在WordPress的HTML小工具里面应该怎么调用?>﹏<

发表评论

评论审核后显示,邮箱不会公开。