YouTube - Remove watched videos button

Adds a button to remove all watched videos from the subscription page

当前为 2022-06-03 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name YouTube - Remove watched videos button
  3. // @description Adds a button to remove all watched videos from the subscription page
  4. // @author MetalTxus
  5. // @version 1.0.5
  6.  
  7. // @icon https://www.youtube.com/favicon.ico
  8. // @match https://www.youtube.com/*
  9. // @namespace https://github.com/jesuscc1993/user-js
  10. // @require https://code.jquery.com/jquery-3.2.1.min.js
  11. // ==/UserScript==
  12.  
  13. /* globals jQuery */
  14.  
  15. (() => {
  16. 'use strict';
  17.  
  18. const shouldRender = () => {
  19. return location.href.includes('/subscriptions') || location.href.includes('/videos') || location.href.includes('/results');
  20. }
  21.  
  22. const removeWatchedVideos = () => {
  23. const watchedVideos = jQuery('[id="progress"]').parents('ytd-grid-video-renderer, ytd-video-renderer');
  24. watchedVideos.remove();
  25.  
  26. const videousLeft = jQuery('ytd-grid-video-renderer, ytd-video-renderer');
  27. buttonElement.text(`Remove Watched (${watchedVideos.length} videos removed / ${videousLeft.length} videos left)`)
  28. }
  29.  
  30. const buttonElement = jQuery(`
  31. <tp-yt-paper-button class="style-scope ytd-subscribe-button-renderer" style="margin-top: 24px;">
  32. Remove Watched
  33. </tp-yt-paper-button>
  34. `);
  35.  
  36. const handleButtonPresence = () => {
  37. if (shouldRender()) {
  38. const gridContainerElement = jQuery('ytd-section-list-renderer, ytd-shelf-renderer, ytd-browse:first ytd-two-column-browse-results-renderer #primary #header-container').first();
  39. if (gridContainerElement.length && !gridContainerElement.find(buttonElement).length) {
  40. buttonElement.click(removeWatchedVideos);
  41. gridContainerElement.prepend(buttonElement);
  42. }
  43. } else {
  44. buttonElement.remove();
  45. }
  46. };
  47.  
  48. setInterval(handleButtonPresence, 150);
  49.  
  50. })();