前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >维护一个输入自己的一言(Hitokoto)Api

维护一个输入自己的一言(Hitokoto)Api

原创
作者头像
MoLeft
发布2022-06-17 08:38:15
3670
发布2022-06-17 08:38:15
举报

基本思路

我的思路就是:采集别人,壮大自己!

是的,没有看错,自己采集得采集到猴年马月,直接采集别人来的痛快。

采集部分

首先,我们需要采集别人的,并保存到本地,所以说我这里写了一个通用采集的模板,代码如下:

<?php
$api[] = 'http://api.moleft.cn/yiyan/api.php';
$api[] = 'https://api.moleft.cn/yiyan/api.php';
$contents = file_get_contents($api[mt_rand(0,count($api)-1)]);
if(!empty($contents) && !preg_match('/'.$contents.'/',file_get_contents('./api.txt'))){
    file_put_contents('./api.txt',$contents."\n",FILE_APPEND);
    echo 'Success -> '.$contents;
}else{
    echo 'Failed -> 获取数据失败';   
}
?>

如果想要增加api的话,可以照着这个模板写,也就是:

$api[] = '要采集的api';

这样的话,我们就可以采集别人的,同时我加了重复的判断,所以说不用担心采集到的会有重复,同时多api随机采集也可以最大程度避免采集同一api导致防火墙拦截

接口部分

接口部分没什么特殊的,就是很“模板”的一个一言接口模板

<?php
//获取句子文件的绝对路径
$path = dirname(__FILE__);
$file = file($path."/api.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 api(){document.write('" . $content ."');}";
}else if($_GET['encode'] === 'json'){
    $content = array('text'=>$content);
    echo json_encode($content, JSON_UNESCAPED_UNICODE);
}else {
    echo $content;
}
?>

大功告成

这样的话我们就维护了一个属于自己的一言api,如果发现哪个接口死了,还可以安装那个格式继续添加,采集下来的api都保存到本地,我建议采集部分和接口部分保存到两个文件中,然后给那个采集部分挂个计划任务,这样就可以24小时不停的采集了。

哈哈哈哈,采集别人,壮大自己,估计采集个一年半载你就是全网最靓的仔!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本思路
  • 采集部分
  • 接口部分
  • 大功告成
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档