Раздел Новости

Убрать надоедливые блоки анонсов при просмотре Yotube

Как убрать эти анонсы, перекрываюшие текущее видео?

1. Установите блокировщик рекламы uBlock Origin в магазине расширений для вашего браузера. Это ссылка на расширение для Firefox.

2. После установки расширения щелкните по кнопке расширения для вызова окна uBlock Origin, щелкните в окне кнопку настройки.

3. В появившемся окне выберите вкладке «Мои фильтры» и введите 4 строки:

youtube.com##.ytp-ce-bottom-right-quad
youtube.com##.ytp-ce-bottom-left-quad
youtube.com##.ytp-ce-top-right-quad
youtube.com##.ytp-ce-top-left-quad

4. Нажмите кнопку «Применить изменения».

5. Откройте Youtube и просмотрите какой-нибудь ролик до конца, убедитесь, что больше не видно анонсов других роликов по углам текущего видео.

 

Скрипт Tampermonkey для блокировки рекламы на DZEN видео

По моему мнению DZEN Видео вполне рабочая замена Youtube, осталось её немного доработать ?.

Однако рекламные видео-вставки при просмотре это самое настоящее мучение для пользователя. Иногда их бывает до 6 штук подряд!

Этот скрипт не может блокировать видео рекламу, но позволяет её «пропустить».

// ==UserScript==
// @name         Закрыть рекламу на DZEN.RU и Yandex
// @namespace    http://tampermonkey.net/
// @version      0.9
// @description  Автоматическое закрытие рекламы на DZEN Видео
// @author       VVSite
// @match        https://dzen.ru/video/watch/*
// @match        https://dzen.ru/embed/*
// @match        https://dzen.ru/video
// @icon         https://www.google.com/s2/favicons?sz=64&domain=dzen.ru
// @homepageURL  https://github.com/VVSite/block-ads-dzen-video
// @downloadURL  https://github.com/VVSite/block-ads-dzen-video/block-ads-dzen.js
// @updateURL    https://github.com/VVSite/block-ads-dzen-video/block-ads-dzen.js
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    var elYplay = 'yaplayertag';
    var svgShd = 'svg[width="24"]';
    const txtMenu1 = 'Пожаловаться';
    const txtMenu2 = 'Мне это неприятно';
    const time = 20;

    var start = setInterval(closeCommercial, time*2);

    function closeCommercial()
    {
        var yp = document.querySelector(elYplay);
        if (yp)
        {
            var svgX = querySelectorAllShadows(svgShd, yp);
            if (svgX[0] !== undefined && svgX[0].parentElement !== undefined)
            {
                svgX[0].parentElement.parentElement.style.visibility = 'hidden';
                svgX[0].parentElement.click();
                clearInterval(start);
                start = null;

                setTimeout(function(){
                    var hideM = querySelectorAllShadows('div', yp, txtMenu1);
                    if (hideM)
                    {
                        var menu1 = hideM.parentElement.parentElement.parentElement;
                        menu1.parentElement.style.visibility = 'hidden';
                        menu1.click();
                    }
                }, time*2);
                //
                setTimeout(function(){
                    var hideM2 = querySelectorAllShadows('div', yp, txtMenu2);
                    // console.log(hideM2);
                    if (hideM2)
                    {
                        var menu2 = hideM2.parentElement.parentElement.parentElement;
                        menu2.parentElement.style.visibility = 'hidden';
                        menu2.click();
                        start = setInterval(closeCommercial, time*4);
                    }
                }, time*3);
            }
        }
    }

    // find shadow elements
    function querySelectorAllShadows(selector, el = document.body, text = null)
    {
        var res = null;
        const childShadows = Array.from(el.querySelectorAll('*')).map(el => el.shadowRoot).filter(Boolean);
        const childResults = childShadows.map(child => querySelectorAllShadows(selector, child));
        const result = Array.from(el.querySelectorAll(selector));
        res = result.concat(childResults).flat();
        //
        if (text)
        {
            var i = 0;
            res.forEach((e) => {
                if (RegExp(text).test(e.textContent))
                {
                    res = e;
                    return;
                }
                i++;
            });
        }
        return res;
    }
})();

 

Для использования скрипта:

1. Установите плагин Tampermonkey для Firefox.

2. Скопируйте содержимое кода скрипта вверху.

3. Щелкните на кнопке плагина, чтобы вызвать меню и выберите «Создать новый скрипт».

4. Удалите весь текст, который Tampermonkey автоматически добавляет в новый скрипт и вставьте из буфера скопированный в п.2 код.

5. Сохраните скрипт по «Файл — Сохранить».

6. Откройте любой ролик DZEN Видео, дождитесь рекламы. Убедитесь, что реклама промелькнет буквально за несколько секунд.

Скрипт Tampermonkey для повтора видео Youtube

Иногда хочется повторить проигрывание видео Youtube несколько раз. Однако, кнопки такой у него нет. Этот простой скрипт реализует такой функционал.

// ==UserScript==
// @name         Repeat on Youtube
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Repeat on Youtube
// @author       VVSite
// @match        https://www.youtube.com/*
// @icon         https://www.google.com/s2/favicons?domain=youtube.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    top.rep = false;

    let b_div = document.createElement('div');
    b_div.style.position = 'relative';
    let b_style = 'font-size: 30px; display: block; position: absolute; left: -55px; cursor: pointer; font-weight: bold; top: -8px; padding: 0 10px;border: 1px solid #cacaca; border-radius: 50%; padding-bottom: 5px;';
    let tmp = '<span id="vvs-rep" style="' + b_style + '">↻</span>';
    b_div.innerHTML = tmp;
    let sp = null;

    let video_player = document.querySelectorAll('#movie_player')[0];

    if (video_player)
    {
        let t_obr = setInterval( function(){

            let url = location.href;
            if (/watch\?v\=/.test(url))
            {
                //let zag = document.querySelectorAll('.ytd-video-primary-info-renderer')[0];
                let zag = document.querySelectorAll('.style-scope.ytd-watch-metadata')[0];

                zag.before(b_div);


                sp = b_div.querySelector('#vvs-rep');
                if(sp)
                {
                    sp.onmouseover = function(e)
                    {
                        this.setAttribute('style', 'background: orange; ' + b_style);
                    }
                    sp.onmouseout = function(e)
                    {
                        this.setAttribute('style', 'background: #fff;' + b_style);
                    }
                    sp.onclick = function(e)
                    {
                        if (!top.rep)
                        {
                            b_style += 'color: red; background: #eaeaea;';
                            this.setAttribute('style', b_style);
                            top.rep = true;
                        }
                        else
                        {
                            b_style = b_style.substr(0, b_style.length - 32);
                            this.setAttribute('style', b_style);
                            top.rep = false;
                        }
                    }

                    if (video_player.getCurrentTime() == video_player.getDuration() && top.rep)
                    {
                        video_player.playVideo();
                    }
                }

            }

        }, 1500);
    }
    else
    {
        //clearInterval(t_obr);
    }
})();

 

Протестировано в Firefox 96.0.2. Для использования скрипта:

1. Установите плагин Tampermonkey для Firefox.

2. Скопируйте содержимое кода скрипта вверху.

3. Щелкните на кнопке плагина, чтобы вызвать меню и выберите «Создать новый скрипт».

4. Удалите весь текст, который Tampermonkey автоматически добавляет в новый скрипт и вставьте из буфера скопированный в п.2 код.

5. Сохраните скрипт по «Файл — Сохранить».

6. Откройте любой ролик Youtube, вы должны увидеть появившуюся кнопку повтора слева от заголовка видео. Если ее нажать, она станет красной и после окончания воспроизведения ролик автоматически запустится вновь.

7. Повторное нажатие прекратит автоматическое воспроизведение.

Bash-скрипт для проверки срока действия сертификата Let’s Encrypt

Let’s Encrypt выдает бесплатные сертификаты, но на 90 дней. В cron задачу не добавишь, чтобы раз в 90 дней работала. Можно сделать раз в 3 месяца, но это не то. Т.к. всегда получается 1-2 дня, когда сертификат уже не действителен, а задача cron еще не выполнилась. Для такой ситуации и создал bash-скрипт для проверки срока действия сертификата, если сталось 2 дня, то он вызывается скрипт для обновления.

cd ~/private/
DATE_CERT=`openssl x509 -in certs/mysite.com/fullchain.pem -text -noout | grep -Po ': (.+)?GMT'`
SED=`expr "$DATE_CERT" : '^.*\:\s\(.*\).*GMT$'`

R=`date -d "$SED" '+%Y-%m-%d'`
#echo Cert valid date: $R

CHECK_DATE=$(date -d "+3 days")
LAST_DATE=`date -d "$CHECK_DATE" '+%Y-%m-%d'`
#echo 'Control date:   ' $LAST_DATE

if [[ "$R" < "$LAST_DATE" ]] ;
then
    sh update_cert.sh
fi

Путь к fullchain.pem — путь к вашей цепочке сертификатов Let’s Encrypt.

Дата в текстовом поле

Update: скрипт обновлен 30.05.2017

Простая проверка текстового поля на валидность даты с помощью чистого JavaScript. Основные фишки:

  • Формат даты — русский
  • Вводить можно только цифры
  • Проверена работа под Firefox 53, Chrome 60

Код выложил на JS Fiddle — https://jsfiddle.net/VVSite/e2nwtv0o/

Скрин