← Back to Projects

beets

Contributing back to the app and plugins that make managing a DJ's music collection possible at scale

Goal
Fix bugs and add features to my favorite music tagger
My role
Collaborator
Status
Active
Started
  • Python
  • GitHub Actions

A DJ’s music collection gives a tagger plenty of awkward cases: featured artists, compilations, remixes, and several versions of the same track. Beets is my favorite tool for managing that collection, and contributing fixes upstream saves me from repeating the cleanup or carrying local workarounds between upgrades. My merged work spans Beets itself, Filetote, and Beatport4:

Getting a title formatted correctly is only half the job if the next metadata refresh undoes it. I connected ftintitle to Beets’ metadata-received events so track and album information is normalized before mbsync applies it. Imports and the manual command use the same rewriting logic, tested against artist credits, cached metadata properties, empty titles, and configurations that should leave the data alone. For Filetote, compatibility meant using the newer multidisc pattern collection when available and reconstructing it from older constants otherwise, then testing against the affected Beets versions.

These are contributions to established community projects. For changes better suited to an optional extension, I maintain my own Beets plugins; docker-beets assembles the environment where I use them. They address different parts of the same job: keeping a large music library manageable without making every upgrade a new cleanup project.