Reddit Bypass Enhancer

Bypass the "open in app prompt", unblur NSFW content and thumbnails, and remove the blur from community highlight cards on Reddit automatically.

2025-01-09 या दिनांकाला. सर्वात नवीन आवृत्ती पाहा.

// ==UserScript==
// @name         Reddit Bypass Enhancer
// @namespace    https://greasyfork.org/en/users/1030895-universedev
// @version      1.5
// @description  Bypass the "open in app prompt", unblur NSFW content and thumbnails, and remove the blur from community highlight cards on Reddit automatically.
// @author       UniverseDev
// @license      GPL-3.0-or-later
// @match        https://www.reddit.com/*
// @match        https://sh.reddit.com/*
// @grant        none
// @run-at       document-start
// @noframes
// ==/UserScript==
'use strict';

(function () {
    const NSFW_MODAL_TAG = 'shreddit-async-loader';
    const NSFW_MODAL_ATTR = 'bundlename';
    const BLURRED_TAG = 'shreddit-blurred-container';
    const PROMPT_SELECTOR = 'xpromo-nsfw-blocking-container';
    const THUMBNAIL_BLUR_SELECTOR = '.thumbnail-blur';
    const BLURRED_CLICKED_CLASS = 'rbe-unblurred';
    const COMMUNITY_HIGHLIGHT_CARD_SELECTOR = 'community-highlight-card';

    function removeNSFWBlock() {
        const nsfwModal = document.querySelector(`${NSFW_MODAL_TAG}[${NSFW_MODAL_ATTR}*="nsfw_blocking_modal"]`);
        if (nsfwModal) nsfwModal.remove();

        const prompt = document.querySelector(`${PROMPT_SELECTOR} > *`)?.shadowRoot?.querySelector('.prompt');
        if (prompt) prompt.remove();

        const blurredContainers = document.querySelectorAll(BLURRED_TAG);
        blurredContainers.forEach(container => {
            if (container.shadowRoot?.innerHTML && !container.classList.contains(BLURRED_CLICKED_CLASS)) {
                container.firstElementChild.click();
                container.classList.add(BLURRED_CLICKED_CLASS);
            }
        });

        const thumbnailBlurElements = document.querySelectorAll(THUMBNAIL_BLUR_SELECTOR);
        thumbnailBlurElements.forEach(el => {
            el.classList.remove('thumbnail-blur');
        });

        const cards = document.querySelectorAll(COMMUNITY_HIGHLIGHT_CARD_SELECTOR);
        cards.forEach(card => {
            card.removeAttribute('blurred');
        });
    }

    const observer = new MutationObserver(() => {
        removeNSFWBlock();
    });

    observer.observe(document, {
        childList: true,
        subtree: true,
        attributes: false,
    });

    removeNSFWBlock();

    setTimeout(removeNSFWBlock, 100);

    const shredditCheckInterval = setInterval(() => {
        if (!document.querySelector('shreddit-app')) {
            observer.disconnect();
            clearInterval(shredditCheckInterval);
        }
    }, 5000);
})();