Hacker News new | past | comments | ask | show | jobs | submit login
Analyzing Spotify Stream History (ericchiang.github.io)
123 points by ericchiang on Feb 13, 2024 | hide | past | favorite | 21 comments



Your_Spotify is absolutely fantastic for doing this

https://github.com/Yooooomi/your_spotify


Seconding this. I have an instance running on my home server, and it works great. I have a listening history going back just over a decade now, and I can see how my taste has changed over the years. It’s a neat tool.

Edit: just looked at it. Over 10 years, I have a little over 200 days worth of listening time. It has some neat graphs. And I like that I can dive deep and pick a specific song or artist and see things like “when I first listened” and my full play history for that specific song.


And this goes in the TODO list for the home server next weekend... thanks!


I have been using last.fm[1] for this for years (just checked, from 2008!). They now do a rolling weekly and annual interactive chart which is fun to look at, here's mine for 2023[2].

They have a Spotify integration and I use PanoScrobbler on mobile.

[1]: https://www.last.fm/

[2]: https://www.last.fm/user/GripFx/listening-report/year


+1 for last.fm, so glad its still alive and that scrobbling still works :)

Been at it since 2004 [0]!

[0] https://www.last.fm/user/nudgeee/listening-report/year


There's also ListenBrainz, run by the MusicBrainz org, which offers similar functionality without API restrictions or other paid features that Last.FM tries to push.

https://listenbrainz.org/

If you wish to use your scrobble data at all programmatically this is a far better tool to use.


Plug for my buddy's awesome tool LastWave [1] - generates you a groovy waveform data visualization based off your listening history. Free and open source, check it out!

[1] https://savas.ca/lastwave/


Love last.fm (been there since 2009!).

My only gripe is that all the charts are by number of scrobbles (how many times you listened to a song) and not by amount of time.

1 Pink Floyd song can be as long as 10 Misfits song...


I wish YouTube Music did this :(

Ideas for other analysis;

Songs that over or under index when sliced by some other dimension. Weather? Morning vs evening? Weekday vs weekend? Summer vs winter?

Songs you never finish vs songs you always finish.

Songs you don't like from albums you do.

One hit wonders (within your personal taste)

Songs you've played 10+ times but haven't heard in over three years

If you had this data at scale: favourite songs from people who enjoy similar niches to you (it's me! Listen to Televators by TMV).


It would be possible to plug an LLM [1] into the stream history and be able to directly type the ideas you cited and get instant results.

> If you had this data at scale

That was the "raison d'etre" of last.fm. Alas, it is not popular anymore (=smaller scale)

> favourite songs from people who enjoy similar niches to you

In last.fm, you can go to an artist's listener page [2], pick a user who "listens to Televators a lot", export their most-listened/loved tracks to Spotify, filter them by genre, and try them out :). You could also go to a track page [3], pick a user who commented on it, and do the same.

[1] https://news.ycombinator.com/item?id=39261486

[2] https://www.last.fm/music/The+Mars+Volta/+listeners

[3] https://www.last.fm/music/The+Mars+Volta/_/Televators


Google used to be good at data liberation, are you sure you can't get your streaming history somewhere?

If they don't have it, you can do what I did to Spotify many years ago, in annoyance after they closed a request for shared listening history across their apps: I GDPR'd them. See, if you store my listening history at all, sharing it back with me is not optional.

So that's why I know what their Kafka layout looks like. Or what it looked like in 2018 anyway. I like to hope I hastened their implementation of giving users access to their data slightly.


I collected 10 years worth of my complete listening habits via a lastfm plugin, in the past for Winamp, then for iPhone/Android Media players and finally within Spotify. Now lastfm has shut down their free API access and visualization tools stopped working. I printed a 2x1m large poster of my over 10 years of data as a beautiful LastGraph visualization.


> Now lastfm has shut down their free API access

I think they just sometimes disable new API accounts creation. It is open now anyway, and my old API key is still working.


can confirm my key still works too


Care to share your masterpiece?


This made me remember how much I used to love exploring my last.fm data with stream graphs from https://lastgraph.aeracode.org/ (before it died)

I'll have to have a go at making something similar with my Spotify data. Thanks for the inspiration.


Can this data tell you if the song was played from the local cache or actually streamed? Would like to know if the smart shuffle has a preference for locally cached songs so Spotify can save on data charges.


This is cool. I also requested my data as I wanted to find out the artists I'd missed out listening to. The ones I had heard previously but didn't get hooked initially... As in I should have been listening to Phoebe Bridgers all this time https://www.darrenshaw.org/blog/2023/01/05/should-have-been-...


For me, this is easily one of best pros of using Spotify. The post did not mention but it may take up to a month to get data files from spotify (took 28 days for me) but it is worth it. One example use case for data science is the Stats.fm project that neatly aggregates you listening history with graphs and such.


I wrote a website to do exactly this with your own data and Python in the browser using pyodide und plotly.js for visualizations: https://github.com/piebro/spotify-statistics/


I'll do a proper Show HN very soon, but for anyone who's interested in viewing their detailed Spotify stats, you can use https://volt.fm




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: