使用一言(https://hitokoto.cn/)的API服务作为页脚名人名言虽然省事了,但是就博主三个月的使用情况来看,还是有很多不理想的地方:
- 夹带私货太多:在一言贡献内容的用户水平参差不齐,就算单选“文学”、“哲学”类,依旧有很多不适合作为名句的文本;
- 格式错误:有些格言的作者和著作名写反了;
- 服务不稳定:宕机时间有些长了,随机API经常无法正常工作。
处于客制化的目的,博主还是打算利用自己的资源制作一个用于替换的API,为了降低修改成本,网站本身的json格式解析不变,依旧沿用一言的格式。
准备名人名言JSON文件
先通过https://v1.hitokoto.cn/观察一言的json格式:
{"id":8066,"uuid":"60d1c327-2bee-451f-996d-28850aedc8a2","hitokoto":"海日生残夜,江春入旧年。","type":"i","from":"次北固山下","from_who":"王湾","creator":"=w=","creator_uid":9709,"reviewer":1,"commit_from":"web","created_at":"1626145474","length":12}
博主需要的就是“hitokoto”、"from"、“from_who”这三个字段,仿照建立一个测试JSON文件:
JSON
[
{"hitokoto":"这是测试语句一。","from":"random_quote","from_who":"Harumi"}, {"hitokoto":"这是测试语句二。","from":"random_quote","from_who":"Harumi"}
]
编写PHP脚本
创建一个负责读取 + 随机选择的PHP文件。
PHP
<?php
header('Content-Type: application/json');
// 你的名人名言 JSON 文件路径
$jsonFile = 'path-to-your-quotes.json';
$jsonData = file_get_contents($jsonFile);
$quotes = json_decode($jsonData, true);
// 随机选择一条名言
$randomQuote = $quotes[array_rand($quotes)];
// 返回JSON格式的名言
echo json_encode($randomQuote);
?>
这个脚本和上述JSON文件均可以考虑放置在CDN加速目录下。
效果测试
看看网站前台现在成什么样了。
功能一切正常,等博主有空把JSON文件填充完毕就可以上线了。