Greasy Fork is available in English.

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.

// ==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);
})();