Skip to content

Instantly share code, notes, and snippets.

@glennhenry
Last active August 1, 2026 12:11
Show Gist options
  • Select an option

  • Save glennhenry/7dde3d5dc3d821a6b3b64cc17351b71a to your computer and use it in GitHub Desktop.

Select an option

Save glennhenry/7dde3d5dc3d821a6b3b64cc17351b71a to your computer and use it in GitHub Desktop.
Utility script to calculate the next occurence of Kep1er's WA DA DA performance on ALL THE K-POP Youtube 24/7 livestream.
/*
Kep1er WA DA DA Occurrence Calculator
=====================================
The YouTube channel "ALL THE K-POP" hosts a 24/7 livestream of
various K-POP performances (Show Champion, Weekly Idol, etc.).
The broadcast is a fixed playlist of performances that repeats on a regular cycle.
The list of artists is publicly available in the livestream description.
After observing for some time, the playlist duration appears to be
approximately 3 hours and 48 minutes.
This is a small fan script used to calculate the future occurrences of
Kep1er's WA DA DA performance according to an observed reference point.
Since the playlist's duration is estimated, time drift may accumulate over time.
This script will be valid as long as the playlist is not changed.
Why does this exist?
====================
It was exciting to see Kep1er suddenly show up on the livestream.
It felt like a surprise in the sea of random performances.
I kep1 tuning in to the stream just to see them again...
Over time, I realized that the livestream is actually a fixed loop.
I came back every time and ended up deriving the playlist's estimated duration.
Once I had the duration, it was easy to know when they would show up again.
I have been doing this for some time by manually calculating the time.
Finally, this script is created to automate it.
*/
// Our observation shows that...
// WA DA DA was played at 10:41, 14:29, and 18:18...
// Monday, 01 June 2026, 10:41
// Monday, 01 June 2026, 14:29
// Monday, 01 June 2026, 18:18
// We tried to observe more closely and obtain these extra accurate timestamp
// Tuesday, 02 June 2026 13:18:39
// Tuesday, 02 June 2026 17:06:50
// The playlist runs for approximately 3 hr 48 min 11 sec
approximatePlaylistDuration = 13691810;
// Use the fifth observation as the fixed reference point
// (UTC) Tuesday, 02 June 2026 17:06:50
referencePoint = 1780420010932;
function main() {
const now = new Date();
const nowMillis = now.getTime();
const distance = nowMillis - referencePoint;
const numberOfWadadaSinceReferencePoint = Math.trunc(distance / approximatePlaylistDuration);
const lastWadadaPerformance = referencePoint + numberOfWadadaSinceReferencePoint * approximatePlaylistDuration;
console.log("===============================================================");
console.log("(Every date is formatted on your local time)");
console.log(`Today is: ${formatRichDate(now)}`);
console.log(`Last WA DA DA performance was: ${formatRichDate(lastWadadaPerformance)}`);
console.log("===============================================================");
console.log("Upcoming WA DA DA performances");
console.log();
for (let i = 0; i < 5; i++) {
const nextWadadaPerformance = lastWadadaPerformance + approximatePlaylistDuration * (i + 1);
console.log(`At ${formatShortDate(nextWadadaPerformance)} starts in ${toHourAndMinutes(nextWadadaPerformance - nowMillis)}`);
}
console.log("===============================================================");
}
function toHourAndMinutes(millis) {
const seconds = millis / 1000;
const hours = Math.trunc(seconds / 3600);
const minutes = Math.trunc((seconds % 3600) / 60);
return `${hours} hr ${minutes} min`;
}
function formatRichDate(date) {
date = new Date(date);
const days = [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
];
const dayName = days[date.getDay()];
const day = String(date.getDate()).padStart(2, "0");
const months = [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December",
];
const monthName = months[date.getMonth()];
const year = date.getFullYear();
const hours = String(date.getHours()).padStart(2, "0");
const minutes = String(date.getMinutes()).padStart(2, "0");
return `${dayName}, ${day} ${monthName} ${year}, ${hours}:${minutes}`;
}
function formatShortDate(date) {
date = new Date(date);
const hours = String(date.getHours()).padStart(2, "0");
const minutes = String(date.getMinutes()).padStart(2, "0");
return `${hours}:${minutes}`;
}
main();
@glennhenry

Copy link
Copy Markdown
Author

You can also run this script in your browser via Browser Devtools > Console > copy paste this script and click run

@glennhenry

glennhenry commented Aug 1, 2026

Copy link
Copy Markdown
Author

They ended the livestream and changed the playlist, WA DA DA doesn't appear anymore and there are no other Kep1er performances ☹️

The script is useless now 🥀🥀🥀

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