Youtube: Remove Overlays

10/27/2021, 12:22:39 AM

目前為 2021-10-29 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name Youtube: Remove Overlays
  3. // @namespace https://greasyfork.org/en/users/221281-klaufir
  4. // @match https://www.youtube.com/embed/*
  5. // @match https://www.youtube.com/watch?v=*
  6. // @grant none
  7. // @version 1.3
  8. // @author -
  9. // @description 10/27/2021, 12:22:39 AM
  10. // ==/UserScript==
  11.  
  12. function removeElements(elems) {
  13. if (elems)
  14. Array.from(elems).map(e => e.remove());
  15. }
  16.  
  17. function removeElement(elem) {
  18. elem?.remove();
  19. }
  20.  
  21. function retrier(queryFn, onSuccess, tries, retryInterval) {
  22. if (tries <= 0)
  23. return;
  24.  
  25. var queryResult = queryFn()
  26. if (!queryResult || (queryResult?.length ?? -1) == 0) {
  27. setTimeout(function() {retrier(queryFn, onSuccess, tries-1, retryInterval); }, retryInterval);
  28. return;
  29. }
  30. onSuccess(queryResult);
  31. }
  32.  
  33. function getMoreVideosOverlay() {
  34. return document?.querySelector(".ytp-pause-overlay.ytp-scroll-min");
  35. }
  36.  
  37. function getCoveringOverlays() {
  38. return document?.querySelectorAll('.ytp-ce-element');
  39. }
  40.  
  41. function getPaidPromotionsOverlay() {
  42. return document?.querySelector('.ytp-paid-content-overlay-text');
  43. }
  44.  
  45.  
  46. retrier(getPaidPromotionsOverlay,
  47. removeElement,
  48. /* tries: */ 10,
  49. /* retryInterval:*/ 1000);
  50.  
  51. retrier(getMoreVideosOverlay,
  52. removeElement,
  53. /* tries: */ 10,
  54. /* retryInterval:*/ 1000);
  55.  
  56. retrier(getCoveringOverlays,
  57. removeElements,
  58. /* tries: */ 10,
  59. /* retryInterval:*/ 1000);