minidlna-scrobble

command module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 11, 2025 License: GPL-3.0 Imports: 1 Imported by: 0

README

minidlna-scrobble

Go Report Card

A last.fm scrobbler for minidlna (ReadyMedia)

Overview

This application will watch the minidlna log file for writes and scrobble plays to last.fm.

For this to work, you must set the log level of minidlna to info or below in its config file. The relevant line in /etc/minidlna is:

log_level=general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=info
Building

To build the application, run go build with the following options:

mkdir -p ./bin && \
go build -ldflags='-s -w -extldflags "-static"' -o ./bin/minidlna-scrobble ./main.go

If you happen to have go-task installed, a Taskfile.yml file is included to automate the process. Just run:

task build

or

go-task build
Logging and log level

Everything is logged to stderr, which you can easily redirect to any other file of your liking.

minidlna-scrobble [command] 2>>app.log

Every command can be assigned a log level (the default is error). The levels are arranged in a hierarchical structure. The application will log all events above and including the chosen level.

The possible levels, in ascending order, are: trace, debug, info, warn, error, fatal, panic.

To choose a level other than the default, pass it through a command line flag:

minidlna-scrobble --log-level=info [command]

or with a shorthand flag

minidlna-scrobble -l info [command]
Environment setup

Set your XDG_CONFIG_HOME and XDG_CACHE_HOME environment variables to writable locations.

export XDG_CONFIG_HOME="$HOME/.config"
export XDG_CACHE_HOME="$HOME/.cache"

You must give the application read access to the minidlna database, usually stored at /var/cache/minidlna/files.db, by adding the application user to the minidlna group.

sudo gpasswd -a username minidlna
Authenticating with last.fm
  1. Apply for an API account, here (Name and description are the only required fields)
  2. You'll receive an API key and a shared secret, take note of them.
  3. Write app configuration at $XDG_CONFIG_HOME/minidlna-scrobbler/config.json
{
  "db_file": "/var/cache/minidlna/files.db",
  "log_file": "/var/log/minidlna/minidlna.log",
  "credentials": {
    "api_key": "provided_api_key",
    "shared_secret": "provided_shared_secret"
  }
}
  1. Run the application auth command, and follow instructions to authorize your last.fm session
minidlna-scrobble auth
Scrobbling

Run the application with the scrobble command to start scrobbling, there are multiple ways to do this but using systemd is the recommended approach. Here's an example service file that you can modify to your liking or use as-is:

[Unit]
Description=Scrobble to last.fm from minidlna log files
After=network.target

[Service]
Type=simple
User=username
Group=username
WorkingDirectory=/usr/local/bin
ExecStart=/usr/local/bin/minidlna-scrobble --log-level=info scrobble
Restart=on-failure

# These must be writable by the "username" user
Environment=XDG_CONFIG_HOME=/home/username/.config
Environment=XDG_CACHE_HOME=/home/username/.cache

[Install]
WantedBy=multi-user.target
Notes
  • The application requires go >= 1.23 to compile.
  • The application assumes Linux is the underlying operating system and is therefore not portable. There are no guarantees it'll work on other Unix-like operating systems, and there are no guarantees whatsoever for Windows.
Licensing

This application is free software, licensed under the terms of the GNU GPL v3 license.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL