Reddit - Restore subscribers counter

restore subscribers counter on reddit

当前为 2025-09-27 提交的版本,查看 最新版本

// ==UserScript==
// @name         Reddit - Restore subscribers counter
// @namespace    https://greasyfork.org/users/821661
// @version      1.0.2
// @description  restore subscribers counter on reddit
// @author       hdyzen
// @match        https://www.reddit.com/*
// @icon         https://www.google.com/s2/favicons?domain=www.reddit.com/&sz=64
// @grant        GM.xmlHttpRequest
// @license      GPL-3.0-only
// ==/UserScript==

function setCountersDesktop() {
    const observer = new MutationObserver(() => {
        const node = document.querySelector("shreddit-subreddit-header:not([subscribers])");
        if (!node) return;

        const membersCount = document.querySelector("#subgrid-container div.xs\\:hidden > :nth-child(1) [number]")?.getAttribute("number");
        const onlineCount = document.querySelector("#subgrid-container div.xs\\:hidden > :nth-child(2) [number]")?.getAttribute("number");

        node.setAttribute("subscribers", membersCount);
        node.setAttribute("active", onlineCount);
        node.removeAttribute("activity-indicators-enabled");
    });

    observer.observe(document.body, { childList: true });
}

async function setCounterMobile() {
    const observer = new MutationObserver(async () => {
        const node = document.querySelector("#subgrid-container div.lowercase:not([processing])");
        if (!node) return;

        node.setAttribute("processing", "");

        node.outerHTML = await getCountersHTML();
    });

    observer.observe(document.body, { childList: true });
}

async function getCountersHTML() {
    const res = await GM.xmlHttpRequest({
        url: window.location.href,
        responseType: "document",
        headers: {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0",
        },
    });

    const doc = res.response;
    const counters = doc.querySelector("#subgrid-container div.xs\\:hidden");

    return counters.outerHTML;
}

const isMobile = GM_info.platform.mobile;

if (isMobile) {
    setCounterMobile();
} else {
    setCountersDesktop();
}