Last active
April 7, 2025 16:36
-
-
Save RafalJDev/dcdc5d9f455d84addcdf0e116982aa58 to your computer and use it in GitHub Desktop.
Count all videos time duration on youtube channel
This file contains 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
//You need to run this in javascript console inside chrome (althought should work the same in other browsers) | |
//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 left for future fast debugging in case of errors, I know, bad practice | |
//Example page: https://www.youtube.com/user/DNewsChannel/videos |
Forked this script and added some debugging output to include video title and duration in a table to the console so I could see which videos were being counted, and how the total time was accumulating. Really helpful script, thanks for sharing it! (code's a bit messy
and has inefficiencies, I'll see if I can get to fixing it) For now though, this'll do 😄
Side note:
If you've got 2 days, 5 hours, 47 minutes, and 22 seconds free, you can watch all the long form videos from Vsauce as of today.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.