bing每日风景图片设置为typecho背景图片的方法

由 Eeezhi 发布

由于bing一直在提供每日更新背景图片壁纸的json数据,

    http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1

请求该网址后会返回:

    {
    "images":[
        {
            "startdate":"20200721",
            "fullstartdate":"202007211600",
            "enddate":"20200722",
            "url":"/th?id=OHR.RedBlueWildebeest_ZH-CN1024893552_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp",
            "urlbase":"/th?id=OHR.RedBlueWildebeest_ZH-CN1024893552",
            "copyright":"日落时分正在迁徙的斑纹角马群,肯尼亚马赛马拉野生动物保护区 (© Denis-Huot/Minden Pictures)",
            "copyrightlink":"https://www.bing.com/search?q=%E9%A9%AC%E8%B5%9B%E9%A9%AC%E6%8B%89%E9%87%8E%E7%94%9F%E5%8A%A8%E7%89%A9%E4%BF%9D%E6%8A%A4%E5%8C%BA&form=hpcapt&mkt=zh-cn",
            "title":"",
            "quiz":"/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20200721_RedBlueWildebeest%22&FORM=HPQUIZ",
            "wp":true,
            "hsh":"70c1d9fb9acbcd479b4415ae45cdb114",
            "drk":1,
            "top":1,
            "bot":1,
            "hs":[
            ]
        }
     ],
    "tooltips":{
        "loading":"正在加载...",
        "previous":"上一个图像",
        "next":"下一个图像",
        "walle":"此图片不能下载用作壁纸。",
        "walls":"下载今日美图。仅限用作桌面壁纸。"
        }
    }

于是我们可以做一个php脚本来获取其中的url信息:

    <?php 
        $str=file_get_contents('http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1');   // 从bing获取数据 
        if(preg_match('/<url>([^<]+)<\/url>/isU', $str, $matches)) { // 正则匹配抓取图片url
            $imgurl = 'http://cn.bing.com'.$matches[1];
        } else {  // 如果由于某些原因,没抓取到图片地址       
            $imgurl='https://eeezhihebika.top/usr/themes/Bubble-master/images/no_wallpaper.jpg'; // 使用默认的图像(默认图像链接可修改为自己的)
        } 
    header("Location: {$imgurl}");    // 跳转至目标图像

将这个文件保存为.php后放在typecho文件夹中,然后在主题设置里面填入这个php文件的绝对地址,一个每日更新的背景页就做好啦

然后可以通过相同手法来提取每日壁纸的版权信息和标题
版权信息:

    <?php
        $url=file_get_contents('https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1');
        if (preg_match("/」(.+?)<\/copyright>/ies", $url, $matches)) {
           $imgcopyright=$matches[1];
        }
        if ($imgcopyright) {
           header("Content-type: text/html; charset=utf-8");
           echo $imgcopyright;
        } else {
           exit('error');
        }
   ?>

标题的话自行替换正则匹配式和相关内容即可


暂无评论

发表评论