I've been using MusicBee for more than a decade. That means years of playcounts, ratings, loved tracks and so on.
When I set up myself a Navidrome server, I didn't want to lose all those years of data, so I decided to do something to import them.
And I actually still use MusicBee, I only use Navidrome when I'm not home, so I wanted to be able to sync my local ratings/playcounts etc. from time to time.
Hence this project. It's probably a niche use case, but who knows, it can be useful to somebody?
MusicBee to Navidrome Sync allows you to:
<File Path>
<Filename>
<Folder>
Title
Last Played
Play Count
Rating
Love
Skip Count
MusicBee_Export.csv
navidrome.db
. Its location is usually in navidrome /data
folder. You can back up it either by copying it or with sqlite3 CLI if installed (sqlite3 <path to original file> ".timeout 30000" ".backup <path to backup file>"
for instance). If you back it up by copying, you can also back up navidrome.db-shm
or navidrome.db-wal
somewhere too if present, just for precaution.navidrome.db
and MusicBee_Export.csv
in the same folder as this .exe (or you can provide pathes with CLI, see Commands below). /data
folder where you found navidrome.db
and overwrite it with the updated one. Remove any remaining navidrome.db-shm
or navidrome.db-wal
or you will probably get some errors on navidrome startup.All commands must be run this way: musicbee-navidrome-sync.exe [command name] [options]
.
For instance, musicbee-navidrome-sync.exe fullSync -h
Syncs playcounts, track ratings, loved tracks and last played date from MusicBee DB to Navidrome DB. Runs on tracks first, then updates albums and artists accordingly.
-f, --first
: runs sync for the first time: add MusicBee playcount to Navidrome playcount. If not used, playcount will be updated only if greater than Navidrome's one (see Notes). --csv <path>
: MusicBee CSV source file path. By default if not passed, will look for a file named MusicBee_Export.csv
in the same folder as musicbee-navidrome-sync.exe
--datetime-format <format>
: MusicBee CSV datetime format. Default: "DD/MM/YYYY HH:mm"
. Use available formats from https://day.js.org/docs/en/display/formatUpdates all albums playcounts and ratings based on existing Navidrome DB.
Updates all artists playcounts and ratings based on existing Navidrome DB
All commands have these options available:
--db <path>
: Navidrome SQLITE .db source file path. By default if not passed, will look for a file named navidrome.db
in the same folder as musicbee-navidrome-sync.exe
-u, --user <user_name>
: selects Navidrome username (by default if not used, the first found user will be used)--verbose
: verbose debugging-h, --help
: displays help for commandbackups
folder everytime you run a commandMaybe build it as a .exe GUI ? If you have any enhancements suggestions, don't hesitate!
If you found this tool useful, if it saved you some time, you can buy me a coffee !
I'm more of a tea (or beer >_>) drinker, but I can appreciate a good coffee too.