Полезная информация

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.

№112-09-2019 14:25:56

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 320
UA: Firefox 60.0

AutoplayDestroyer :P

Всё. Ничего не прошу. забейте.
Вродеб, докурил скриптег. Переправил, работает и рубит усё.
Способ поиска видео на странице может и дураццкийц, но другого, рабочего, я не нашел. Чтоб гарантированно не пропускало видео с отложенной загрузкой, в фреймах и проч. дичЪёбаная.

AutoplayDestroyer v2.0

Выделить код

Код:


// ==UserScript==
// @author                   mokujin
// @namespace             xz.boom
// @name                     AutoplayDestroyer v 2.0
// @description             AutoplayDestroyer HTML5 
// @include                   http*
// @exclude                  http*youtube.com/*
// @exclude                  http*mastarti.com/*
// @exclude                  http*moonwalk.com/*
// @version                   2.0
// @grant                     none
// @run-at                    document-start
// ==/UserScript==

document.addEventListener("readystatechange", getVideos, true);
    const brutStop = true; // true | false как обычно. действие - обрубает загрузку в фоне. Если не подменять(false) то видео бут остановленно, 
                                        //но фоновая загрузка(буферизация) будет идти. т.о. и сеть и диск и проч будут задействованы.
                                        // true по-умолчанию. нафиг буферизацию.
    let arVideos, attempts = 0, mRegExp = new RegExp(/(?:blob|mediasource):/gi);

function getVideos() {
  switch (document.readyState) {
     case "complete":
        arVideos = document.querySelectorAll("video");
//            console.log("заходов getVideos: " + attempts + " Массив с видео= " + arVideos.length);
       if ( (arVideos.length < 1 || arVideos[0].networkState > 2 ) && attempts < 6) { // здесь кол-во попыток поиска можно больше-мешьше сделать attempts=
               attempts +=1; setTimeout( getVideos, 300 );
                 break; return; 
             } else { videoStop(); break; return; };
           break;
         };
  };


function videoStop() {
    let origUrl, fakeUrl = "https://ringtonina.ru/files_site_01/005/standartnyj_rington_na_sms_soobshhenie_nokia_message.mp3";
  Array.forEach(arVideos, function(video) {
          origUrl = video.currentSrc;
    if( !origUrl || mRegExp.test(origUrl) ) return;
           video.pause();
           video.oncanplay = ()=> video.pause();
        if(brutStop) {
               video.setAttribute("src", fakeUrl);
               video.setAttribute("orig_src", origUrl);
               video.setAttribute("video_processed", true);
               setTimeout(retOrigVideoAddress, 1000);
            } else { setTimeout(createLink, 1000); }
       });
 };


function retOrigVideoAddress() {
     Array.forEach(arVideos, function(revid) {
         if ( revid.getAttribute("video_processed") ) {
                revid.setAttribute("src", revid.getAttribute("orig_src"));
                revid.removeAttribute("video_processed");
                revid.setAttribute("preload", "metadata");
                revid.pause();
//                console.log( "Вернул src url: " + revid.getAttribute("src") );
             } else { revid.pause(); }
           });
         createLink();
  };


function createLink() {
     Array.forEach(arVideos, function(vid) {
       let urlVideo = ( vid.currentSrc || vid.getAttribute("src") );
//          console.log( "createLink func  " + urlVideo );
     if ( !urlVideo || urlVideo == "null" ) return;
          let div = document.createElement('DIV');
           div.id = "videoAddrLink";
           div.title = "Video Adress:\n" + urlVideo;
           div.innerHTML += "<a style=\"color: #00FF72; font-size: 1.2em;\" href=\"" + urlVideo + "\" type=\"video/mp4\"> Video_URl </a>";
           div.style.backgroundColor = "#005B00";
           div.style.position = "absolute"; // absolute  relative(будет внизу)  fixed
           div.style.top = "8px";
           div.style.left = "12px";
           div.style.zindex = "2147483647"; // largest positive value of a signed 32-bit integer  z-index: 2147483647
           document.body.appendChild(div);
     });
  };



Отредактировано mokujin (09-10-2019 22:26:20)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2011 Mozilla Russia
Язык отображения форума: [Русский] [English]