// ==UserScript==
// @name Download Bing Background Image - bing.com
// @name:zh-CN 必应首页背景图片下载
// @description Add download button to Bing homepage.
// @description:zh-CN 在必应首页右下角添加一个背景图片下载按钮
// @namespace Violentmonkey Scripts
// @match https://*.bing.com/
// @grant none
// @version 0.9
// @author Alvin
// @license GNU GPLv3
// @run-at document-idle
// @downloadURL https://update.greasyfork.icu/scripts/420171/Download%20Bing%20Background%20Image%20-%20bingcom.user.js
// @updateURL https://update.greasyfork.icu/scripts/420171/Download%20Bing%20Background%20Image%20-%20bingcom.meta.js
// ==/UserScript==
function fileDownload(url, filename) {
getBlob(url, function (blob) {
saveAs(blob, filename)
})
}
function getBlob(url, cb) {
var xhr = new XMLHttpRequest()
xhr.open('GET', url, true)
xhr.responseType = 'blob'
xhr.onload = function () {
if (xhr.status === 200) {
cb(xhr.response)
}
}
xhr.send()
}
function saveAs(blob, filename) {
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, filename)
} else {
var link = document.createElement('a')
var body = document.querySelector('body')
link.href = window.URL.createObjectURL(blob)
link.download = filename
// fix Firefox
link.style.display = 'none'
body.appendChild(link)
link.click()
body.removeChild(link)
window.URL.revokeObjectURL(link.href)
}
}
var parent = document.getElementById('sh_rdiv')
if (parent) {
parent.innerHTML += `
`
var btn = document.getElementById('downBtn')
btn.addEventListener(
'click',
function () {
var title =
document.getElementById('sh_cp').title ||
document.getElementById('musCardImageTitle').innerHTML +
' ' +
document.getElementById('musCardCopyright').innerHTML
var bg = document.getElementById('bgDiv').style.backgroundImage
var imgUrl = bg.slice(4, -1).replace(/"/g, '')
var fileName = title + '.jpg'
fileDownload(imgUrl, fileName)
},
false
)
} else {
var styleElem = document.head.appendChild(document.createElement('style'))
styleElem.innerHTML =
'#downBtn::after {display: none;} .footer {width: 96% !important; padding: 0 2% !important;}'
setTimeout(function () {
var parentEl = document.getElementsByClassName('headline')[0]
var parent = document.createElement('div')
var el = parentEl.appendChild(parent)
el.innerHTML = `
`
var btn = document.getElementById('downBtn')
btn.addEventListener(
'click',
function () {
var card = document.getElementsByClassName('musCardCont')[0]
var title = card.getElementsByClassName('title')[0].innerText
var copyright = card.getElementsByClassName('copyright')[0].innerText
var bg = (
document.getElementsByClassName('img_uhd')[0] ||
document.getElementsByClassName('img_cont')[0]
).style.backgroundImage
var imgUrl = bg.slice(4, -1).replace(/"/g, '')
var fileName = title + ' ' + copyright + '.jpg'
fileDownload(imgUrl, fileName)
},
false
)
}, 1000)
}