Skip to content

Configuration

Flaze edited this page Dec 3, 2025 · 22 revisions

An example configuration file can be viewed here.

[scrobbler]

The scrobbler configuration (required)

  • user_id (required)

    • Your osu! user ID
    • e.g. 8834263
  • mode

    • The osu! mode to scrobble
    • Possible values: "default", "osu", "taiko", "fruits", "mania"
    • Default: "default"
  • use_original_metadata

    • Whether to use original metadata instead of romanized metadata
    • Default: true
  • fetch_album_names

    • Whether to try to fetch album names from MusicBrainz. Do note that the album name might be inaccurate
    • Default: false
  • min_beatmap_length_secs

    • The minimum beatmap length to scrobble (in seconds)
    • Default: 60
  • scrobble_fails

    • Whether to scrobble failed plays. On osu!lazer, the failed duration must at least be 50% of the entire beatmap or 4 minutes
    • Default: false
  • log_scrobbles

    • Whether to log scrobbles to a file
    • Default: false

[scrobbler.redirects.artists]

Artists to redirect to when scrobbling

  • equal_matches

    • A list of tuples that contain the old and new artist names to replace with before scrobbling (case-insensitive)
    • Example: [["96猫", "Kuroneko"], ["ツユ", "TUYU"]]
  • regex_matches

    • A list of tuples that contain a regex pattern and replacer string to replace artists with before scrobbling (case-insensitive)
    • Example: [["(.+) feat\\. ななひら", "Nanahira"], ["(.+) feat\\. .+", "$1"]]

Note

The regex patterns should account for the original metadata instead of the romanized metadata, unless use_original_metadata is set to false.

Note

Put more ambiguous regex patterns last, since the program replaces the regex patterns from top to bottom, using the previously-replaced string as the text.

Tip

Specific regex captures can be made case-sensitive by using (?-i:expr), e.g., ["case-insensitive here (?-i:case-sensitive here) back to case-insensitive", "replacer"].

[scrobbler.redirects.titles]

Titles to redirect to when scrobbling

  • equal_matches

    • A list of tuples that contain the old and new titles to replace with before scrobbling (case-insensitive)
    • Example: [["会心の一撃", "Kaishin no Ichigeki"], ["デモーニッシュ", "Dämonisch"]]
  • regex_matches

    • A list of tuples that contain a regex pattern and replacer string to replace titles with before scrobbling (case-insensitive)
    • Example: [["(.+) \\(TV Size\\)", "$1"], ["(.+) \\(.+ Remix\\)", "$1"]]

Note

The regex patterns should account for the original metadata instead of the romanized metadata, unless use_original_metadata is set to false.

Note

Put more ambiguous regex patterns last, since the program replaces the regex patterns from top to bottom, using the previously-replaced string as the text.

Tip

Specific regex captures can be made case-sensitive by using (?-i:expr), e.g., ["case-insensitive here (?-i:case-sensitive here) back to case-insensitive", "replacer"].

[scrobbler.blacklist.artists]

Artists to blacklist from scrobbling

  • equal_matches

    • A list of artists to blacklist (case-insensitive)
  • regex_matches

    • A list of regex pattern strings to blacklist (case-insensitive)

Tip

Specific regex captures can be made case-sensitive by using (?-i:expr), e.g., ["case-insensitive here (?-i:case-sensitive here) back to case-insensitive"].

[scrobbler.blacklist.titles]

Titles to blacklist from scrobbling

  • equal_matches

    • A list of titles to blacklist (case-insensitive)
  • regex_matches

    • A list of regex pattern strings to blacklist (case-insensitive)

Tip

Specific regex captures can be made case-sensitive by using (?-i:expr), e.g., ["case-insensitive here (?-i:case-sensitive here) back to case-insensitive"].

[scrobbler.blacklist.difficulties]

Difficulties to blacklist from scrobbling

  • equal_matches

    • A list of difficulties to blacklist (case-insensitive)
  • regex_matches

    • A list of regex pattern strings to blacklist (case-insensitive)

Tip

Specific regex captures can be made case-sensitive by using (?-i:expr), e.g., ["case-insensitive here (?-i:case-sensitive here) back to case-insensitive"].

[last_fm]

The Last.fm configuration (required, but optional if you're already using at least one other scrobbler)

  • username (required)

    • Your Last.fm username
  • password (required)

    • Your Last.fm password
  • api_key (required)

    • Your Last.fm API key
  • api_secret (required)

    • Your Last.fm API secret

[listenbrainz]

The ListenBrainz configuration (required, but optional if you're already using at least one other scrobbler)

  • user_token (required)

    • Your ListenBrainz user token