-
-
Save Ghost---Shadow/e11a4a0c00b7ac26f1c88418b3359c4b to your computer and use it in GitHub Desktop.
/** | |
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 | |
Make sure &disable_polymer=true flag is set | |
e.g. | |
https://www.youtube.com/playlist?list=WL&disable_polymer=true | |
*/ | |
const table = document.getElementById("pl-video-table") | |
const rows = Array.from(table.rows) | |
const toSeconds = s => s ? s.split(':').map(v => parseInt(v)).reverse().reduce((acc,e,i) => acc + e * Math.pow(60,i)) : 0 | |
const getTimestamp = row => toSeconds(row.children[6].children[0].children[0].innerText) | |
let seconds = rows.reduce((acc,e) => acc + getTimestamp(e),0) | |
let mins = parseInt(seconds / 60) | |
seconds %= 60 | |
let hours = parseInt(mins / 60) | |
mins %= 60 | |
console.log(hours+":"+mins+":"+seconds) |
Bookmarkable version of @abonzer proposal:
(use this as the URL for a bookmark, click on the bookmark when u're on a youtube playlist page)
javascript: 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) + ' Hours '; result += (min < 10 ? "0" + min : min) + " Min "; result += (seconds < 10 ? "0" + seconds : seconds) + ' Sec '; return result; }; var ytp = document.querySelectorAll("ytd-playlist-video-list-renderer > #contents > ytd-playlist-video-renderer");var time = 0; 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(':'); if (tx.length < 3) {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]);}}; var ytpT = convertS(time); var show = 'YouTube Playlist \n --------------- \n Total Videos : ' + ytp.length + '\nTotal Duration : ' + ytpT + '\n Avg. Duration : ' + convertS(time / ytp.length);alert(show);
var ytp = document.querySelectorAll("ytd-playlist-video-list-renderer > #contents > ytd-playlist-video-renderer"); var time = 0; 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(':'); if (tx.length < 3) { 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]); } } 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); 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) + ' Hours '; result += (min < 10 ? "0" + min : min) + " Min "; result += (seconds < 10 ? "0" + seconds : seconds) + ' Sec '; return result; }
This is amazing, thank you ♥♥♥♥
The scripts is useful but my use case is to have the individual video length and I modified the script a bit.
You can get download the CSV file.
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();
This https://www.youtube.com/playlist?list=WL