Skip to content

Releases: linuxserver/docker-beets

nightly-8b3f1fb5-ls293

01 Jun 20:18
2c490a9

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-8b3f1fb5-ls293/index.html

LinuxServer Changes:

No changes

Remote Changes:

refactor: Pytest based setup for test_library (#6677)

Description

This PR is a refactor of test/test_library.py and replaces the unitest
test cases with a pytest setup. Also replaced capture_log with caplog
fixture.

Needs rebasing after beetbox/beets#6659 is
merged.

TODOs:

  • Changelog Not needed as this is an internal refactor only

This is related to the multi-step efforts to improve logging in beets
beetbox/beets#6553

nightly-52a7ba68-ls293

01 Jun 09:25
2c490a9

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-52a7ba68-ls293/index.html

LinuxServer Changes:

Full Changelog: nightly-10e13c99-ls292...nightly-52a7ba68-ls293

Remote Changes:

spotify: batch spotifysync DB commit (#6673)

This is a follow-up to #6485. Currently spotifysync:

  • batches Spotify HTTP requests, but still stores each item individually
  • writes to the DB before writing tags
  • logs Audio features API unavailable, skipping once per remaining item
    after a 403

This makes logs noisy and causes unnecessary DB commit overhead.

This PR :

  • keeps the existing batched Spotify API fetches
  • batches spotifysync database persistence into a single outer DB
    transaction per run
  • aligns spotifysync with the normal beets write-before-store pattern
  • suppresses repeated per-item audio-features unavailability log spam

Actual logs before fix (masked):

$ beet -v spotifysync -f album:"ALBUM"
...
spotify: Total 5 tracks
spotify: Processing 1/5 tracks - <Album A> - <Track 1>
spotify: Processing 2/5 tracks - <Album A> - <Track 2>
spotify: Processing 3/5 tracks - <Album A> - <Track 3>
spotify: Processing 4/5 tracks - <Album A> - <Track 4>
spotify: Processing 5/5 tracks - <Album A> - <Track 5>
spotify: Audio features API is unavailable (403 error). Skipping audio features for remaining tracks.
spotify: Audio features API unavailable, skipping
Sending event: database_change
Sending event: write
Sending event: after_write
spotify: Audio features API unavailable, skipping
Sending event: database_change
Sending event: write
Sending event: after_write
spotify: Audio features API unavailable, skipping
Sending event: database_change
Sending event: write
Sending event: after_write
spotify: Audio features API unavailable, skipping
Sending event: database_change
Sending event: write
Sending event: after_write
spotify: Audio features API unavailable, skipping
Sending event: database_change
Sending event: write
Sending event: after_write

Logs after fix (masked)):

$ beet -v spotifysync -f album:"ALBUM"
...
spotify: Total 5 tracks
spotify: Processing 1/5 tracks - <Album A> - <Track 1>
spotify: Processing 2/5 tracks - <Album A> - <Track 2>
spotify: Processing 3/5 tracks - <Album A> - <Track 3>
spotify: Processing 4/5 tracks - <Album A> - <Track 4>
spotify: Processing 5/5 tracks - <Album A> - <Track 5>
spotify: Audio features API is unavailable (403 error). Skipping audio features for remaining tracks.
Sending event: write
Sending event: after_write
Sending event: write
Sending event: after_write
Sending event: write
Sending event: after_write
Sending event: write
Sending event: after_write
Sending event: write
Sending event: after_write
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
  • Changelog. (Add an entry to docs/changelog.rst to the bottom of
    one of the lists near the top of the document.)
  • Tests. (Very much encouraged but not strictly required.)

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.