Baiduing

替换百度搜索首页背景为微软必应每日壁纸

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да инсталирате разширение, като например Tampermonkey .

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name         Baiduing
// @namespace    Starry
// @version      2.0.1
// @description  替换百度搜索首页背景为微软必应每日壁纸
// @homepage     https://greasyfork.org/zh-CN/scripts/371549-baiduing
// @author       Starry
// @license      MIT License
// @grant        GM_xmlhttpRequest
// @connect      cn.bing.com
// @include      *://www.baidu.com/
// @include      *://www.baidu.com/home*
// @include      *://www.baidu.com/?tn=*
// @include      *://www.baidu.com/index.php*
// ==/UserScript==

//获取bing壁纸
GM_xmlhttpRequest({
    method: 'GET',
    url: "https://cn.bing.com/HPImageArchive.aspx?format=js&n=1&mkt=zh-CN",
    onload: function (result) {
        try {
            let jsonData = JSON.parse(result.responseText);
            let imgUrl = "https://cn.bing.com" + jsonData.images[0].url;
            let imgUrlUHD = imgUrl.replace("1920x1080", "UHD");
            setWallpaper(imgUrl);
            let copyrightLink = jsonData.images[0].copyrightlink;
            let baiduLink = "https://www.baidu.com/s?wd=" + copyrightLink.slice(30, copyrightLink.indexOf("&"));
            addBingCopyright("© " + jsonData.images[0].copyright, baiduLink);
            if (window.screen.width > 1920 && imgUrlValid(imgUrlUHD)) {
                setWallpaper(imgUrlUHD);
            }
        } catch (e) {
            console.log(e);
        }
    }
});

async function imgUrlValid(imgUrl) {
    try {
        return new Promise(function (resolve, reject) {
            let ImgObj = new Image(); //判断图片是否存在
            ImgObj.src = imgurl;
            ImgObj.onload = function (res) {
                resolve(res);
            };
            ImgObj.onerror = function (err) {
                reject(err);
            };
        });
    } catch (e) { }
}

function setWallpaper(imgUrl) {
    if (document.getElementsByClassName("s-skin-container s-isindex-wrap")[0]) {
        document.getElementsByClassName("s-skin-container s-isindex-wrap")[0].style.backgroundImage = "url(" + imgUrl + ")";
    }
    else { // 未登录状态
        let wallpaperDiv = document.createElement("div");
        wallpaperDiv.className = "s-skin-container s-isindex-wrap";
        wallpaperDiv.style.backgroundImage = "url(" + imgUrl + ")";
        wallpaperDiv.style.position = "fixed";
        wallpaperDiv.style.top = "0";
        wallpaperDiv.style.left = "0";
        wallpaperDiv.style.height = "100%";
        wallpaperDiv.style.width = "100%";
        wallpaperDiv.style.minWidth = "1000px";
        wallpaperDiv.style.zIndex = "-10";
        wallpaperDiv.style.backgroundPosition = "center";
        wallpaperDiv.style.backgroundRepeat = "no-repeat";
        wallpaperDiv.style.backgroundSize = "cover";
        wallpaperDiv.style.webkitBackgroundSize = "cover";
        wallpaperDiv.style.zoom = "1";
        wallpaperDiv.cssText = "-webkit-background-size:cover;zoom:1"
        document.getElementById("wrapper").appendChild(wallpaperDiv);
    }
}

// 右下角添加bing图片信息
function addBingCopyright(copyrightText, baiduLink) {
    let bingCopyright = document.createElement("a");
    bingCopyright.innerText = copyrightText;
    bingCopyright.href = baiduLink;
    bingCopyright.target = "_black"
    bingCopyright.className = "1h";
    bingCopyright.style.color = "rgba(255,255,255,0.9)";
    bingCopyright.style.marginRight = "20px";
    document.getElementById("s-bottom-layer-right").appendChild(bingCopyright);
}

// 百度热榜(未登录时)
if (document.getElementById("s-hotsearch-wrapper")) {
    document.getElementsByClassName("title-text c-font-medium c-color-t")[0].style.color = "rgb(255,255,255)";
    document.getElementsByClassName("title-text c-font-medium c-color-t")[0].style.textShadow = "1px 1px 2px #000000";
    let hotsearch = document.getElementsByClassName("title-content c-link c-font-medium c-line-clamp1");
    for (let i = 0; i < hotsearch.length; i++) {
        hotsearch[i].style.color = "rgb(255,255,255)";
        hotsearch[i].style.textShadow = "1px 1px 2px #000000";
    }
}

// 顶部banner
if (document.getElementById("s_top_wrap")) {
    document.getElementById("s_top_wrap").style.background = "rgba(0,0,0,0.3)";
    let topBannerText = document.getElementsByClassName("c-font-normal c-color-t");
    for (let i = 0; i < topBannerText.length; i++) {
        // 跳过 7 - 15 (更多弹出框)
        if (i == 7) {
            i = 15;
        }
        topBannerText[i].style.color = "rgba(255,255,255,0.9)";
    }
}

// 底部banner
if (document.getElementById("bottom_layer")) {
    document.getElementById("bottom_layer").style.background = "rgba(0,0,0,0.3)";
    let bottomBannerTextLeft = document.getElementsByClassName("c-color-gray2");
    for (let i = 0; i < bottomBannerTextLeft.length; i++) {
        bottomBannerTextLeft[i].style.color = "rgba(255,255,255,0.9)";
    }
    let bottomBannerTextRight = document.getElementsByClassName("lh");
    for (let i = 0; i < bottomBannerTextRight.length; i++) {
        if (i > 6) {
            bottomBannerTextRight[i].style.display = "none";
        }
        else {
            bottomBannerTextRight[i].style.color = "rgba(255,255,255,0.9)";
        }
    }
}