Greasy Fork

Prime Video Sólo Contenido Prime [ESP]

Oculta las secciones de compra o alquiler en la portada de Amazon Prime Video.

当前为 2024-11-30 提交的版本,查看 最新版本

// ==UserScript==
// @name             Prime Video Sólo Contenido Prime [ESP]
// @name:en          Prime Video Show Prime Content Only [ESP]
// @namespace        http://tampermonkey.net/
// @version          0.3.3
// @description      Oculta las secciones de compra o alquiler en la portada de Amazon Prime Video.
// @description:en   Hide the purchase or rental sections on the Amazon Prime Video homepage. 
// @author           Jeau
// @license          MIT
// @match            https://*.primevideo.com/*
// @icon             https://m.media-amazon.com/images/G/01/digital/video/DVUI/favicons/favicon-32x32.png
// @require          https://code.jquery.com/jquery-latest.min.js
// @grant            none
// @run-at           document-end
// ==/UserScript==

(function() {
    'use strict';

    const CONTINUE_WATCHING_ES = 'SEGUIR VIENDO';

    // Check node added to the webpage
    function checkNodes(n) {
        // Script won't work on 'store' and personal account pages
        if (location.href.includes('/settings')) return;
        if (location.href.includes('/mystuff')) return;
        if (location.href.includes('/addons')) return;
        if (location.href.includes('/subscription')) return;
        if (location.href.includes('/livetv')) return;
        if (location.href.includes('/collection/homepremiere')) return;

        // Hide subscription carousels
        if ($(n).find('section[data-testid*="carousel"]').length) {
            $(n).find('section[data-testid*="carousel"]').each(function() {
                try {
                    if ($(this).find('div[data-testid="card-overlay"]').find('svg').length) {
                        let carousel = this;

                        // Avoid hiding "Keep watching" carousel
                        if ($(carousel).find('span[data-testid="carousel-title"]').length) {
                            let carouselTitle = $(carousel).find('span[data-testid="carousel-title"]')[0].firstElementChild.innerText.toUpperCase();
                            // Case: "Continue Watching" carousel only
                            if (carouselTitle.includes(CONTINUE_WATCHING_ES)) {
                                $(carousel).find('article[data-testid="card"]').each(function() {
                                    // Hide the card with purchase requirements only
                                    if ($(this).find('div[data-testid="card-overlay"]').find('svg').length) {
                                        $(this).css('display', 'none');
                                    }
                                });
                            } else {
                                $(carousel).parent().css('display', 'none');
                                return true;
                            }
                        } else {
                            $(carousel).parent().css('display', 'none');
                            return true;
                        }
                    }
                } catch(e) {
                    console.log('\n\n\n');
                    console.log('Error userscript "Mostrar Sólo Prime" (MutationObserver) !!!!');
                    console.log('Estructura no reconocida en el siguiente elemento:');
                    console.log(n);
                    console.log('\n\n\n');
                }
            });
        }
    }

    // Check carousels on window load
    checkNodes(document.body);

    // Declaration of Mutation observer
    let observer = new MutationObserver((mutations) => {
        for (const { addedNodes } of mutations) {
            for (const n of addedNodes) {
                if (n.tagName) {
                    checkNodes(n);
                }
            }
        }
    });

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

})();