FS.to del Ads

Ads remove

  1. // ==UserScript==
  2. // @name FS.to del Ads
  3. // @namespace Lain&Arch-vers
  4. // @description Ads remove
  5. // @include *://fs.to/*
  6. // @include *://cxz.to/*
  7. // @include *://brb.to/*
  8. // @version 2.1
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. var divs = document.getElementsByTagName('div');
  13. var re = /\w{1,5}\d{1,5}\w{1,5}\d{1,5}/;
  14. for(var i = 0; i < divs.length; i++)
  15. if(re.test(divs[i].className))
  16. divs[i].style.display = 'none';
  17.  
  18. var style = document.head.appendChild( document.createElement('style') );
  19. style.type = 'text/css';
  20.  
  21. style.sheet.insertRule(['.b-aplayer-teasers > a',
  22. '.b-player-popup__content > div[class][style="position: relative;"]',
  23. 'div[class^="b-adproxy"]',
  24. 'div[id^="admixer_async_"]'
  25. ].join(',')+'{display:none!important}', 0);
  26.  
  27. if (/\/view_iframe\//i.test(document.location.pathname)) {
  28. var p = document.querySelector('#player:not([preload="auto"])'),
  29. m = document.querySelector('.main'),
  30. adStepper = function(p) {
  31. if (p.currentTime < p.duration)
  32. p.currentTime++;
  33. },
  34. cl = function(p) {
  35. function skipListener() {
  36. p.pause();
  37. p.classList.add('m-hidden');
  38. setTimeout(adStepper, 1000, p);
  39. }
  40. p.addEventListener('timeupdate', skipListener, false);
  41. },
  42. o = new MutationObserver(function (mut) {
  43. mut.forEach(function (e) {
  44. for (var i = 0; i < e.addedNodes.length; i++) {
  45. if (e.addedNodes[i].id === 'player' &&
  46. e.addedNodes[i].nodeName === 'VIDEO' &&
  47. e.addedNodes[i].getAttribute('preload') != 'auto') {
  48. cl(e.addedNodes[i]);
  49. }
  50. }
  51. });
  52. });
  53. if (p.nodeName === 'VIDEO')
  54. cl(p);
  55. else
  56. o.observe(m, {childList: true});
  57. }