PHP获取Bing每日壁纸

前言

自建一个 API 获取随机图片可以用于博客 cover,网上找到一篇文章,本文仅记录,所有代码都来自 这篇文章

部署

新建一个名为 bing.php 的文件,写入下面代码:

PHP
<?php
// 判断是否随机调用
$gettimebase = isset($_GET['day']) ? $_GET['day'] : '';
if (isset($_GET['rand']) && $_GET['rand'] === 'false') {
    $gettime = empty($gettimebase) ? 0 : $gettimebase;
} else {
    // 若不为随机调用则判断是否指定日期
    $gettime = empty($gettimebase) ? rand(-1, 7) : $gettimebase;
}

// 获取 Bing Json 信息
$mkt = isset($_GET['cn']) && $_GET['cn'] === 'true' ? 'zh-CN' : 'en-US';
$json_string = file_get_contents("https://www.bing.com/HPImageArchive.aspx?format=js&idx=$gettime&n=1&mkt=$mkt");

// 转换为 PHP 数组
$data = json_decode($json_string);

// 提取基础 URL
$imgurlbase = "https://www4.bing.com{$data->images[0]->urlbase}";

// 判断是否指定图片大小
$imgsizebase = isset($_GET['size']) ? $_GET['size'] : '';
$imgsize = empty($imgsizebase) ? "1920x1080" : $imgsizebase;

// 建立完整 URL
$imgurl = "{$imgurlbase}_{$imgsize}.jpg";

// 获取其他信息
$imgtime = $data->images[0]->startdate;
$imgtitle = $data->images[0]->title;
$imglink = $data->images[0]->copyrightlink;

// 判断是否只获取图片信息
if (isset($_GET['info']) && $_GET['info'] === 'true') {
    echo "{title:$imgtitle,url:$imgurl,link:$imglink,time:$imgtime}";
} else {
    // 若不是则跳转 URL
    ob_start();
    header("Location: $imgurl");
    ob_end_flush();
}
?>
点击展开查看更多

新建一个网站,将 bing.php放入网站目录下,访问 yourdomain.com/bing.php 即可,可选的参数如下:

参数代码参数含义可用参数
rand是否随机显示最近 8 天内的图片true or false
day显示指定的最近图片-1, 0, 1, 2, 3, 4, 5, 6 ,7 0 为今天,-1 为明天
size指定获取图片大小UHD
1920x1080
1366x768
1280x768
1024x768
800x600
800x480
768x1280
720x1280
640x480
480x800
400x240
320x240
240x320
注:中间的 “x” 为英文小写字母 “x”
info获取图片基础信息(JSON 格式)true or false
cn是否获取国内版的图片true or false

以上所有参数均非必要,默认为:rand=true, day=0, size=1920x1080, info=false, cn=false

例如,随机获取大小 320x240 的图片则可以引用:

BASH
yourdomain.com/bing.php?rand=true&size=320x240
点击展开查看更多

部署到 Vercel

bing.php 存入 api 文件夹,并新建 vercel.json,写入如下:

JSON
{
  "functions": {
    "api/*.php": {
      "runtime": "vercel-php@0.6.0"
    }
  },
  "routes": [
  	{ "src": "/bing/api(.*)","dest": "api/bing.php", "headers": { "Access-Control-Allow-Origin": "*" }}
  ]
}
点击展开查看更多

整体目录如下:

BASH
- 项目文件夹
  - api
    - bing.php
  - vercel.json
  - index.html //可选
点击展开查看更多

访问 random.vercel.app/bing/api 即可,部署过程中如果出现错误,将 Nodejs 版本更改为 18.x 重新部署即可成功。

参考

版权声明

作者: Tom Almighty

链接: https://blog.grew.cc/posts/php-bing-api/

许可证: CC BY-NC-SA 4.0

本文采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

评论

开始搜索

输入关键词搜索文章内容

↑↓
ESC
⌘K 快捷键