Skip to content

Releases: linuxserver/docker-beets

2.11.0-ls333

29 May 20:56
1d72ee1

Choose a tag to compare

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/2.11.0-ls333/index.html

LinuxServer Changes:

Full Changelog: 2.11.0-ls332...2.11.0-ls333

Remote Changes:

Updating PIP version of beets to 2.11.0

nightly-2efc80bc-ls292

29 May 17:38
40d9ec9

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-2efc80bc-ls292/index.html

LinuxServer Changes:

No changes

Remote Changes:

fetchart: catch OSError in _set_art for graceful permission error handling (#6662)

## Problem

When fetchart moves album art to the destination folder, a
PermissionError
(or other OSError) can crash beets with an unhandled traceback. This
happens
when a file is locked by another process, such as foobar2000 scanning
the folder
during import.

Example traceback from #6193:

PermissionError: [WinError 32] The process cannot access the file because it is being used by another process

Fix

Wrap album.set_art() in a try/except OSError block inside
_set_art.
On failure, log a warning and return False instead of crashing. The
batch_fetch_art CLI path now checks the return value and reports
"error writing album art" instead of a traceback.

Changes

  • beetsplug/fetchart.py: _set_art now returns bool; catches
    OSError with a warning log
  • test/plugins/test_fetchart.py: new test
    test_set_art_oserror_is_handled_gracefully verifies graceful handling
    when Album.set_art raises PermissionError
  • docs/changelog.rst: bug fix entry added

Fixes #6193

nightly-10e13c99-ls292

29 May 10:55
40d9ec9

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-10e13c99-ls292/index.html

LinuxServer Changes:

Full Changelog: nightly-05011323-ls291...nightly-10e13c99-ls292

Remote Changes:

Moved PytestPluginTestHelper class into test_helper. (#6658)

This PR moved the PytestPluginTestHelper which was duplicated in quite
a few test files into the beets/test/helper.py file.

nightly-0600d4ea-ls291

24 May 14:41
d2f3c13

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-0600d4ea-ls291/index.html

LinuxServer Changes:

Full Changelog: nightly-26ab08bf-ls290...nightly-0600d4ea-ls291

Remote Changes:

Move path formats and replacements logic into Library and shared util (#6647)

This PR moves path format and replacement retrieval out of beets.ui
into library/shared utilities.

Changes

  • Added beets/util/pathformats.py with PF_KEY_DEFAULT,
    PF_KEY_QUERIES, and get_path_formats(subview).
  • Added Library.path_formats and Library.replacements as
    cached_property values derived from config.
  • Removed UI-owned get_path_formats/get_replacements and simplified
    _open_library() to construct Library without passing those values.
  • Updated consumers (beets/library/models.py, beetsplug/bench.py,
    beetsplug/convert.py) to use the shared path-format utility.
  • Refactored convert destination path calls through
    ConvertPlugin.get_item_destination.
  • Replaced redundant UI tests with focused coverage in
    test/util/test_pathformats.py.
  • Updated .git-blame-ignore-revs.

Why

  • Keeps path/replacement behavior close to library internals instead of
    CLI orchestration.
  • Preserves layered paths defaults by iterating config via Confuse
    items().
  • Reduces duplication in convert destination handling.

nightly-05011323-ls291

27 May 20:04
d2f3c13

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-05011323-ls291/index.html

LinuxServer Changes:

No changes

Remote Changes:

Add py typed to beetsplug (#6670)

PR Summary

This change adds beetsplug/py.typed to mark beetsplug as a typed
Python package under PEP 561.

High-level impact

  • Tells type checkers that beetsplug ships type information.
  • Improves typing support for code that imports beetsplug (for
    example, beetcamp).
  • Has no runtime or architecture changes beyond package metadata.

2.11.0-ls332

22 May 20:32
af6c2fc

Choose a tag to compare

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/2.11.0-ls332/index.html

LinuxServer Changes:

Full Changelog: 2.11.0-ls331...2.11.0-ls332

Remote Changes:

Updating PIP version of beets to 2.11.0

nightly-da16db11-ls290

22 May 13:36
6ba54fc

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-da16db11-ls290/index.html

LinuxServer Changes:

Full Changelog: nightly-6dd62516-ls289...nightly-da16db11-ls290

Remote Changes:

docs: adding beets-getlrc to the 'other plugins' list (#6664)

Description

I added a plugin i made to the docs (index.rst). I made sure to add a
link to my github repo for the project. Nothing else was changed.

nightly-96575856-ls290

23 May 23:51
6ba54fc

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-96575856-ls290/index.html

LinuxServer Changes:

No changes

Remote Changes:

library: include path and reason in ReadError/WriteError messages (#6645)

ReadError.__str__ and WriteError.__str__ put super() straight into
an f-string, so a failed read or write printed error reading <super: <class 'ReadError'>, <ReadError object>> and the actual path and reason
were lost. Calling super().__str__() returns the FileOperationError
message with the path and underlying reason. The reported beet import
case now logs the file path and the failure reason.

Fixes #6560.

nightly-26ab08bf-ls290

24 May 01:58
6ba54fc

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-26ab08bf-ls290/index.html

LinuxServer Changes:

No changes

Remote Changes:

listenbrainz: add option to import listens from ListenBrainz data export zip (#6606)

Since importing listens from the API is rather slow and puts unnecessary
load on the servers, importing a dump exported from
https://listenbrainz.org/settings/export/ should also be possible. This
change introduces the export-file parameter to the lbimport command,
which takes all listens from the zipfile to update the play counts.

I also fixed an issue where mbid_mapping could be None if explicitly
set to null in the JSON (which happens for these exports sometimes),
and changed the recording mbid logic to prefer one explicitly supplied
by the player in the additional_data, instead of relying on the
(sometimes inaccurate) mapper.

Since the --max parameter isn't documented either, I'm unsure whether
I should add the parameter to the plugin docs. In theory, the --help
parameter already tells you enough.

I'm also not sure if the --max parameter should apply to exported
files, especially since the order of zip file entries isn't
deterministic.

nightly-6dd62516-ls289

21 May 16:48
7b5661a

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-6dd62516-ls289/index.html

LinuxServer Changes:

Full Changelog: nightly-4746d852-ls288...nightly-6dd62516-ls289

Remote Changes:

Fix album modify splitting multi-value field strings into individual characters (#6653)

Fixes #5690

Problem

When running beet mod -a artists=Charli XCX in album mode, the
artists tag value gets split into individual characters on disk. Item
mode (beet mod without -a) works correctly.

Root Cause

  1. Album._type(artists) returns DEFAULT (artists is not an Album
    fixed field), so Album._parse returns a plain string.
  2. When Album.store() propagates to items,
    MULTI_VALUE_DSV.normalize(value) falls through to model_type(value)
    = list(value), splitting the string into characters.

Fix

  1. DelimitedString.normalize (types.py): Handle string input by
    parsing it (splitting by delimiter if present) instead of list(). This
    prevents character-level splitting.
  2. Model._type (db.py): Fall back to the related models field
    definitions so multi-value types (e.g. MULTI_VALUE_DSV for artists)
    are recognized on both Album and Item models.