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 条评论
登录 后参与评论

相关文章

来自专栏林德熙的博客

win10 uwp 萤火虫效果 安装 win2d创建界面后台的方法核心代码

本文在Nukepayload2指导下,使用他的思想用C#写出来。 本文告诉大家,如何使用 win2d 做出萤火虫效果。

14510
来自专栏Objective-C

Swift-MVVM 简单演练(三)

31230
来自专栏逆向技术

win32程序之子窗口编程

  在前边我们已经讲解了窗口的本质.以及如何注册窗口类跟创建窗口. 还讲了消息循环.

24320
来自专栏木宛城主

SharePoint 中时间轴 Timeline的实现

客户需要在OA中实现每日动态功能,能够记录每一位员工的每天的工作动态,我很快想到了时间轴,因为时间轴能很直观的现实员工每一刻的动态。就像Facebook的Ti...

24360
来自专栏拂晓风起

Canvas动画 位图缓存提高效率和对应的内存问题

21940
来自专栏Clive的技术分享

修改CentOS服务器时间为北京时间

92140
来自专栏c#开发者

datagrid资料+ by iCeSnaker - Program rhapsody

datagrid资料+ by iCeSnaker - Program rhapsody 关于datagrid的打印 http://www.chinaaspx.c...

37090
来自专栏前端知识分享

第159天:前端知识体系框架

Web Components:http://css-tricks.com/modular-future-web-components//

15030
来自专栏程序员互动联盟

【Windows编程】系列第六篇:创建Toolbar与Statusbar

上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微复杂一点的程序都会有工具栏和状态栏...

50630
来自专栏Golang语言社区

【Golang语言社区】GO语言启动exe文件并传递参数

大家好,我是社区主编彬哥,今天给大家带来的是关于go语言命令调用本地的exe,并传递参数启动,代码如下: package main import (...

40870

扫码关注云+社区

领取腾讯云代金券