Skip to content

Instantly share code, notes, and snippets.

@jjisnow
Forked from Ghost---Shadow/PlaylistLength.js
Last active April 6, 2024 09:34
Show Gist options
  • Save jjisnow/ed5744d5a1729f32ad5913fd548ef992 to your computer and use it in GitHub Desktop.
Save jjisnow/ed5744d5a1729f32ad5913fd548ef992 to your computer and use it in GitHub Desktop.
Calculate the total length of a youtube playlist. Just open javascript console, paste and press enter.
/**
USAGE
1. Open the playlist you want
2. Right click > Inspect element > Console
3. Copy this and paste. Hit enter.
4. For watch later make sure to click the Edit button
*/
var ytp = document.querySelectorAll("ytd-playlist-video-list-renderer > #contents > ytd-playlist-video-renderer");
var time = 0;
function convertS(sec) {
var hrs = Math.floor(sec / 3600);
var min = Math.floor((sec - (hrs * 3600)) / 60);
var seconds = sec - (hrs * 3600) - (min * 60);
seconds = Math.round(seconds * 100) / 100
var result = (hrs < 10 ? "0" + hrs : hrs) + ':';
result += (min < 10 ? "0" + min : min) + ":";
result += (seconds < 10 ? "0" + seconds : seconds);
return result;
}
var videos = [];
for (var i = 0; i < ytp.length; i++) {
var a = ytp[i].getElementsByTagName('ytd-thumbnail-overlay-time-status-renderer')[0].innerText;
var tx = a.split(':');
var title = ytp[i].getElementsByTagName("a")[1].title;
if (tx.length < 3) {
videoLength = Number(tx[0]) * 60 + Number(tx[1]);
time = time + Number(tx[0]) * 60 + Number(tx[1]);
} else if (tx.length = 3) {
time = time + Number(tx[0]) * 60 * 60 + Number(tx[1]) * 60 + Number(tx[2]);
videoLength = Number(tx[0]) * 60 * 60 + Number(tx[1]) * 60 + Number(tx[2]);
}
videos.push({ title, videoLength: convertS(videoLength), Seconds: videoLength });
}
function download_csv_file() {
//define the heading for each row of the data
var csv = 'Video,Length,Seconds\n';
//merge the data with CSV
videos.forEach(function (row) {
csv += row.title + "," + row.videoLength + "," + row.Seconds;
csv += "\n";
});
//display the created CSV data on the web browser
document.write(csv);
var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv);
hiddenElement.target = '_blank';
//provide the name for the CSV file to be downloaded
hiddenElement.download = 'YoutubePlayList.csv';
hiddenElement.click();
}
var ytpT = convertS(time)
var show = 'YouTube Playlist \n --------------- \n Total Videos : ' + ytp.length + '\n Total Duration : ' + ytpT + '\n Avg. Duration : ' + convertS(time / ytp.length);
alert(show);
// console.log(videos);
// download_csv_file();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment