CSDN净化

filter/format csdn css

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

// ==UserScript==
// @name         CSDN净化
// @namespace    http://tampermonkey.net/
// @version      0.3.0
// @description  filter/format csdn css
// @author       细粒丁
// @match        *://*.csdn.net/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// @license MIT
// ==/UserScript==

(function () {
    'use strict';

    const config = {
        blog_container_aside: true,    // 左边侧边栏
        left: {
            asideProfile: true,         // 用户信息简介(左边)
            asideSearchArticle: true,   // 搜索博主文章(左边)
            asideHotArticle: true,      // 热门文章(左边)
            asideCategory: true,        // 分类专栏(左边)
            asideNewComments: true,     // 最新评论(左边)
            asideNewNps: true,          // 推荐意愿(左边)
            asideArchive: true,         // 最新文章(左边)
        },
        rightAside: false,               // 右边侧边栏
        right: {
            groupfile: true,            // 目录(右边)
            programmer1Box: true,       // 广告(右边)
            "aside-box kind_person d-flex flex-column": true,   // 分类专栏(右边)
        },
        recommendDownloadFilter: true,  // 过滤末尾推荐文章中的资源下载
    }

    const list = {
        recommendNps: true,                 // 相关推荐调查(底部)
        "blog-footer-bottom": true,         // 底部声明(底部)
        "recommend-box": false,             // 文章末尾的推荐文章(底部)
        "sidetool-writeguide-box": true     // 创作话题
    }


    function format(key) {
        let id = "#" + key
        let cls = "." + key.replace(/\s/g, ".")
        return `${id},${cls}`
    }

    function del(obj) {
        let target = true
        for (const key in obj) {
            const element = obj[key];
            if (element) {
                let arr = document.querySelectorAll(format(key))
                for (let i = 0; i < arr.length; i++) {
                    const item = arr[i];
                    item.remove()
                }
            } else {
                target = false
            }
        }
        return target
    }

    del(list)

    if ((config.blog_container_aside && document.querySelector(".blog_container_aside").remove()) || del(config.left)) {
        let main = document.querySelector("main")
        main.style.width = "100%"
        main.style.float = "none"
    }

    if (config.rightAside || del(config.right)) {
        document.querySelector("#rightAside").remove()
    }

    if (config.recommendDownloadFilter & !list["recommend-box"]) {
        const linklist = document.querySelectorAll(".recommend-item-box")
        for (let i = 0; i < linklist.length; i++) {
            const element = linklist[i];
            const url = element.getAttribute("data-url")
            url && url.includes("download.csdn.net") && element.remove()
        }
    }


})();