Auto Scroll YouTube Shorts

Automatically scrolls to the next YouTube short when the current one finishes.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Greasemonkey lub Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Violentmonkey.

Aby zainstalować ten skrypt, wymagana będzie instalacja rozszerzenia Tampermonkey lub Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, musisz zainstalować rozszerzenie menedżera skryptów użytkownika.

(Mam już menedżera skryptów użytkownika, pozwól mi to zainstalować!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Musisz zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

(Mam już menedżera stylów użytkownika, pozwól mi to zainstalować!)

// ==UserScript==
// @name         Auto Scroll YouTube Shorts
// @namespace    https://github.com/Navist/YouTubeShortsAutoScroll
// @version      1.0a
// @description  Automatically scrolls to the next YouTube short when the current one finishes.
// @author       Navist (AI Generated)
// @match        https://www.youtube.com/shorts/*
// @grant        none
// @license      MIT
// @homepageURL  https://github.com/Navist/YouTubeShortsAutoScroll
// @supportURL   https://github.com/Navist/YouTubeShortsAutoScroll/issues
// ==/UserScript==

(function() {
    'use strict';

    function moveToNextShort() {
        // Target the "Next" button by its class and aria-label
        const nextButton = document.querySelector(
            'button.yt-spec-button-shape-next[aria-label="Next video"]'
        );

        if (nextButton) {
            nextButton.click(); // Simulate a click on the "Next" button
            console.log("Moved to next video.");
        } else {
            console.log("Next button not found!");
        }
    }

    function checkVideoProgress() {
        const video = document.querySelector('video');
        if (video) {
            // Check if the video is about to finish (within 0.5 seconds of the duration)
            if (video.duration - video.currentTime <= 0.5) {
                moveToNextShort();
            }
        }
    }

    // Run the check every 500ms
    setInterval(checkVideoProgress, 500);
})();