Greasy Fork is available in English.

YouTube: Remove Videos Based on Duration

Remove too short or too long videos from your YouTube's recommendation

// ==UserScript==
// @name         YouTube: Remove Videos Based on Duration
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Remove too short or too long videos from your YouTube's recommendation
// @author       Timothy (kuronek0zero)
// @namespace    https://github.com/kuronekozero/youtube-remove-short-long-videos/tree/main
// @match        https://www.youtube.com/*
// @grant        GM_addStyle
// @license      MIT
// ==/UserScript==

(function() {
    const userMinVideoDuration = 120; // Minimum duration in seconds (1 minute)
    // const userMaxVideoDuration = 600; // Maximum duration in seconds (10 minutes) uncomment this part if you want to also remove too long videos

    function getDurationInSeconds(durationText) {
        const timeParts = durationText.split(":").map(Number);
        if (timeParts.length === 2) {
            return timeParts[0] * 60 + timeParts[1]; // MM:SS
        } else if (timeParts.length === 3) {
            return timeParts[0] * 3600 + timeParts[1] * 60 + timeParts[2]; // HH:MM:SS
        }
        return 0;
    }

    function removeVideos() {
        const videos = document.querySelectorAll('ytd-video-renderer, ytd-grid-video-renderer, ytd-rich-item-renderer');

        videos.forEach(video => {
            const durationElement = video.querySelector('.badge-shape-wiz__text');
            if (durationElement) {
                const durationText = durationElement.textContent.trim();
                const durationInSeconds = getDurationInSeconds(durationText);

                if (durationInSeconds < userMinVideoDuration /* || durationInSeconds > userMaxVideoDuration */ ) {
                    video.style.display = 'none';
                }
            }
        });
    }

    // Run the script every 3 seconds to remove videos dynamically
    setInterval(removeVideos, 3000);
})();