-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
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