Steam_Spoiler_Scraper

Steam 隐藏内容刮刀

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

You will need to install an extension such as Tampermonkey to install this script.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name:zh-CN      Steam隐藏内容刮刀
// @name            Steam_Spoiler_Scraper
// @namespace       https://blog.chrxw.com
// @supportURL      https://blog.chrxw.com/scripts.html
// @contributionURL https://afdian.net/@chr233
// @version         1.3
// @description     Steam 隐藏内容刮刀
// @author          Chr_
// @match           https://steamcommunity.com/*
// @license         AGPL-3.0
// @icon            https://blog.chrxw.com/favicon.ico
// ==/UserScript==

// 初始化
(() => {
    "use strict";
    addPanel();
    addFunction();

    // 添加按钮
    function addPanel() {
        function genBtn(name, foo, tooltip, id) {
            let s = document.createElement("span");
            s.className = "general_btn tooltip";
            s.title = tooltip;
            s.textContent = name;
            s.addEventListener("click", foo);
            if (id) { s.id = id; }
            return s;
        }
        let btnReport = document.getElementById("ReportItemBtn");
        if (btnReport != null) {
            let btnDiv = btnReport.parentElement;
            let btnShow = genBtn("刮开", () => { scratchAll(true); }, "刮开所有隐藏", "btnShow");
            let btnHide = genBtn("恢复", () => { scratchAll(false); }, "恢复所有隐藏", "btnHide");
            btnDiv.appendChild(btnShow);
            btnDiv.appendChild(btnHide);
        }
    }
    // 为每个隐藏绑定函数
    function addFunction() {
        for (let ele of document.querySelectorAll(".bb_spoiler")) {
            ele.addEventListener("click", scratch);
        }
    }
    // 刮开单个隐藏
    function scratch(ele) {
        let s = ele.currentTarget;
        console.log(s.getAttribute("scratch"));
        if (s.getAttribute("scratch") != "on") {
            for (let e of s.querySelectorAll("*")) {
                e.style.cssText = "visibility:visible;color:#fff;";
            }
            s.setAttribute("scratch", "on");
        } else {
            for (let e of s.querySelectorAll("*")) {
                e.style.cssText = "";
            }
            s.removeAttribute("scratch");
        }
    }
    // 刮开所有隐藏
    function scratchAll(show = true) {
        for (let ele of document.querySelectorAll(".bb_spoiler")) {
            if ((ele.getAttribute("scratch") != "on") === show) {
                ele.click();
            }
        }
    }
})();