Commit graph

10341 commits

Author SHA1 Message Date
Antoine Beaupré
df2ea34183
Draft: handle file exceptions correctly in move, art_set, and move_art
This reflects the `try_write` approach will handles write failures
elegantly, by logging the error and continuing. We do the same with
`move`, `art_set` and `move_art`.

We also handle exceptions on `before_item_moved` and `art_set` plugins
hooks, the latter of which is moved *before* the file operations to
remain consistent with other hook configurations.

That might be a mistake and API-breaking change, another approach
would be to have a new `before_art_set` hook instead.

We also introduce a new hook (`move_art`) for those operations as
well.

The point of this patch is to make it possible for plugins to send a
signal (through the already FileOperationError exception) to callers
that it should skip a specific item or artwork.

This is essential to allow beets to better integrate with other
utilities like bittorrent clients which may rewrite those files. The
rationale here is that some music collections will have *parts* of
them managed by such clients in which case we should be careful not to
overwrite or move those files.

Operations like copy or hardlink are not handled by this, for that
reason. We may also want to do proper error handling for those as
well, that said, but that seems out of scope for this specific
issue (#2617).
2022-01-13 11:46:18 -05:00
Adrian Sampson
a0587e01e3
Merge pull request #4209 from beetbox/atomic-move-fix
Improved fix for Unicode mistakes in atomic move
2022-01-11 08:17:34 -08:00
Adrian Sampson
1962223c91
Merge branch 'master' into atomic-move-fix 2022-01-11 08:11:00 -08:00
Adrian Sampson
28ceda112d
Merge pull request #4227 from JOJ0/discogs_skip_untagged
discogs: Skip Discogs query on insufficiently tagged files
2022-01-10 18:53:20 -08:00
Adrian Sampson
b5762bd381
Merge branch 'master' into discogs_skip_untagged 2022-01-10 18:53:12 -08:00
Adrian Sampson
b3100415fc
Merge pull request #4229 from ybnd/pr_fix-tekstowo-scraper
Minor fixes to lyrics scrapers
2022-01-10 16:08:47 -08:00
ybnd
414760282b Remove footer text from Genius lyrics 2022-01-10 22:09:03 +01:00
ybnd
3a8520e30a Add changelog entry 2022-01-10 19:07:59 +01:00
ybnd
3f896ab281 Make Tekstowo scraper more specific 2022-01-10 19:03:36 +01:00
J0J0 T
2a53b890be Add to discogs plugin docs regarding PR #4227
- Clarify basic search behaviour in intro chapter of discogs plugin,
- and state change introduced in PR#4227 (discogs: Discogs query on
  insufficiently tagged files)
2022-01-10 09:10:21 +01:00
J0J0 T
4401de94f7 Add changelog entry for PR #4227 (discogs: Skip
Discogs query on insufficiently tagged files).
2022-01-10 08:32:32 +01:00
J0J0 T
e35c767e2c Skip Discogs query on insufficiently tagged files
- When files are missing both, album and artist tags, the Discogs metadata
  plugin sends empty information to the Discogs API which returns arbitrary
  query results.
- This patch catches this case and states it in beets import verbose output.
2022-01-10 08:27:18 +01:00
Adrian Sampson
2fea53c34d
Merge pull request #4226 from mousecloak/convert-logging-respect-quiet 2022-01-07 22:47:22 -08:00
mousecloak
438262844a
Fixed style violation 2022-01-07 21:39:19 -08:00
Adrian Sampson
c38f10e16e
Merge branch 'master' into convert-logging-respect-quiet 2022-01-07 21:34:19 -08:00
mousecloak
0132067a29
Fix @unittest.skipIf annotations to ignore only win32 2022-01-07 21:29:44 -08:00
mousecloak
ec06694097
Makes the import converter respect the quiet and pretend flags.
When the delete_originals was set, beets would print the following, regardless
of the presence of the quiet parameter:

convert: Removing original file /path/to/file.ext

This commit ensures that the log is only printed when quiet is not present.
2022-01-07 21:29:43 -08:00
Adrian Sampson
493a503397
Merge pull request #4182 from sumpfralle/patch-1
beetsplug/web: fix translation of query path
2022-01-06 14:37:19 -08:00
Lars Kruse
a09c80447a beetsplug/web: fix translation of query path
The routing map translator `QueryConverter` was misconfigured:
* decoding (parsing a path): splitting with "/" as tokenizer
* encoding (translating back to a path): joining items with "," as separator

This caused queries containing more than one condition (separated by a
slash) to return an empty result.  Queries with only a single condition
were not affected.

Instead the encoding should have used the same delimiter (the slash) for the
backward conversion.

How to reproduce:
* query: `/album/query/albumartist::%5Efoo%24/original_year%2B/year%2B/album%2B`
* resulting content in parsed argument `queries` in the `album_query` function:
    * previous (wrong): `['albumartist::^foo$,original_year+,year+,album+']`
    * new (correct): `['albumartist::^foo$', 'original_year+', 'year+', 'album+']`
2022-01-06 22:00:26 +01:00
Adrian Sampson
686838856a
Two more syspath calls 2022-01-05 16:15:39 -08:00
Adrian Sampson
bb13f37e59
Provide consistent types to NamedTemporaryFile 2022-01-03 10:16:39 -08:00
Adrian Sampson
5d0442f094
Merge pull request #4190 from patrick-nicholson/limit-plugin
Limit plugin
2021-12-27 17:01:09 -08:00
Adrian Sampson
de3eedc033
Use bytes for destination base name
This is mostly "defensive programming": clients *should* only call this
on bytestring paths, but just in case this gets called on a Unicode
string path, we should now not crash.
2021-12-27 13:51:42 -08:00
patrick-nicholson
5b34797056 sigh 2021-12-27 14:51:04 -05:00
patrick-nicholson
27c2b79f01 Finally learning to read GitHub. 2021-12-27 13:39:35 -05:00
patrick-nicholson
c3829c52c8 Lint ignore. 2021-12-27 13:38:20 -05:00
patrick-nicholson
a3754f7592 Test failing due to unidentified argument processing issue; replacing with API calls gives expected results.
Fixed some linting issues.
2021-12-27 13:26:38 -05:00
patrick-nicholson
6c64ab6df1 Noticed GitHub linter wanted a docstring. 2021-12-27 12:11:18 -05:00
patrick-nicholson
086fec0096 Fixed truediv typo (switched to intdiv).
Fixed linter objections.
2021-12-26 21:58:45 -05:00
patrick-nicholson
126b4e94cf Fixing doc typo and adding limit to toctree. 2021-12-26 21:57:29 -05:00
patrick-nicholson
24bc4e77e2 Being more careful about truthiness and catching negative values (they could be supported, but it's probably not intuitive).
Moving command into single plugin as suggested.

Fixing linter objections.
2021-12-26 21:56:57 -05:00
Adrian Sampson
592c3fa356
Changelog for #4168 fix 2021-12-26 18:05:56 -08:00
Adrian Sampson
4bb695bcdb
Fix copying for atomic file moves
Fixes #4168. Also closes #4192, which it supersedes.

The original problem is that this implementation used bytestrings
incorrectly to invoke `mktemp`. However, `mktemp` is deprecated, so this
PR just avoids it altogether. Fortunately, the non-deprecated APIs in
`tempfile` support all-bytes arguments.
2021-12-26 18:04:48 -08:00
Adrian Sampson
1dc5163cb4
Create security policy 2021-12-22 09:34:41 -08:00
Adrian Sampson
bcf0728248
Merge pull request #4200 from dschrempf/deezer-paginate 2021-12-19 16:46:44 -08:00
Callum Brown
fcb73ad095 Clarify docs for writing plugins
If the beetsplug directory itself is added to the python path
then python does not see the plugin as part of the beetsplug namespace.
2021-12-19 15:41:31 +00:00
Adrian Sampson
17410cdbb5
Merge branch 'master' into deezer-paginate 2021-12-19 07:32:12 -08:00
Adrian Sampson
ba3569afa1
Add a paragraph space 2021-12-19 07:31:29 -08:00
Adrian Sampson
11ad35dcf0
Merge pull request #4198 from dschrempf/spotify-paginate
fix spotify pagination
2021-12-19 07:27:37 -08:00
Dominik Schrempf
969f045610
fix deezer pagination
See #4180, and #4198.
2021-12-19 00:55:20 +01:00
Dominik Schrempf
fd761cb1e6
fix spotify pagination
Basically, keep fetching tracks until there are no more available for
the specified album.

Fixes #4180.
2021-12-19 00:16:07 +01:00
Adrian Sampson
89c437dddd
Merge pull request #4153 from jcassette/bitratemode
Add the item fields bitrate_mode, encoder_info and encoder_settings
2021-12-18 13:39:39 -08:00
Adrian Sampson
3b9382d808
Syntax fix: e.g. 2021-12-18 13:39:12 -08:00
Julien Cassette
4f83b2d8a6 Add the item fields bitrate_mode, encoder_info and encoder_settings 2021-12-17 21:59:57 +01:00
Adrian Sampson
eb71f7698b
Merge pull request #4196 from ybnd/pr_deezer_tolerate_missing_fields
deezer: Tolerate missing fields when searching for singletons
2021-12-12 14:33:38 -05:00
Adrian Sampson
3fcedba5c9
Merge branch 'master' into pr_deezer_tolerate_missing_fields 2021-12-12 14:33:30 -05:00
ybnd
82a2a22365 deezer: Tolerate missing fields when searching for singletons 2021-12-12 15:49:29 +01:00
Adrian Sampson
cea682967e
Merge pull request #4197 from ybnd/pr_support_multiple_kodi_instances
kodiupdate: Support multiple instances
2021-12-12 09:28:27 -05:00
Adrian Sampson
53a57fa5f0
Merge pull request #4195 from ybnd/pr_rg_make_r128_fields_floats
Make R128 fields floats
2021-12-12 09:18:53 -05:00
ybnd
ca37c94337 kodiupdate: Support multiple instances 2021-12-12 13:39:18 +01:00