专栏首页Think & DifferentPHP/Node.js获取Bing每日壁纸
原创

PHP/Node.js获取Bing每日壁纸

Github:https://github.com/mcc108/bing-wallpaper


PHP跳转图片地址(推荐)

效果:http://congm.in/bing.php

bing.php

<?php
    $str = file_get_contents('https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1');
    $data = json_decode($str);
    $imghost = 'https://cn.bing.com';
    $imgpath = $data -> {'images'}[0] -> {'url'};
    if ($imgpath) {
        $imgurl = $imghost . $imgpath;
        header('Location:' . $imgurl);
        exit();
    } else {
        exit('error');
    }
?>

PHP代理图片

bing_agent.php

<?php
    $str = file_get_contents('https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1');
    $data = json_decode($str);
    $imghost = 'https://cn.bing.com';
    $imgpath = $data -> {'images'}[0] -> {'url'};
    if ($imgpath) {
      $imgurl = $imghost . $imgpath;
        $img = imagecreatefromjpeg($imgurl);
        header('Expires: ' . gmdate('D, d M Y H:i:s', strtotime(date('Y-m-d', strtotime('+1 day')))) . ' GMT');
        header('Cache-Control: public, max-age=3600');
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s', strtotime(date('Y-m-d'))) . ' GMT');
        header('Content-Type: image/jpeg');
        imageinterlace($img, 1);
        imagejpeg($img);
        imagedestroy($img);
    } else {
        exit('error');
    }
?>

Node.js代理图片

bing_agent.js

const http = require('http');
http.createServer((req, response) => {
    const today = new Date();
    today.setHours(0);
    today.setMinutes(0);
    today.setSeconds(0);
    today.setMilliseconds(0);
    const tomorrow = new Date();
    tomorrow.setTime(today.getTime() + (24 * 3600 * 1000));
    response.writeHead(200, {
        'Expires': tomorrow.toUTCString(),
        'Cache-Control': 'public, max-age=3600',
        'Last-Modified': today.toUTCString(),
        'Content-Type': 'image/jpeg'
    });
    http.get('https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1', (bing_res) => {
        let bing_body = [], bing_data = {};
        bing_res.on('data', (chunk) => {
            bing_body.push(chunk);
        });
        bing_res.on('end', () => {
            bing_body = Buffer.concat(bing_body);
            bing_data = JSON.parse(bing_body.toString());
            http.get(`https://www.bing.com${bing_data.images[0].url}`, (img_res) => {
                let img_body = [];
                img_res.on('data', (chunk) => {
                    img_body.push(chunk);
                });
                img_res.on('end', () => {
                    img_body = Buffer.concat(img_body);
                    response.write(img_body, 'binary');
                    response.end();
                });
            });
        });
    });
}).listen(8129);
$ node bing.js

利用NodeJS/PHP就可以获取每日更新的Bing壁纸来作网页背景啦:

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Let's Encrypt免费泛域名SSL证书申请及自动续签

    Let's Encrypt: https://letsencrypt.org , 是一个免费的、自动化的、开放的证书颁发机构。截至2018年9月,它的全球SS...

    Cong Min
  • 给一台腾讯云服务器配上多个免费外网弹性IP

    https://cloud.tencent.com/document/product/213/15379#.E7.BD.91.E5.8D.A1.E7.9B.B8...

    Cong Min
  • 获取Bing图片作为WordPress等网站首页背景图

    必应搜索的图片是什么这里就不说了,昨天渣渣龙在群里艾特要我把Bing的每日一图作为网站背景图

    沈唁
  • 基于智慧灯杆的城市内涝监测系统

    近年来,由强降雨引发的道路低洼处、下穿式立交桥和隧道产生大量积水的现象时有发生,给人们的出行带来很大不便,严重时甚至会造成人民生命、财产的重大损失。

    用户7348788
  • 路由控制

    版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.ne...

    zy010101
  • Linux电源管理-Runtime PM

    Runtime PM (Runtime Power Management)翻译过来就是运行时电源管理。主要的作用是: 每个设备处理好自己的电源管理,...

    DragonKingZhu
  • 爱奇艺支持AV1、VLC发布新版本、TikTok下载达20亿次|Decode the Week

    B站“献给新一代的演讲”——《后浪》——请来了何冰老师,上了央视,一天之后,自媒体人朱一旦在B站发布了恶(真)搞(话)版《非浪》,在两版演讲的评论中,B站年轻用...

    LiveVideoStack
  • 【000期】Java最全面试题库思维导图

    大家好,我是Java最全面试题库的小编,提裤姐,今天我想在这里尝试着坚持做一件事,就是在一百个工作日里不间断地更新至少一百篇Java方面的面试题,希望通过不断输...

    java进阶架构师
  • 小程序如何支持使用 async/await (构建npm版)

    小程序本身是不支持async/await语法的,但有些应用场景,我们使用async/await会使得代码更简洁,也更易于维护,用过都知道是有多爽的。既然小程序不...

    WahFung
  • 如何使用 Debian backports 更新源

    Backport的含义是”向后移植”,就是将软件新版本的某些功能移植到旧版本上来,这就称为backport。

    Debian社区

扫码关注云+社区

领取腾讯云代金券