Skip to content

fetchart: "no art found" when filesystem is only source #6336

@stephanmax

Description

@stephanmax

I am super confused as I haven’t changed anything recently, but today beets stopped finding local cover art with fetchart. My use case is the following: I download my own cover art, put it next to the files I want to import as cover.jpg, and use fetchart with sources: filesystem to set artpath and then embedart to include my local file in my mp3 tags. cover.jpg should be moved with the music files to my library.

That has worked flawlessly for months.

Problem

Running this command in verbose (-vv) mode:

$ beet -vv fetchart album:=<album_name>

Led to this problem:

user configuration: /home/stephan/.config/beets/config.yaml
data directory: /home/stephan/.config/beets
plugin paths: []
Loading plugins: convert, duplicates, embedart, fetchart, info, inline, mbsync, musicbrainz, permissions, scrub, web, zero
fetchart: lastfm: Disabling art source due to missing key
fetchart: google: Disabling art source due to missing key
artresizer: method is ImageMagick
inline: adding item field multidisc
Sending event: pluginload
library database: /home/stephan/.config/beets/library.db
library directory: /home/stephan/nas/pub/music
Sending event: library_opened
Parsed query: AndQuery([MatchQuery('album', 'Breach', fast=True)])
Parsed sort: NullSort()
fetchart: <artist_name> - <album_name>: no art found
Sending event: cli_exit

Setup

  • OS: Linux Arch 6.18.5
  • Python version: 3.14.2
  • beets version: 2.5.1
  • Turning off plugins made problem go away (yes/no): no

But what made the problem go away was changing this bit of config:

fetchart:
  sources: filesystem
  enforce_ratio: yes
  minwidth: 1000

into this:

fetchart:
  sources:
    - filesystem
  enforce_ratio: yes
  minwidth: 1000

As if the sources field wasn’t parsed correctly. I looked into the code of fetchart quickly and noticed that it is using Confuse’s as_pairs to parse the sources config field, as opposed to as_str_seq() other plugins are using. But it has been that way for years. Are there any other side effects in recent changes or am I missing something here?

My configuration (output of beet config) is:

directory: ~/nas/pub/music

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

plugins: musicbrainz fetchart embedart convert info zero convert scrub inline permissions web duplicates mbsync

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

per_disc_numbering: yes
item_fields:
    multidisc: 1 if disctotal > 1 else 0
paths:
    default: $albumartist/$album%aunique{}/%if{$multidisc,$disc}$track $title
    comp: Various Artists/$album%aunique{}/%if{$multidisc,$disc}$track $title

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

path_sep_replace: '-'
replace:
    w-: w
    "b\u2013w": bw
    ': ': " \u2013 "
    ':': "\u2013"
    '[\?\!]': ''
    '[\\/]': '-'
    \.$: ''
    ' \.': ' '

import:
    move: yes
    languages: en de
fetchart:
    sources: [filesystem]
    enforce_ratio: yes
    minwidth: 1000
    auto: yes
    maxwidth: 0
    quality: 0
    max_filesize: 0
    cautious: no
    cover_names:
    - cover
    - front
    - art
    - album
    - folder
    store_source: no
    high_resolution: no
    deinterlace: no
    cover_format:
    google_key: REDACTED
    google_engine: REDACTED
    fanarttv_key: REDACTED
    lastfm_key: REDACTED
embedart:
    maxwidth: 1000
    quality: 75
    auto: yes
    compare_threshold: 0
    ifempty: no
    remove_art_file: no
zero:
    fields: copyright comments encoder
    auto: yes
    keep_fields: []
    update_database: no
    omit_single_disc: no
convert:
    auto: yes
    never_convert_lossy_files: yes
    dest: ~/nas/pub/music
    format: mp3
    formats:
        mp3: ffmpeg -i $source -y -ab 320k $dest
        aac:
            command: ffmpeg -i $source -y -vn -acodec aac -aq 1 $dest
            extension: m4a
        alac:
            command: ffmpeg -i $source -y -vn -acodec alac $dest
            extension: m4a
        flac: ffmpeg -i $source -y -vn -acodec flac $dest
        opus: ffmpeg -i $source -y -vn -acodec libopus -ab 96k $dest
        ogg: ffmpeg -i $source -y -vn -acodec libvorbis -aq 3 $dest
        wma: ffmpeg -i $source -y -vn -acodec wmav2 -vn $dest
    pretend: no
    link: no
    hardlink: no
    threads: 16
    id3v23: inherit
    write_metadata: yes
    max_bitrate:
    auto_keep: no
    tmpdir:
    quiet: no
    embed: yes
    paths: {}
    no_convert: ''
    copy_album_art: no
    album_art_maxwidth: 0
    delete_originals: no
    playlist:
permissions:
    file: 644
    dir: 755
disabled_plugins: []
musicbrainz:
    search_limit: 5
    data_source_mismatch_penalty: 0.5
    host: musicbrainz.org
    https: no
    ratelimit: 1
    ratelimit_interval: 1
    genres: no
    external_ids:
        discogs: no
        bandcamp: no
        spotify: no
        deezer: no
        tidal: no
    extra_tags: []
scrub:
    auto: yes
pathfields: {}
album_fields: {}
web:
    host: 127.0.0.1
    port: 8337
    cors: ''
    cors_supports_credentials: no
    reverse_proxy: no
    include_paths: no
    readonly: yes
duplicates:
    album: no
    checksum: ''
    copy: ''
    count: no
    delete: no
    format: ''
    full: no
    keys: []
    merge: no
    move: ''
    path: no
    tiebreak: {}
    strict: no
    tag: ''
    remove: no

So this is not urgent, as I seem to have found a solution. But I am always wary when configs that have worked for a long time stop working out of a sudden. Let me know whether I can help with fixing this, if this is the symptom of an issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions