自上次加了 “新闻快讯” API数据之后,慢慢发现 “今日头条” API热榜数据杂乱无章,相比之下 “澎湃” 更符合我的口味。但是!澎湃热榜图片无法调用,具体什么原因没看,因为看了也没用...如果是跨域资源共享(CORS)问题,那就没办法解决了,因为需要在服务器端添加 CORS 响应头,允许访问图片资源才行,所以这一步肯定不行。无奈之下去掉了 data 数组中的 imgae_url 对象,改为指定路径。思来想去绝对路径总有一天会腻,况且还要手动换,这也太麻烦了。所以又有了新的想法,调用必应每日图片。
必应每日图片源代码
<?php
// 必应 API URL,用于获取每日图片的 JSON 数据
// format=js 表示返回 JSON 格式的数据,idx=0 表示获取今天的图片,n=1 表示获取 1 张图片
$bing_api_url = 'https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1';
// 使用 cURL 发送 HTTP GET 请求到必应 API
$ch = curl_init();
// 设置要请求的 URL
curl_setopt($ch, CURLOPT_URL, $bing_api_url);
// 设置请求成功后将结果以字符串形式返回,而不是直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 执行 cURL 请求,将结果存储在 $response 变量中
$response = curl_exec($ch);
// 关闭 cURL 资源
curl_close($ch);
// 确保 HTTP 请求没有返回错误
if ($response!== false) {
// 解析 JSON 格式的响应数据,将其转换为关联数组形式
$data = json_decode($response, true);
// 如果数据中含有图片 URL,则进行处理
if (!empty($data['images'][0]['url'])) {
// 生成完整的图片 URL,必应 API 返回的图片 URL 是相对路径,这里加上必应的域名使其成为完整的 URL
$img_url = 'https://cn.bing.com'. $data['images'][0]['url'];
// 设置正确的 HTTP 响应头,告诉浏览器这是一个 JPEG 格式的图片
header('Content-Type: image/jpeg');
// 读取并输出指定的图片文件内容给客户端(浏览器)
readfile($img_url);
} else {
// 如果没有获取到图片 URL,则输出默认图片
header('Content-Type: image/jpeg');
// 读取并输出默认图片文件内容给客户端(浏览器)
readfile('default_image.jpg');
}
} else {
// 如果 HTTP 请求发生错误,则输出错误信息并提供更详细的调试信息
echo "无法获取必应每日图片,请检查你的网络连接或 API 的可用性.";
}
?>
使用方法:新建PHP文件复制上面源代码保存即可 演示:必应每日图片
接入必应效果:结果还是不理想,压根就不是那么回事(一开始就是个错误😂)
让我说点什么好呢,哎~ 解决了又好像没解决,每条热榜都是必应每日图片,整个 驴唇不对马嘴,热榜内容、配图毫无关联,我在干什么???好家伙,这一问把自己问明白了:只是不可以调用,仅此而已!可以访问的呀对不对,那是不是可以代理解决呢,嗯~好办法,走着~~代理服务器作为数据中转,从而走代理线路。
迎刃而解 Perfect!
最后:添加 Shell 脚本,定期清理数据,避免占用服务器资源:
rm -rf path/to/local/ppimage/*
学术教材 本站采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!
评论 12