Skip to main content

Last.fm scrobbler via MPRIS2 in Linux

Project description

🎵 Last.fm scrobbler

A Last.fm scrobbler via MPRIS2 in Linux, implemented via pylast and mpris2

Modified based on dbus-scrobbler

Features

  • scrobble music to Last.fm if one of the conditions are met:

    • played for 4 mins
    • played for half the length
  • update now playing status

  • offline scrobble cache support

What is MPRIS2?

MPRIS (Media Player Remote Interfacing Specification) is a standard D-Bus (Desktop Bus) interface that allows applications to communicate with and control media players running on a Linux desktop environment.

Thus, this scrobbler is a general-purpose one under the Linux desktop environment, supporting scrobble music from media players without a built-in Last.fm scrobbling feature.

Check if your media player supports MPRIS2 via (make sure the player is running):

lastfm-mpris2-scrobbler --list-players

The uri names of players will be shown

Installation

Prerequisite libraries: libglib2.0-dev and libdbus-1-dev, as mentioned in this issue

There're two options available now:

  • grab the stand-alone binary from release page

  • or, via PyPI

    pip install lastfm-mpris2-scrobbler
    

Configurations

The program expects a config.yaml file and can be placed wherever you like, for example ~/.config/lastfm-mpris2-scrobbler/

Example and detailed information can be found in config.yaml.example:

# username for that service
user_name: foo

# md5 hash of your password (obtained via `echo -n password | md5sum`)
password_hash: abc123492abccf4f1997f7ccaabc123b

# last.fm api, which can be created via https://www.last.fm/api/account/create
api_key: 11111111111111111111111111111111
api_secret: 11111111111111111111111111111111

# the app's uri you want to scrobble
# use `lastfm-mpris2-scrobbler --list-players` to check the uri name
application_whitelist: [ "org.mpris.MediaPlayer2.harmonoid" ]
# by default, scrobbler will upload if the track has been played for 4 * 60 seconds or half the total length
scrobble_time_threshold: 240

# app's log level
log_level: DEBUG

Usage

lastfm-mpris2-scrobbler -c PATH_TO_YOUR_CONFIG/config.yaml

For more options, see:

lastfm-mpris2-scrobbler --help

If you want to run it as a daemon service, here's a systemd service in user space for reference:

[Unit]
Description=Last.fm scrobbler via MPRIS2
Documentation=https://github.com/Ladbaby/lastfm-scrobbler

[Service]
ExecStart=PATH_TO_YOUR_BIN/lastfm-mpris2-scrobbler -c PATH_TO_YOUR_CONFIG/config.yaml

[Install]
WantedBy=default.target

You'll have to place the service file under ~/.config/systemd/user/ and name it like scrobbler.service

To run the daemon:

systemctl --user start scrobbler.service

To run at user login:

systemctl --user enable scrobbler.service

Alternatives

If you'd like a scrobbler similar to this, there're some choices. I recommand taking a look at scrobblez. It additionally provides Spotify related improvement, but doesn't provide stand-alone binary build for installation.

Also, although rescrobbled may also work, in my case it raised "Dbus error: argument type mismatch".

Known Issues

  • If the music title contains unwanted substring (like .mp3), then Last.fm won't accept the scrobble

    The program can now remove some of the unwanted substrings, including:

    • .mp3
    • .ogg
    • .wav
    • .acc
    • .flac

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lastfm_mpris2_scrobbler-1.0.6.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lastfm_mpris2_scrobbler-1.0.6-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file lastfm_mpris2_scrobbler-1.0.6.tar.gz.

File metadata

  • Download URL: lastfm_mpris2_scrobbler-1.0.6.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for lastfm_mpris2_scrobbler-1.0.6.tar.gz
Algorithm Hash digest
SHA256 e0c92425fbaddbf06e8ab88c67c37c389fbc2a5f0d7950bade2150b595cf6154
MD5 20f38ab6187c10b70e1cd4d7235ab3d9
BLAKE2b-256 b558b5a520a3c450ce51fd7c96ed5ae07c77563687cb43173a2116d15a132bed

See more details on using hashes here.

File details

Details for the file lastfm_mpris2_scrobbler-1.0.6-py3-none-any.whl.

File metadata

File hashes

Hashes for lastfm_mpris2_scrobbler-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 e52c51ac8e5e6bdf82c59d270754b566995a71fcca598a3b6a5272efc307d0a0
MD5 e48bd08fa6f546a313d3ac4c7317626a
BLAKE2b-256 1c0c9b3f824978ddfc07fcfa8cf53ee75f61c0900dd25cc4a6e5c2a611e9fee0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page