beet-fuse: mount your music metadata from beet as FUSE file system
Inspired by my work on finding the best way to manage my digital assets I chose beets to tag all music files in my datalake. The questions was then how to make this information available to any music player out there? My first approach was using mpd as player and I found a tool to export the information from the beets database into mpd format. Later I switched to Lyrion as music server. First thought was to provide another tool to convert from one database format to another. Then I got inspired by beetfs which is no longer maintained (and not compatible with python 3). What this tool did was mount a FUSE file system that presents your music collection (as tagged by beets) and then whenever you read a file, it will first read the metadata from the beet database and later the music itself from the file.
I have re-created some of this functionality in the tool beet-fuse. beet-fuse creates a read-only FUSE file-system that shows your music from your beets database. You can provide a template string on how to organise the folder structure e.g. Year/Album/Artist/Track or Artist/Album/Track or any of the many options provided by beets. You can expose your complete music collection or a subset defined by a beets query. Then all that is left is to point your music player of choice to the FUSE mount point and let it index your files. Any music player will have access to the same information which is the one defined by beets. Thus the beets database serves as single source of truth. The care and effort you put into curating the perfect tags in beets benefits any future choice of music players.
This “single source of truth” concept will be at the center of my further damright explorations. I will post an article on my complete music workflow later.
beet-fuse is licensed under the EU public license v1.2. It is my first time choosing this license. I like that it is translated in the national language of all member states which makes it more accessible. It is also OSI approved, compatible with both the GPLv2 and v3, the AGPL, MPL, EPL, LGPL and other licences. It applies beyond software to other works. For documents its compatibility includes the Creative Common licence CC BY SA. It also requires derivatives to be distributed under the same license, unless code from compatible licenses is merged in the derivative in which case the derivatives may be re-licensed under the compatible license.