Greasy Fork

Prime Video Sólo Contenido Gratuito [ESP]

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

当前为 2023-06-30 提交的版本,查看 最新版本

// ==UserScript==
// @name          Prime Video Sólo Contenido Gratuito [ESP]
// @namespace     http://tampermonkey.net/
// @version       0.1
// @description   Oculta las secciones de compra o alquiler en la portada de Amazon Prime Video España.
// @author        Jeau
// @license       MIT
// @match         https://www.primevideo.com/
// @match         https://www.primevideo.com/storefront/*
// @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
// ==/UserScript==

(function() {
    'use strict';

    var regularClass;
    var subscriptionClass;

    // Check the name of the regular Carousel Title Class
    $('span[data-automation-id="carousel-title"]').each(function() {
        let classes = $(this).attr('class');
        if (classes != "" && classes.split(' ').length == 1) {
            regularClass = $(this).attr('class');
            return false;
        }
    });

    // Look for the name of Subscription Carousel Class
    $('span[data-automation-id="carousel-title"]').each(function() {
        let classes = $(this).attr('class');
        if (classes != "" && classes.split(' ').length == 2 && classes.includes(regularClass)) {
            let classesArr = classes.split(' ');
            for (let i = 0; i <= classesArr.length; i++) {
                if (classesArr[i] != regularClass && !subscriptionClass) {
                    subscriptionClass = classesArr[i];
                }
            }
            return false;
        }
    });

    // Look for Subscription Carousels and hide each one of them
    if (subscriptionClass) {
        $('span[data-automation-id="carousel-title"].' + subscriptionClass).each(function() {
            let carousel = this.closest('section').closest('div[class]');
            $(carousel).parent().remove();
        });
    }

    // Dinamically check any new node added to the webpage
    function checkNewNode(n) {
        if ($(n).find('span[data-automation-id="carousel-title"].' + subscriptionClass).length) {
            $(n).find('span[data-automation-id="carousel-title"].' + subscriptionClass).each(function() {
                let carousel = this.closest('section').closest('div[class]');
                $(carousel).parent().remove();
            });
        }
    }

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

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

})();