Kino HDrezka - Advertisement Hide

Удаляет рекламу с разных ресурсов. Скрипт находится в разработке

当前为 2019-03-18 提交的版本,查看 最新版本

// ==UserScript==
// @name           Kino HDrezka - Advertisement Hide
// @namespace      scriptomatika
// @author         mouse-karaganda
// @description    Удаляет рекламу с разных ресурсов. Скрипт находится в разработке
// @include        http://hdrezka.ag/*
// @include        http://mastarti.com/video/*
// @include        http://mastarti.com/serial/*
// @require        https://greasyfork.org/scripts/379902-include-tools/code/Include%20Tools.js
// @version        1.11
// @grant          none
// ==/UserScript==

var paramWindow=(function(){var result;try{result=unsafeWindow}catch(e){result=window}return result})();

(function(unsafeWindow) {
    var console = unsafeWindow.console;
    var $ = unsafeWindow.jQuery;
    var $$ = unsafeWindow.__krokodil;

    $$.renderStyle(
        '.flowplayer .fp-message, .flowplayer .fp-ui { z-index: 10; }',
        '.shadow-adverts { position: absolute; left: 0; right: 0; top: 0; bottom: 0; z-index: 9; background: url(http://static.scriptomatika.ru/img/fon16.png)'
    );

    var deleteTimer, deleteStep = 0;

    /**
     * Удаляет рекламу от внешних сервисов
     */
    var deleteExternalAdverts = function() {
        if (++deleteStep > 20) {
            clearInterval(deleteTimer);
            deleteStep = 0;
            return;
        }
        var path = ('a[href^="//recreativ."], a[href*="adbetnet.com/"], iframe[href*="adbetnet.com/"]');
        $$.getAll(path).forEach(function(elem) {
            var node = elem;
            while (!/^\w+$/.test(node.id)) {
                node = node.parentNode;
            }
            //console.log('node [%o] = %o', node.id, node);
            $$.del(node);
        });
    };

    var muteTimer, muteStep = 0;

    var classHidden = { name: 'scriptomatika-hidden' };
    classHidden.pseudo = (`:not(.${classHidden.name})`);

    /**
     * Удаляет звук со внутренней рекламы
     */
    var muteInternalAdverts = function() {
        if (++muteStep > 1000) {
            clearInterval(muteTimer);
            muteStep = 0;
            return;
        }
        var button;
        if (button = $$.get(`#player .adv_clickable${classHidden.pseudo}`)) {
            $$.hideFixed(button);
            button.classList.add(classHidden.name);

            if (button = $$.get(`#player video`)) {
                if (!/https?:\/\/mastarti\.com/i.test(button.src)) {
                    var shadow = $$.renderElement({
                        cls: 'shadow-adverts',
                        renderTo: button.parentNode
                    });
                }
            }

            if (false) {
                setTimeout(function() {
                    console.log('player', unsafeWindow.player);
                    console.log('settings', unsafeWindow.player.settings);
                    console.log('vast', unsafeWindow.player.vast);
                }, 2000);
            }
        }
        if (button = $$.get(`#player .adv_volume.volume_on${classHidden.pseudo}`)) {
            $$.fireEvent(button, 'click');
            button.classList.add(classHidden.name);
        }
        if (button = $$.get('#player .adv_close')) {
            $$.show(button);
            $$.fireEvent(button, 'click');
        }
    };

    /**
     * Удаление звука работает после нажатия на кнопку
     */
    $$.missingElement('#play_button', function(exists) {
        if (!exists) return;
        $$.on(this, 'click', function() {
            muteTimer = setInterval(muteInternalAdverts, 100);
        });
    });

    deleteTimer = setInterval(deleteExternalAdverts, 100);
    console.log('Kino HDrezka - Advertisement Hide');
})(paramWindow);