Skip to content

Instantly share code, notes, and snippets.

@RafalJDev
Last active April 11, 2024 00:42
Show Gist options
  • Save RafalJDev/dcdc5d9f455d84addcdf0e116982aa58 to your computer and use it in GitHub Desktop.
Save RafalJDev/dcdc5d9f455d84addcdf0e116982aa58 to your computer and use it in GitHub Desktop.
Count all videos time duration on youtube channel
//You need to run this in javascript console inside chrome
//Assumptions:
//1. Will count only "expanded" videos on page, you may first need to run script to scroll to last video or do it manually
//2. Tested on chrome, ubuntu, 2019
//3. Time format: hh:mm:ss
var array = document.getElementsByClassName("style-scope ytd-thumbnail-overlay-time-status-renderer");
var arrLength = array.length;
var allHours = 0;
var allMinutes = 0;
var allSeconds = 0;
for (var i=0; i<arrLength; i++) {
var content = array[i].textContent;
// console.log("content: ", content);
var splitedTime = content.split(":");
if (splitedTime.length == 1) {
allSeconds += +splitedTime[0];
} else if (splitedTime.length == 2) {
allMinutes += +splitedTime[0];
allSeconds += +splitedTime[1];
} else if (splitedTime.length == 3) {
allHours += +splitedTime[0];
allMinutes += +splitedTime[1];
allSeconds += +splitedTime[2];
} else {
console.log("WTF error, current content:", content);
}
}
var seconds = allSeconds % 60;
var minutes = (allMinutes % 60 + allSeconds / 60) % 60;
var hours = allHours + allMinutes / 60 + allSeconds / 3600;
// console.log("allHours:", allHours);
// console.log("allMinutes:", allMinutes);
// console.log("allSeconds:", allSeconds);
console.log("Hours:", hours);
console.log("Minutes:", minutes);
console.log("Seconds:", seconds);
//comments leaved for future fast debugging in case of errors, I know, bad practice
//Example page: https://www.youtube.com/user/DNewsChannel/videos
@mkpolkowski
Copy link

I just realized that the getElementsByClassName that is used to collect data into the array is triggered 8 times for every video in the videos tab of a channel. Four times the content is empty and four times it returns the time of the video. This means that the total time result is four times the actual value.

@itizarsa your solution is nice and clean. I used it in my fork.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment