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; } ?>