skrrtStats 2021–2024
I am undeniably a Yung Skrrt superfan. There is something (several specific things, actually) about his music that triggers a deep fixation in me with roots as low as the limbic tier. I’ll write a blog post about them someday in honor of the Gimbus GOAT King of Internet Music.
For now, I’ll collate annual analytics for my Yung Skrrt streaming data which I’ve been collecting for four years running. I’ll also share my code so you can generate insights from your own Spotify streaming data for your favorite artists.
skrrtStats 2024
51.59 listening hours (2.15 days) for 261 unique tracks

skrrtStats 2023
67.56 listening hours (2.82 days) for 223 unique tracks

skrrtStats 2022
96.50 listening hours (4.02 days) for 223 unique tracks

skrrtStats 2021
55.54 listening hours (2.31 days) for 142 unique tracks

Generate your own insights
Generate insights for any artist of your choice from your own Spotify streaming data. Here’s how:
- Visit the Spotify Account privacy page and log in
- Request a copy of your personal data with the Download your data tool
- Use the normal option, not Extended streaming history
- It will take some time for Spotify to process your data and email you back with a download link
- Download and unarchive your data
- Download code from this gist, or copy it to a new file from the block below
- Place the script file in the same directory as the unarchived data folder (
Spotify Account Data
) - Edit the constants up top for the artist and number of top tracks you’d like to output
- Run the script from the command line with Node.js or an equivalent JavaScript runtime environment
- Bonus: use Carbon to generate cool snapshots of your stats like the ones I’ve featured in this post
const ARTIST = "Yung Skrrt"; // substitute any artist (ensure exact match)
const TOP_TRACKS = 10; // number of top trackx to display
// time conversion constants
const MS_IN_HR = 3600000;
const HRS_IN_DAY = 24;
// GOTTA HIT THE STORAGE SPOT, GET UP IN THE STASH!
// retreive and consolidate streaming data
const streams0 = require("./Spotify Account Data/StreamingHistory_music_0.json");
const streams1 = require("./Spotify Account Data/StreamingHistory_music_1.json");
const streams = streams0.concat(streams1);
// filter to streams of tracks by artist
const artistStreams = streams.filter(stream => stream.artistName === ARTIST);
// return play duration of all artist streams in milliseconds
function getDuration() {
let duration = 0;
artistStreams.forEach(stream => {
duration += stream.msPlayed;
});
return duration;
}
// return duration in hours
function getDurationInHours() {
return (getDuration()/MS_IN_HR).round();
}
// return duration in days
function getDurationInDays() {
return (getDuration()/MS_IN_HR/HRS_IN_DAY).round();
}
// return a sorted (descending) Map<trackName, playCount>
function getTracksByPlayCount() {
const trackCounts = new Map();
artistStreams.forEach(stream => {
if (!trackCounts.has(stream.trackName)) {
trackCounts.set(stream.trackName, 1);
} else {
let count = trackCounts.get(stream.trackName);
count++;
trackCounts.set(stream.trackName, count);
}
});
const trackRanks = new Map([...trackCounts.entries()].sort((a, b) => b[1] - a[1]));
return trackRanks;
}
// return a string listing the first n top tracks
function listTopTracks() {
const trackCounts = getTracksByPlayCount().entries();
let topTracksList = "";
let rank = 1;
for (track of trackCounts) {
if (rank > TOP_TRACKS) {
break;
}
topTracksList += String(rank).padStart(2, '0') + ". \"" +
track[0] + "\" with " + track[1] + " plays \n";
rank++;
}
return topTracksList;
}
// decimal rounding (to hundredths)
Number.prototype.round = function() {
const num = this;
return (Math.round(num * 100) / 100).toFixed(2);
}
// string formatter
String.prototype.format = function() {
var s = this,
i = arguments.length;
while (i--) {
s = s.replace(new RegExp('\\{' + i + '\\}', 'gm'), arguments[i]);
}
return s;
};
// STATS UP, STATS UP!
// print artist stats
console.log(
"\n" +
"You listened to {0} for {1} hours. That's {2} days. \n".format(ARTIST, getDurationInHours(), getDurationInDays()) +
"\n" +
"You listened to {0} unique {1} songs. \n".format(getTracksByPlayCount().size, ARTIST) +
"\n" +
"Your top " + ARTIST + " tracks \n" +
"--------------------------\n" +
listTopTracks() +
"\n"
);
Did you like this post? Do you have thoughts about Yung Skrrt? Wanna show me what your top artist breakdown looks like? Message me on X (Twitter) and let’s yap about it.