Guest User

youtube crappy videos remover from the recommendations v2

a guest
Nov 16th, 2023
3,115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.34 KB | None | 0 0
  1. // ==UserScript==
  2. // @name youtube crappy videos remover from the recommendations v2
  3. // @namespace http://tampermonkey.net/
  4. // @version 2.0
  5. // @description thanks to youtube for recommending crappy videos with ~10 views
  6. // @author NiceL
  7. // @match *://*.youtube.com/*
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. // ---------------------------------------------------------------------------
  13.  
  14. function IsNumber(i)
  15. {
  16. return (i >= '0' && i <= '9');
  17. }
  18.  
  19. function IsBadVideo(videoViews)
  20. {
  21. if (!videoViews) {
  22. return false;
  23. }
  24.  
  25. let text = videoViews.innerText;
  26.  
  27. for (let i = 0; i < text.length - 2; i++)
  28. {
  29. // not number + space + not number = this is >1000 views (this should work for all languages)
  30. if (!IsNumber(text[i]) && text[i + 1] == ' ' && !IsNumber(text[i + 2])) {
  31. return false;
  32. }
  33. }
  34.  
  35. console.log(text); // debug
  36. return true;
  37. }
  38.  
  39. // ---------------------------------------------------------------------------
  40.  
  41. function Update()
  42. {
  43. let videosList;
  44.  
  45. // delete videos from the right side
  46. videosList = document.getElementsByClassName("style-scope ytd-compact-video-renderer");
  47. for (let i = 0; i < videosList.length; i++)
  48. {
  49. let videoViews = videosList[i].getElementsByClassName("inline-metadata-item style-scope ytd-video-meta-block")[0];
  50.  
  51. if (IsBadVideo(videoViews)) {
  52. videosList[i].parentElement.remove();
  53. }
  54. }
  55.  
  56. // delete videos from the main page
  57. videosList = document.getElementsByClassName("style-scope ytd-rich-item-renderer");
  58. for (let i = 0; i < videosList.length; i++)
  59. {
  60. if (videosList[i].id != "content") {
  61. continue;
  62. }
  63.  
  64. let videoViews = videosList[i].getElementsByClassName("inline-metadata-item style-scope ytd-video-meta-block")[0];
  65.  
  66. if (IsBadVideo(videoViews)) {
  67. videosList[i].parentElement.remove();
  68. }
  69. }
  70. }
  71.  
  72. // ---------------------------------------------------------------------------
  73.  
  74. window.addEventListener("message", (event) => {
  75. Update();
  76. });
  77.  
  78. window.addEventListener("load", (event) => {
  79. Update();
  80. });
  81.  
  82. window.addEventListener("scrollend", (event) => {
  83. Update();
  84. });
Add Comment
Please, Sign In to add comment