Skip to content

albumartists separator is \NULL #5750

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
T-o-m-H-u opened this issue Apr 23, 2025 · 2 comments
Open

albumartists separator is \NULL #5750

T-o-m-H-u opened this issue Apr 23, 2025 · 2 comments

Comments

@T-o-m-H-u
Copy link

T-o-m-H-u commented Apr 23, 2025

The separator in the albumartists tag is handled as \␀.

Picard and ffprobe show the correct ; in the tag.

I can handle the separated fields like so.
%first{${albumartists},2,0,\␀,---}
The docs imply ; as the correct separator though.

Running this command in verbose (-vv) mode:

$ beet -vv list -a sonicw
Parsed query: AndQuery([AnyFieldQuery('sonicw', ('album', 'albumartist', 'genre'), SubstringQuery)])
Parsed sort: NullSort()
上原ひろみ\␀Sonicwonder - 2023 - Sonicwonderland
Sending event: cli_exit

Setup

  • OS: arch
  • Python version: Python 3.13.3
  • beets version: beets 2.2.0-1
  • Turning off plugins made problem go away (yes/no): no
$  beet --plugins= version
beets version 2.1.0
Python version 3.13.3
no plugins loaded

My configuration (output of beet config) is:

# --------------- Main ---------------

library: library.db
directory: ~/Musik
statefile: state.pickle

# --------------- Plugins ---------------

plugins: []
pluginpath: []

# --------------- Import ---------------

clutter: [Thumbs.DB, .DS_Store]
ignore:
- .*
- '*~'
- System Volume Information
- lost+found
ignore_hidden: yes

import:
    write: yes
    copy: yes
    move: no
    timid: no
    quiet: no
    log:
    default_action: apply
    languages: []
    quiet_fallback: skip
    none_rec_action: ask
    link: no
    hardlink: no
    reflink: no
    delete: no
    resume: ask
    incremental: no
    incremental_skip_later: no
    from_scratch: no
    autotag: yes
    singletons: no
    detail: no
    flat: no
    group_albums: no
    pretend: no
    search_ids: []
    duplicate_keys:
        album: albumartist album
        item: artist title
    duplicate_action: ask
    duplicate_verbose_prompt: no
    bell: no
    set_fields: {}
    ignored_alias_types: []
    singleton_album_disambig: yes

# --------------- Paths ---------------

path_sep_replace: _
drive_sep_replace: _
asciify_paths: no
art_filename: cover
max_filename_length: 90
replace:
    "[\\[\\]\\(\\)\\.\\?\\!\\*\\|\\+\\=\\,\\#~\xA7<>:]": ''
    \&: ''
    \": _
    '[\\/]': ''
    ^\.: ''
    \.$: ''
    '[\x00-\x1f]': ''
    ^-: ''
    _$: ''
    \s+$: ''
    ^\s+: ''
    \s: _
    \': "\u2019"
    -{3}$: ''

aunique:
    keys: albumartist album
    disambiguators: catalognum albumtype year label albumdisambig releasegroupdisambig
    bracket: "\u2014"

sunique:
    keys: artist title
    disambiguators: year trackdisambig
    bracket: "\u2014"

# --------------- Tagging ---------------

per_disc_numbering: yes
original_date: yes
artist_credit: no
id3v23: no
va_name: Various Artists
paths:
    default: "%first{${albumartists},1,0,\\\u2400,\\;}/${year}---$album---${catalognum}/${disc}-${track}---${title}"
    singleton: Non-Album/$genre/$artist_-_$title
    comp: Compilations/$genre/$album%aunique{}/$track_-_$title

# --------------- Performance ---------------

threaded: yes
timeout: 5.0

# --------------- UI ---------------

verbose: 0
terminal_encoding:

ui:
    terminal_width: 80
    length_diff_thresh: 10.0
    color: yes
    colors:
        text_success: [bold, green]
        text_warning: [bold, yellow]
        text_error: [bold, red]
        text_highlight: [bold, red]
        text_highlight_minor: [white]
        action_default: [bold, cyan]
        action: [bold, cyan]
        text: [normal]
        text_faint: [faint]
        import_path: [bold, blue]
        import_path_items: [bold, blue]
        added: [green]
        removed: [red]
        changed: [yellow]
        added_highlight: [bold, green]
        removed_highlight: [bold, red]
        changed_highlight: [bold, yellow]
        text_diff_added: [bold, red]
        text_diff_removed: [bold, red]
        text_diff_changed: [bold, red]
        action_description: [white]

    import:
        indentation:
            match_header: 2
            match_details: 2
            match_tracklist: 5
        layout: column

# --------------- Search ---------------

format_item: "%first{${albumartists},2,0,\\\u2400,--} - $year - $album - $track - $title"
format_album: $albumartists - $year - $album
time_format: '%Y-%m-%d %H:%M:%S'
format_raw_length: no

sort_album: albumartist+ original_year+ album+
sort_item: artist+ album+ disc+ track+
sort_case_insensitive: yes

# --------------- Autotagger ---------------

overwrite_null:
    album: []
    track: []
musicbrainz:
    enabled: yes
    host: musicbrainz.org
    https: no
    ratelimit: 1
    ratelimit_interval: 1.0
    searchlimit: 7
    extra_tags:
    - year
    - country
    - media
    - label
    genres: no
    external_ids:
        discogs: no
        bandcamp: no
        spotify: no
        deezer: no
        beatport: no
        tidal: no

match:
    strong_rec_thresh: 0.04
    medium_rec_thresh: 0.25
    rec_gap_thresh: 0.25
    max_rec:
        missing_tracks: medium
        unmatched_tracks: medium
    distance_weights:
        source: 2.0
        artist: 3.0
        album: 3.0
        media: 1.0
        mediums: 1.0
        year: 1.0
        country: 0.5
        label: 0.5
        catalognum: 0.5
        albumdisambig: 0.5
        album_id: 5.0
        tracks: 2.0
        missing_tracks: 0.9
        unmatched_tracks: 0.6
        track_title: 3.0
        track_artist: 2.0
        track_index: 1.0
        track_length: 2.0
        track_id: 5.0
        medium: 1.0
    preferred:
        countries: []
        media: []
        original_year: no
    ignored: []
    required: []
    ignored_media: []
    ignore_data_tracks: yes
    ignore_video_tracks: yes
    track_length_grace: 10
    track_length_max: 30
    album_disambig_fields: data_source media year country label catalognum albumdisambig
    singleton_disambig_fields: data_source index track_alt album
@snejus
Copy link
Member

snejus commented May 9, 2025

Thanks for reporting this, I had a similar issue with this NULL-based separator. I think it should ideally be configurable, and default to ; indeed. Could you point to where did you find this in the docs?

The docs imply ; as the correct separator though.

@T-o-m-H-u
Copy link
Author

It’s mentioned in the description for first. I wouldn’t think it would be necessary for it to be configurable.

%first{text}: Returns the first item, separated by ; (a semicolon followed by a space).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants