Automated media diet

Last weekend I spent some time building a couple of Python scripts that grab data about what I’ve been watching, listening to, and reading in any given month from my accounts on Trakt.tv, Last.fm, Hardcover.app and Overcast.fm.

The result serves as a pretty Markdown report where I can add thoughts to individual items (or not) before publishing. You can see what this looks like in the report for last month that I finished up just before typing post: Media diet for April 2025.

I plan doing these every month going forward, because it’s a bit of a shame that I’m not collecting some more thoughts about the various bits of escapism that are worth talking about. Which admittedly isn’t necessarily too many of them.
Probably I’ll retroactively add media diet posts for past months as well, because I just think they’re neat. The scripts are deliberately made so that they work with arbitrary months, not just the most recent one.

Trakt, Last.fm and Hardcover have APIs that can be queried directly. For Overcast I use overcast-to-sqlite to make the account data export more easily processable.1 While Trakt and Last.fm are pretty well established in my habits and tools, I haven’t yet settled on either Hardcover or The StoryGraph as my Goodreads replacement of choice – in fact, I will likely change this part from Hardcover to simply querying my Calibre library where I keep track of the relevant data anyway.
Considering the endless stream of proof that anything you don’t fully control ultimately turns to shit, I’m also curiously looking at Yamtrack, Maloja and Libre.fm.

The one thing I didn’t get into this initial version is gaming stats. All my gaming – except for Minecraft – happens on Steam2 these days. I’m sure they track things to the granularity I’d need, but they don’t offer a way to access the data. To make up for that, I built steam-playtime-to-sqlite – a tool to collect a daily snapshot of all your Steam games’ total playtime and calculate various stats based on that. Unfortunately that means that it will only give meaningful data for after you start using it.


  1. Ironically this is very similar to the Overcast scrobbler I had written for Lastcast.fm a while back, which I initially thought I’d reuse for this project. ↩︎

  2. Who wouldn’t want their hobby to finance the yacht collection of one of the richest people on earth?! ↩︎