Greasy Fork is available in English.

Youtube Get Playlist Time

Get Youtube Playlist Total Time

// ==UserScript==
// @name         Youtube Get Playlist Time
// @namespace    
// @version      1.0
// @description  Get Youtube Playlist Total Time
// @author       Ze
// @include      https://www.youtube.*/playlist*
// @grant        
// ==/UserScript==
function getPlaylistTime() {
    "use strict";
    var spanTitles = Array.from(document.querySelectorAll('div.timestamp > span')),
        spanLength = 0,
        spanContent = "",
        i = 0,
        j = 0,
        k = 0,
        hoursArray = [],
        minutesArray = [],
        secondsArray = [],
        totalHours = 0,
        totalMinutes = 0,
        totalSeconds = 0,
        elementAppend = document.querySelector('h1.pl-header-title'),
        getTimeButton = document.createElement('button');
    for (i; i < spanTitles.length; i += 1) {
        spanLength = spanTitles[i].textContent.length;
        spanContent = spanTitles[i].textContent;
        if (spanLength === 5) {
            hoursArray.push(0);
            minutesArray.push(parseInt(spanContent.substring(0, 2), 10));
            secondsArray.push(parseInt(spanContent.substring(3, 5), 10));
        } else if (spanLength === 4) {
            hoursArray.push(0);
            minutesArray.push(parseInt(spanContent.substring(0, 1), 10));
            secondsArray.push(parseInt(spanContent.substring(2, 4), 10));
        } else if (spanLength === 7) {
            hoursArray.push(parseInt(spanContent.substring(0, 1), 10));
            minutesArray.push(parseInt(spanContent.substring(2, 4), 10));
            secondsArray.push(parseInt(spanContent.substring(5, 7), 10));
        } else if (spanLength === 8) {
            hoursArray.push(parseInt(spanContent.substring(0, 2), 10));
            minutesArray.push(parseInt(spanContent.substring(3, 5), 10));
            secondsArray.push(parseInt(spanContent.substring(6, 8), 10));
        }
    }
    for (j; j < spanTitles.length; j += 1) {
        totalHours += hoursArray[j];
        totalMinutes += minutesArray[j];
        totalSeconds += secondsArray[j];
    }
    function pad(str, max) {
        str = str.toString();
        return str.length < max ? pad("0" + str, max) : str;
    }
    totalMinutes += parseInt((totalSeconds / 60), 10);
    totalHours += parseInt((totalMinutes / 60), 10);
    totalSeconds = pad((totalSeconds % 60), 2);
    totalMinutes = pad((totalMinutes % 60), 2);
    getTimeButton.textContent = totalHours + ":" + totalMinutes + ":" + totalSeconds;
    getTimeButton.style.fontSize = "22px";
    getTimeButton.style.color = "Red";
    elementAppend.appendChild(getTimeButton);
}
function loadAllVideos() {
    "use strict";
    if (document.querySelector('#pl-video-list > button') !== null) {
        document.querySelector('#pl-video-list > button').click();
        setTimeout(loadAllVideos, 2000);
    } else {
        setTimeout(getPlaylistTime, 100);
    }
}
loadAllVideos();