Раздел VVSite

Скрипт 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/

Скрин

3DNews block script

Дополнение к блокировке рекламы на 3DNews.ru. Этот скрипт использует Firefox-дополнение Greasemonkey. Как установить скрипт:

  • выделите текст в блоке и скопируйте в буфер
  • создайте новый скрипт в Greasemonkey и вставьте текст из буфера
  • сохраните скрипт и проверьте работу на 3DNews — верхний отступ в 100px и рекламное изображение в бэкграунде страницы должны исчезнуть
// ==UserScript==
// @author      VVSite
// @name        3DNews
// @namespace   3dnews.ru
// @description 3DNews block
// @version     1
// @grant       none
// @include https://3dnews.ru/*
// ==/UserScript==
var el = document.getElementById('global-wrapper');
setTimeout(function (){
  el.style.paddingTop = '0px';
  el.style.backgroundImage = 'none';
}, 1000 );

 

Overclickers.ru Anti-Banner

Продолжаем бороться с рекламой на overclockers.ru в Mozilla Firefox. Как и раньше используем Stylish. Пост обновляется.

@namespace url(http://www.w3.org/1999/xhtml);
 
@-moz-document regexp("https:\\/\\/.*?overclockers\\.ru/.*") {
 #topbanners, 
 #topbanners div[class^="citi_ban"] div, 
 .rastyazka_regard, 
 .rastyazka, 
 #mainplace>table>tbody>tr:first-child div[class^="decoblock-content"],
 /*div[id^='yandex_ad_'],*/
 div[id^="adContent"], 
 div[id^="google_image_div"], 
 div[id^="animation_container"], 
 iframe[id^="google_ads_frame"], 
 div[id^="yandex_rtb"], 
 div[id^="google_image_div"],
 div[class^="decoblock-content"] div.info-big ul li,
 div[id^='rv_swf_'],
 embed[id^='id-'],
 div.submenu object[type="application/x-shockwave-flash"],
 div.submenu a img,
 div[style="position: relative; height:400px; width:240px"],
 table.needblock,
 div#uhi table tbody tr td a img,
 ins.adsbygoogle,
 div[class*="citi_ban"],
 div[class*="top-an"],
 div.main-wrap:nth-of-type(4)>div.ui.grid>div.sixteen.wide.column.container-block,
 ul[class*="an-link-list"],
 div.ui.center.aligned.container,
 div.row.container-block:first-child,
 div.ui.grid.material-inline-an>div.sixteen.wide.column.topadvert-wrap,
 div.ui.grid.pip-right-inner,
 img[src*="banners"]
 {
 opacity: 0 !important;
 height: 1px !important;
 overflow: hidden !important;
 position: absolute !important;
 top: -1000px !important;
 }
}

Скриншот для отображения работы анти-баннера.

С рекламой

С рекламой

Без рекламы

Без рекламы