Bing的每日更新的壁纸都很不错,其实微软有提供图片下载的接口供开发者使用。这里介绍PHP定时下载Bing壁纸的方法
接口地址:https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1 (format=js json格式,其他参数请自行尝试)
{
"images": Array[1][
{
"startdate": "20180606",
"fullstartdate": "201806060700",
"enddate": "20180607",
"url": "/az/hprichbg/rb/FlyinDrivein_EN-CN11097970692_1920x1080.jpg",
"urlbase": "/az/hprichbg/rb/FlyinDrivein_EN-CN11097970692",
"copyright": "Customers arriving at the Fly-In Drive-in Theater in Wall Township, New Jersey (© Martha Holmes/Time Life Pictures/Getty Images)",
"copyrightlink": "http://www.bing.com/search?q=first+drive-in+theater&form=hpcapt&filters=HpDate:%2220180606_0700%22",
"quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20180606_FlyinDrivein%22&FORM=HPQUIZ",
"wp": false,
"hsh": "3a6848eb28d50907667976c80e6014da",
"drk": 1,
"top": 1,
"bot": 1,
"hs": Array[0][
]
}
],
"tooltips": {
"loading": "Loading...",
"previous": "Previous image",
"next": "Next image",
"walle": "This image is not available to download as wallpaper.",
"walls": "Download this image. Use of this image is restricted to wallpaper only."
}
}
images下的url字段即为图片路径,拼上www.bing.com的前缀就是当日的图片地址了。然后就可以使用图片到各种用途。
这里demo为下载图片到本地,将以下代码保存为.php文件,添加crontab任务,即可定时下载。
<?php
/**
* Bing Images Auto Download
*
* Copyright 2017 http://yimis.com
* Create by: yimis <i@yimis.com>
* Date: 11/14/2017
* Time: 4:58 PM
*
* #Bing Images Auto Download
* 15 08 * * * php -f /data/crontab/bing_download.php
*
*
*/
header("Content-type: text/html; charset=utf-8");
date_default_timezone_set("Asia/Shanghai");
$down_path = "/data/bing_img/" . date("Y/");
$down_url_head = "http://www.bing.com";
$url = "https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1";
$json_arr = getJson($url);
$url_arr = explode("/", $json_arr['images'][0]['url']);
$down_url = $down_url_head . $json_arr['images'][0]['url'];
$pic_name = $url_arr[count($url_arr) - 1];
if (is_file($down_path . $pic_name)) {
echo json_encode(array('time' => date("Y-m-d H:i:s"), 'file' => $pic_name, 'status' => 'failure', 'msg' => 'already exist'));
exit;
}
//下载图片
$res = downloadPic($down_url, $down_path, $pic_name);
//写入信息
$info_text = $pic_name . PHP_EOL . "-----------------------" . PHP_EOL . "Time:" . date("Y-m-d H:i:s") . PHP_EOL . "Data:" . serialize($json_arr['images'][0]);
file_put_contents($down_path . "info.txt", $info_text . PHP_EOL . PHP_EOL, FILE_APPEND);
echo json_encode(array('time' => date("Y-m-d H:i:s"), 'file' => $pic_name, 'status' => 'succeed'));
/**
* 去获取 bing 数据
* @param $url
* @return mixed
*/
function getJson($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
return json_decode($output, true);
}
/**
* 下载图片
* @param $url
* @param $path
* @param $name
* @return string
*/
function downloadPic($url, $path, $name)
{
if (!is_dir($path)) {
mkdir($path, 0777, true);
}
$content = file_get_contents($url);
if (file_put_contents($path . $name, $content))
return $path . $name;
}
?>