#mpd #listen-brainz #song #platform #scrobbler #sending #configuration

app mpdlisten

MPD scrobbler for listenbrainz platform, with some additional features

3 releases (breaking)

0.5.0 Apr 4, 2024
0.4.0 Dec 19, 2023
0.3.0 Nov 28, 2023

#124 in Audio

Download history 13/week @ 2024-02-12 2/week @ 2024-02-19 19/week @ 2024-02-26 129/week @ 2024-04-01 8/week @ 2024-04-08

133 downloads per month

GPL-3.0 license

788 lines


MPD scrobbler for listenbrainz platform.

This project is in very early stages so expect lots of changes. Also it mainly expects you to use beets or similar program to tag your music beforehand. It will try to match the song anyway but it will not cache the results in anyway so it is not ideal.

If you need more mature solution (with less ListenBrainz specific features) use listenbrainz-mpd.


  • Submission of now playing songs
  • Ability to submit feedback for your songs (Love/Hate)
  • Sync weekly exploration/jams playlist that are automatically generated
  • Create new exploration playlist on ListenBrainz that contains only the songs you don't already have in your library
  • Sync loved songs from ListenBrainz into local playlist
  • Basic support for matching your songs with MusicBrainz IDs

Installing mpdlisten

Currently there are two ways to install mpdlisten.

Install with Cargo

cargo install mpdlisten

Install with Nix flakes

This project contains nix flake so you can install it with nix run git+https://codeberg.org/anriha/mpdlisten

or you can add it as a module to your nixos configuration.

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    mpdlisten.url = "git+https://codeberg.org/anriha/mpdlisten";

  outputs = { nixpkgs, mpdlisten, ... }: {
    nixosConfigurations."«hostname»" = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [ mpdlisten.nixosModules.x86_64-linux.mpdlisten ];

And after that you can enable it in your configuration like this

  services.mpdlisten = {
    enable = true;
    listenbrainz = {
      tokenFile = "«tokenFile»";
      username = "«username»";
      fetchJams = true;
      fetchExploration = true;
      syncLoved = true;


To configure if you are not using nix. Use default config location, on Linux this would be $XDG_CONFIG_HOME/mpdlisten/mpdlisten.ini or you can manually specify configuration file with command line -c location/mpdlisten.ini.

To understand configuration file please take a look at the sample one.

Sending feedback

You can send ListenBrainz feedback with mpd channels. Easiest way is with mpc mpc sendmessage mpdlisten love mpc sendmessage mpdlisten hate


~430K SLoC