Skip to main content

Scrobbler for MPRIS 2 compatible clients

Project description

scrobblez

License: MIT

User-customizable scrobbler for Last.fm and MPRIS 2.

This scrobbler cleans up metadata (e.g. artist, album, track titles) produced by services with non-standard tagging schemes (e.g. Spotify). The cleaning process is extensible and can be customized to a user's particular needs.

Install

Install from PyPI:

pip install scrobblez

Or install from source:

git clone https://github.com/YodaEmbedding/scrobblez
cd scrobblez
pip install .

Usage

Simply run the following command:

scrobblez

Configuration

Within ~/.config/scrobblez/config.py, you may specify a whitelist of valid player names:

whitelist = ["spotify"]

Optionally, you can also customize the metadata cleaning process:

from scrobblez.metadata_filter import *
from scrobblez.types import Metadata

def fix_metadata(metadata: Metadata) -> Metadata:
    m = dict(metadata)

    # Keep first artist only in list of artists
    m["artist"] = m["artist"][0]
    m["album_artist"] = m["album_artist"][0]

    # Specify which filter rules to use
    rules = (
        REMASTERED_FILTER_RULES
        + SUFFIX_FILTER_RULES
        + VERSION_FILTER_RULES
        + ORIGIN_FILTER_RULES
        + FEATURE_FILTER_RULES
        + CLEAN_EXPLICIT_FILTER_RULES
        + LIVE_FILTER_RULES
        + TRIM_WHITESPACE_FILTER_RULES
    )

    # Specify manual artist/album/title overrides
    artist_overrides = {
        "Yusuf": "Cat Stevens",
        "Yusuf / Cat Stevens": "Cat Stevens",
    }

    album_overrides = {
        "The Lord of the Rings - The Return of the King - "
        "The Complete Recordings (Limited Edition)":
        "The Lord of the Rings: Return of the King - the Complete Recordings",
    }

    title_overrides = {
        "Better Get Hit In Your Soul - Instrumental":
        "Better Git It in Your Soul",
    }

    def fix(k, overrides, f=lambda x: x):
        m[k] = overrides.get(m[k], f(m[k]))

    # Apply fixes
    fix("artist", artist_overrides)
    fix("album_artist", artist_overrides)
    fix("album", album_overrides, lambda x: apply_filters(rules, x))
    fix("title", title_overrides, lambda x: apply_filters(rules, x))

    return m

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

scrobblez-0.1.1.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

scrobblez-0.1.1-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file scrobblez-0.1.1.tar.gz.

File metadata

  • Download URL: scrobblez-0.1.1.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for scrobblez-0.1.1.tar.gz
Algorithm Hash digest
SHA256 681e3a48036a49bde92f5d63ed6b4b7085ed64241c58834ae08c6bb6169bd87d
MD5 3a6b7eb09855c160f72d1ebb26489f5b
BLAKE2b-256 1e91b72873b29c8ae23113239b2f6201626c19d578b632bc11be683ac10ac7c0

See more details on using hashes here.

File details

Details for the file scrobblez-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: scrobblez-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for scrobblez-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5f789c4c78184bce813eb58d39246181dba3d4eba1b89d40038e033a55e1001b
MD5 62636bd329707a7063df32aca1c0ce08
BLAKE2b-256 6c584cb80b344fa50e2fc3fd870f55699c7e1f295a2027a727872ae10337c238

See more details on using hashes here.

Supported by

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