无聊翻遍了博客的所有文章,发现有关网站搭建的文章有些陈旧了,但是还是有些能用。今天突然想炫耀下自己的API。我的API都被我的网站所采用,但不知道是否有其他人使用,比如我博客、主页的必应壁纸和描述,metingAPI,使用的都是自己搭建的。这些API有的网上能搜到源码,但有的则是我自己写的,以满足我的某些特殊需求。有想体验的请前往https://api.qi1.zone。


为什么要搭建自己的API呢,其一是他人的服务质量不一定能保证,比如请求速度,他人的API服务器可能与我的服务器不在同一区域,甚至在国外,请求时间就比较长,再就是可能不能访问。其二就是自己搭建API,并且全部使用自己的API,可以较好地保证网站的一体性,域名较统一。第三就是网络的API具有一定局限性,有的时候他人的API可能会获取调用者的网站域名、IP信息,从而被攻击,或者由于同时请求数较多,导致请求较为卡顿,从而导致自己的网站访问速度有影响。第四就是自己搭建的API可以高度定制,调用者也是开发者,可以根据自己的需求,实时改变API,并且调用下也没那么多约束,有的时候连文档,甚至返回格式都不必做严格的要求,只要满足自己使用即可。
下方分享一下自己的API以及源码。API大部分都是用PHP编写的,因此可以很方便地拷贝到自己的网站源码中。API编写不易,调用时请留个言,谢谢。本人只做符合自己需求的API,并非公益API,因此不接受定制,但API源码开源,各位可直接复制。
生成每日必应壁纸
我的主页、博客中请求的必应壁纸都来自于这个API:获取必应每日图片。
这段代码是一个简单的PHP脚本,用于获取必应每日壁纸。它通过访问必应每日壁纸的API获取壁纸的URL,然后将该壁纸作为JPEG格式的图像直接输出到浏览器。在输出之前,代码设置了CORS头以允许跨域访问。如果获取壁纸URL失败,则输出错误信息。
获取当日必应壁纸描述
我的博客首页中有一个轮播图,下方的标题就是当日的必应壁纸描述,每天零点随着必应壁纸更新,这段描述也会跟着更新。建议在调用时将这段文字内容缓存在本地,因为API每次都是直接访问必应壁纸官方的API,没有采取缓存的。文档地址:https://api.qi1.zone/doc/bing_desc
API源码:
正如上方所说,壁纸每次都是直接从云端获取数据,没有做缓存,因此建议请求API时做好缓存,以减少请求时长。
缓存代码:
在调用时使用下方的代码调用即可:
php 代码:<?php echo bing() ?>
检测文本中是否存在死链
这个API没有自动调用,因为实在太浪费时间了,且我的服务器Nginx防火墙设置了POST请求的最大字节数,因此请求时请对数据做分段处理。地址:https://api.qi1.zone/doc/test_dead_url
这里给出一个可用的调用示例,使用Python的requests库:
python 代码:import requests
# 示例文本
example_text = """
# 示例文本
这是一个包含不同类型链接的示例文本。
1. [Markdown链接](https://www.example.com)
2. [另一个Markdown链接](https://www.deadlink.com)
3. 这是一个[HTML链接](https://www.example.com)
4. 这是另一个[死链](https://www.deadlink2.com)
5. 这是一个普通的https链接: https://www.example.com
6. 这是一个死链: https://www.deadlink3.com
请使用API测试这个文本,并查看死链的输出结果。
"""
# 使用requests库发送POST请求
url = "https://api.qi1.zone/api/test_dead_url" # 替换成实际的API URL
response = requests.post(url, data={"text": example_text})
# 输出API响应
print(response.text)
返回结果:
txt 代码:所有可能的超链接:
https://www.example.com
https://www.deadlink.com
https://www.example.com
https://www.deadlink2.com
https://www.example.com)
https://www.deadlink.com)
https://www.example.com)
https://www.deadlink
https://www.example.com
https://www.deadlink
死链列表:
https://www.deadlink.com
https://www.deadlink2.com
https://www.example.com)
https://www.deadlink.com)
https://www.example.com)
https://www.deadlink
https://www.deadlink
由于API寻找超链接时使用的是正则表达式,包含普通的以HTTPS开头的字符串、Markdown形式和a标签形式,因此返回的可能有误。
源码:
各位可以根据自己的需求更改。
其他API
这里分享其他的个人API,源码都比较简单,可以直接复制,按需选择。
获取QQ头像
php 代码:<?php
if(isset($_REQUEST['qq'])) {
$qq = $_REQUEST['qq'];
$url = "https://q1.qlogo.cn/g?b=qq&nk={$qq}&s=640"; // QQ头像的API地址
header("Content-type: image/jpeg"); // 设置HTTP响应头,指定返回的是图片
readfile($url); // 直接输出图片内容
}
?>
生成随机字符串
细心的博友可能发现了,本站的文章URL都包含一个12位的随机字符串,这个随机字符串就是使用我自己的API随机生成的,每次请求后填入。
php 代码:<?php
// 生成指定长度的随机字符串
function generateRandomString($length) {
$characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}
// 获取请求参数
$length = isset($_GET['length']) ? intval($_GET['length']) : 12;
// 生成随机字符串
$randomString = generateRandomString($length);
// 返回JSON格式的结果
$response = array(
'random_string' => $randomString
);
header('Content-Type: application/json');
echo json_encode($response);
跳转到QQ名片
访问此URL后网页会请求打开QQ,并跳转到那个人的名片。
php 代码:<?php
header('Content-Type:application/json; charset=utf-8');
$qq = '';
$agent = strtolower($_SERVER['HTTP_USER_AGENT']);
//url 参数 ?qq=123456789
if ($_SERVER["REQUEST_METHOD"] == "GET") {
$qq = $_GET["qq"];
} elseif ($_SERVER["REQUEST_METHOD"] == "POST") {
$qq = $_POST["qq"];
}
// $qq = isset($_GET['qq']) ? $_GET['qq'] : "";
if(empty($qq)){
echo json_encode(array('code'=>201,'msg'=>'QQ不能为空'),480);
}elseif(!preg_match("/^[1-9][0-9]{4,10}$/",$qq)){
echo json_encode(array('code'=>202,'msg'=>'QQ格式不正确'),480);
}elseif(strpos($agent,'windows nt')){
$loca = "tencent://ContactInfo/?subcmd=ViewInfo&puin=0&uin={$qq}";
}elseif(strpos($agent,'iphone')){
$loca = "mqq://im/chat?chat_type=wpa&uin={$qq}&version=1&src_type=web";
}elseif(strpos($agent,'android')){
$loca = "mqq://card/show_pslcard?src_type=internal&version=1&uin={$qq}&card_type=person&source=sharecard";
}
if(empty($loca)==false){
header("Location:$loca");
exit;
}
?>
主页和内页加载好快啊,对于typecho优化实在摸不着头脑
没咋优化,就是给静态资源套了个CDN。
暂无点赞
暂无点赞
跳转到QQ名片在圈内还有一个名字,叫QQ强制聊天
主要在对方隐藏搜索的情况下,使用该方法查看对方的名片
哈哈我的API里有一个
暂无点赞
暂无点赞
功能不少哎~~
给个人使用足够了,毕竟不是公益的
暂无点赞
暂无点赞
好多实用的API!
哈哈都是给自己用的
暂无点赞
暂无点赞