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

Юристы зарабатывают огромные деньги и славу, оперируя хорошим знанием законов. Правила форума — простой путь к успешному общению.

№112-09-2019 14:25:56

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

fuckAutoplay4All. Прошу советов от знатоков.

Привет All!
Как-то давно меня задолбало автоплей_видео и решил поискать что есть. Нашёл что-то, но оно работало через раз, с кучей условностей. Скрипты, плуги...
ЯТД каждый проклинал этот ХТМЛ5 не одну сотню раз.

В общем, задумал я тогда сделать себе "универсум стопер".  и сделал. До последнего времени, работал и даже норм.
Но недавно на Phub что-то изменили и он стал всё равно проигрывать своё, несмотря на мой скрипт. Я его поправил, как смог... ибо я не кодер. Нету мя глубоких познаний в предмете. Так, хочу, учу... записую.
В общем, если будут у кого чего высказать по-этому - в полный рост.

Смысл таков, что самый надёжны способ прервать автоплей - это подменить источнег. А затем вернуть, дабы можно было всё-таки видос запустить. Тут бывают сложности на некоторых сайтах, которыи особо усерствуют с автоплеем, что нужно передвинуть линию воспр-я. Даже клик не запускает видео. Надо на "таймлайн" чуть протянуть....
Подмена источнега на самый очевидный, about:blank , почти всегда самая лучшая, если нужно зарубить видео "в принципе". В 90% случаев будет выдана ошибка , типа, неверный источнег... и запустить в бравзере не получиццо.
но для этого, будет ссылка в лев.верхн.углу с адресом видео.
В общем эбоуб:бланк хоть и отличный варик, но хотелось бы, чтоб видос можно было запустиь.  Поэтому заместо видео, подставлен 3сек. mp3 файл из левого сайтеса. Меньше пока не нашел. надоб вообще пустышку в 1сек. с тишиной. Пока не сделал.

скрытый текст

Выделить код

Код:

// ==UserScript==
// @author                   mokujin
// @namespace             xz.boom
// @name                     fuckAutoplay
// @description             Останавливает Видео HTML5 
// @include                   http*
// @exclude                  http*youtube.com/*
// @exclude                  http*mastarti.com/*
// @exclude                  http*moonwalk.com/*
// @version                   3.0
// @grant                     none
// @run-at                    document-end
// ==/UserScript==

//"use strict";
(function(){
document.addEventListener("readystatechange", getVideos, false);

    let arVideos, attempts = 0; // кол-во попыток поиска элемента video на странице. ниже, в условии, можно увеличить или уменьшить. Но меньше, у меня пробивает автоплей , где отложенная загрузка фреймов с видео. ъзх
    const brutStop = true;

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 < 4) {
               attempts +=1;
                setTimeout( getVideos, 500 );
                 break; return; 
         } else { videoStop(); break; return; };
     break;
     };
  return;
};


function videoStop() {
    let origUrl, fakeUrl = "https://ringtonina.ru/files_site_01/005/standartnyj_rington_na_sms_soobshhenie_nokia_message.mp3";
//    let origUrl, fakeUrl = "about:blank";

  Array.forEach(arVideos, function(video) {
        origUrl = video.currentSrc;
     if(origUrl) { 
           video.pause();
     switch(true) {
        case brutStop:
        case (!origUrl.startsWith("blob:")):
        case (!origUrl.startsWith("mediasource:")):
                video.setAttribute("src", fakeUrl);
                video.setAttribute("orig_src", origUrl);
                video.setAttribute("video_processed", true);
              };
           };
      });
   retOrigVideoAddress();
   document.removeEventListener("readystatechange", getVideos, false);
 };


function retOrigVideoAddress() {
  setTimeout( function retUrl() {
     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.oncanplay = function(){ revid.pause(); };
//                console.log( "Вернул src url: " + revid.getAttribute("src") );
             } else { revid.pause(); }
           });
         createLink();
      }, 2000 );
  };


function createLink() {
     Array.forEach(arVideos, function(vid) {
       let urlVideo = ( vid.currentSrc || vid.getAttribute("src") );
//          console.log( "createLink func  " + urlVideo );
     switch(true) {
       case urlVideo:
       case (urlVideo != "null"):
       case (!urlVideo.startsWith("blob:")):
       case (!urlVideo.startsWith("mediasource:")):
          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);
        };
    });
  };

})();


Т.к. это по-сути первая поделка, то возможно последуют замечания, улучшения и воообще 42.

Скриптег рабочий. ТормОзит всё. Правда есть сомнения в том, как построен начальный алго, с поиском видео.
Попинайте скриптег, кому не лень :music:

Отсутствует

 

Board footer

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