壁纸 bing

如何每天获取 bing 超高清版壁纸

Posted on 2022-04-24,2 min read
封面图

必应的每日壁纸的质量非常高,那么如何将必应的每日壁纸保存下来,作为桌面壁纸轮播呢

主要参考:https://www.cnblogs.com/half-bug/p/12652562.html

修改点:

  • 保存图片到当前目录
  • 保存相关信息到csv,以便后续可能展示
  • 增加了个写日志,方便查看

使用 forever 后台即可实现每天获取并保存下来,forever start .\bing-daily.js

下面是完整的代码以供参考

// 引包
const https = require('https')
const request = require('request')
const fs = require('fs')
var sd = require('silly-datetime');

const rootUrl = 'https://cn.bing.com'
const xhrUrl = 'https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&nc=1586183781119&pid=hp&uhd=1&uhdwidth=2880&uhdheight=1620'       // xhr 请求地址
const jpgUrl = '_UHD.jpg'    // 后缀
const jsonFile = './bing-daily.csv'
const logFile = './debug.log'

// 获取当天高清图
const getToday = ()=>{
    // 发送请求
    https.get(xhrUrl, res => {
        let rawData = '';
        res.on('data', (chunk) => {
            rawData += chunk;
        })
    
        res.on('end', () => {
            const parsedData = JSON.parse(rawData);
            var img = parsedData.images[0]
            var {enddate, urlbase, title, copyright} = img;
            var fullUrl = rootUrl + urlbase + jpgUrl
			var line = enddate + ", " + fullUrl + ", " + title + ", " + copyright + "\n"
            var filename = './' + enddate + '.jpg'

			console.log(line)
			
            request(fullUrl).pipe(fs.createWriteStream(filename))
            fs.appendFile(jsonFile, line, (err) => {})

            var logLine = sd.format(Date(), 'YYYY-MM-DD HH:mm:ss') + '  ' + line
            fs.appendFile(logFile, logLine, (err) => {})
        })
    })
}

// 每天执行一遍
//getToday();
setInterval(getToday, 24*60*60*1000)


下一篇: 内存泄露检测工具VLD的使用→

loading...