Commit graph

3761 commits

Author SHA1 Message Date
Adam Fontenot
07eb26f276 Resize album art when embedding (convert plugin)
Fixes #2116
2022-02-09 23:52:21 -08:00
Adrian Sampson
088cdfe995
Revert some of #4226
Rectify a couple of things in that PR, pointed out here:
https://github.com/beetbox/beets/pull/4226#issuecomment-1011499620

- Undo the `pretend` sensitivity in the import path, because it's not
  clear how this setting could ever be true.
- Preserve the log message in debug mode, even when quiet.
2022-01-29 18:31:48 -05:00
wisp3rwind
8572e9bcec replaygain: add docstrings 2022-01-22 14:00:32 +01:00
wisp3rwind
d19cc593e3 replaygain: better types to represent peak methods
thanks @ybnd in review https://github.com/beetbox/beets/pull/3996 for
this suggestion to properly represent the sum type
2022-01-22 14:00:32 +01:00
wisp3rwind
80f7c58e5a replaygain test: add basic per_disc testcase
The per_disc codepath is currently not exercised at all by the tests.
This test is not very meaningful, but better than nothing.
2022-01-22 14:00:32 +01:00
wisp3rwind
a2df6df9da replaygain: store_track, store_album are methods on *Task
Also, add a convenience function `store()` that dispatches two the
either of the two methods. This will be useful later, when rewriting the
parallel code (but doesn't simplify the code now).
2022-01-22 14:00:32 +01:00
wisp3rwind
9ead9cdbb8 replaygain: pass the write flag explicitly
The variable was previously captured by the closure. This is in
preparation for moving these nested functions elsewhere.
2022-01-22 14:00:32 +01:00
wisp3rwind
ad75cbf4a5 replaygain: Flatten data structures
Now that we have the *Task objects, the AlbumGain tuple can be removed.
2022-01-22 14:00:32 +01:00
wisp3rwind
67d85d18ad replaygain: introduce Task objects to bundle the state related to computations
Renames *GainHandler -> *Task and instead of having a singleton
instance, creates a *Task object for each album/item to process. The
advantage is that now, related data can be bundled in the instance,
instead of passing multiple arguments around.
2022-01-22 14:00:32 +01:00
wisp3rwind
ae3e95f9d3 replaygain: Convert the ad-hoc tag_specific_values to classes
The plugin has loads of indirection and nested functions which make it
really hard to reason about. The larger picture here is that I'd like to make
the code more manageable before reworking the parallelism issues.

In particular, instead of manually implementing an interface using a
function that returns a tuple of function pointers, this commit creates proper
classes. Again, no functionality is changed, this only moves code
around.
2022-01-22 14:00:32 +01:00
wisp3rwind
edf2bda1ce replaygain: store backend name as class attribute
Doesn't change any functionality, but appears a little cleaner to me.
2022-01-22 14:00:32 +01:00
wisp3rwind
96025c6de6 replaygain: avoid determining the method again and again 2022-01-22 14:00:32 +01:00
wisp3rwind
3eb49fca2e replaygain: clarify docs for overwrite/force and actually respect it correctly
The code used to always check the 'overwrite' config value, while that
should only apply during imports. The manual 'replaygain' command has it's
own '-f' flag.

The logic for this flag was changed quite a few times recently, see

https://github.com/beetbox/beets/pull/3816
https://github.com/beetbox/beets/issues/3872
https://github.com/beetbox/beets/pull/3890

but apparently we (me and @ybnd) never really got it right...
If it is some comfort, the logic was never correct in the first place.
2022-01-22 14:00:32 +01:00
wisp3rwind
6689502854 replaygain: rewrite long conditionals in a more imperative manner (2/2)
This is significantly easier to parse (for me, at least).
Also, void building some lists inside of any(...) in the process.
2022-01-22 14:00:32 +01:00
wisp3rwind
356a775c5e replaygain: rewrite long conditionals in a more imperative manner (1/2)
This is significantly easier to parse (for me, at least).
Also, void building some lists inside of any(...) in the process.
2022-01-22 14:00:32 +01:00
wisp3rwind
807f124ef8 really remove all six imports
apparently, pyupgrade didn't know how to handle these...
2022-01-20 00:26:01 +01:00
Adrian Sampson
b5762bd381
Merge branch 'master' into discogs_skip_untagged 2022-01-10 18:53:12 -08:00
ybnd
414760282b Remove footer text from Genius lyrics 2022-01-10 22:09:03 +01:00
ybnd
3f896ab281 Make Tekstowo scraper more specific 2022-01-10 19:03:36 +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
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
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
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
5d0442f094
Merge pull request #4190 from patrick-nicholson/limit-plugin
Limit plugin
2021-12-27 17:01:09 -08: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
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
17410cdbb5
Merge branch 'master' into deezer-paginate 2021-12-19 07:32:12 -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
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
ybnd
ca37c94337 kodiupdate: Support multiple instances 2021-12-12 13:39:18 +01:00
Patrick Nicholson
cdb6b21f1a Adding limit and its documentation 2021-12-07 18:47:55 -05:00
tummychow
74522b41a9 Add default for unimported.ignore_subdirectories 2021-12-01 10:54:33 -08:00
Ramon Boss
69fe1d1baf
fix: use query param for genius search 2021-11-30 20:10:56 +01:00
Adrian Sampson
c03e0ebef0
Merge pull request #4160 from beetbox/filter-img-filename
aura: Sanitize filenames in image IDs
2021-11-26 15:50:32 -05:00
Adrian Sampson
1fad3d01ae
aura: Sanitize filenames in image IDs
When constructing paths to image files to serve, we previously spliced
strings from URL requests directly into the path to be opened. This is
theoretically worrisome because it could allow clients to read other
files that they are not supposed to read.

I'm not actually sure this is a real security problem because Flask's
URL parsing should probably rule out IDs that have `/` in them anyway.
But out of an abundance of caution, this now prevents paths from showing
up in IDs at all---and also prevents `.` and `..` from being valid
names.
2021-11-26 15:35:07 -05:00
Arsen Arsenović
0b578a3384
fetchart: add option to force cover format 2021-11-03 13:31:33 +01:00
Piotrek Kochański
4d94bf8fad Merge branch 'master' of github.com:beetbox/beets into deinterlace 2021-11-01 21:33:27 +01:00
Benedikt
82285052b1
Merge pull request #4130 from wisp3rwind/pr_rm_gmusic
remove the gmusic plugin
2021-11-01 18:40:34 +01:00
Piotrek Kochański
1a130059e8 deinterlace option to affect when no other processing
remove interlacing by default when resizing/down-scaling, the
`deinterlace` option is to remove interlace when otherwise no processing
would have happened.
2021-11-01 13:51:57 +01:00
Piotrek Kochański
417ef0d453 Merge branch 'master' of github.com:beetbox/beets into deinterlace 2021-10-31 13:27:00 +01:00
Tianon Gravi
6e434934d4 Remove completed TODO item 2021-10-30 11:19:21 -07:00
wisp3rwind
786236f046 remove the gmusic plugin 2021-10-30 14:46:14 +02:00
Tianon Gravi
9ddc75035a Fix duplicated output in "beet export" 2021-10-27 09:06:27 -07:00
Tianon Gravi
7bd36ed6ca Add "beet export --album" (matching "beet info --album") 2021-10-27 08:55:36 -07:00
Tianon Gravi
a5b5831d28 Switch "beet info --album" approach to use a named argument instead
These functions are also used by the export plugin, so it's useful if the signature stays backwards compatible.
2021-10-27 08:27:39 -07:00
Tianon Gravi
d8cff030a6 Add a basic "--album" flag to "beet info"
This currently implies "--library" because I'm not sure what "album info" of the tags of individual files would mean.
2021-10-26 09:00:31 -07:00
maffo999
c824d4d773 Fix for 4108 2021-10-21 16:32:23 +02:00
Jay DesLauriers
b05432aed0 feat(unimported): support excluding subdirectories 2021-10-12 17:28:43 +00:00
Andrew Rogl
b880e2db8a Final clean up 2021-10-05 13:00:38 +10:00
Andrew Rogl
f7539b3ec3 Update to extract regex testing from album_for_id 2021-10-04 17:38:35 +10:00
Andrew Rogl
db0431deed Updated as per feedback from @wisp3rwind
I think I have the match.group correct
I'll also try and look at tests to make sure we can check
2021-10-04 10:53:06 +10:00
Andrew Rogl
a8b8d05ac5 Update comment around Discogs-ID 2021-10-03 10:23:10 +10:00
Andrew Rogl
ade9978f7e Updated after feedback from @wisp3rwind 2021-10-02 21:39:26 +10:00
Andrew Rogl
39def81d1c Fix lint error 2021-10-02 14:20:17 +10:00
Andrew Rogl
c4f2fffb63 Fix #4080
Tested with
https://www.discogs.com/SHOUSE-Love-Tonight-Robin-Schulz-Remix/release/20356324
https://www.discogs.com/release/20356324-SHOUSE-Love-Tonight-Robin-Schulz-Remix
2021-10-02 14:12:01 +10:00
Adrian Sampson
a0365e6f1c
Merge branch 'master' into pr_fix_lyrics_bs 2021-09-28 16:04:06 -04:00
Andrew Rogl
237bd07508 Address feedback from @sampsyo 2021-09-28 18:05:44 +10:00
wisp3rwind
a23857fc64 lyrics: fix crash when beautifulsoup4 is not installed
Fixes #4027
2021-09-28 00:31:42 +02:00
Andrew Rogl
ac6cc2ffa4 Fix up invalid master merges 2021-09-26 17:33:15 +10:00
Andrew Rogl
ed07bb5b7e
Merge branch 'master' into pyupgrade 2021-09-26 17:22:15 +10:00
Andrew Rogl
fc4d65a387 Missed a few unicode strings 2021-09-26 16:51:01 +10:00
Andrew Rogl
5859d31405 Commit #4036 2021-09-26 16:41:13 +10:00
Andrew Rogl
6cd7998c3d Forgot to pyupgrade new file 2021-09-26 16:27:20 +10:00
Andrew Rogl
8205b901db Commits #4048 & #4050 2021-09-26 16:03:00 +10:00
Duncan Overbruck
f5e336747a
Add permissions test case for set_art event 2021-09-12 16:40:58 +02:00
Duncan Overbruck
264e771e7c
permissions: set album art permissions 2021-09-12 16:40:44 +02:00
Edgars Supe
d40f0c8860 Fill default config for albumtypes plugin 2021-09-10 14:48:28 +03:00
Edgars Supe
131befa132 Improve albumtypes plugin code 2021-09-10 10:23:47 +03:00
Edgars Supe
bee35885bb Add albumtypes plugin 2021-09-09 23:05:12 +03:00
Andrew Rogl
9106b41a50 Remove as many as possible sys.version tests 2021-08-27 10:24:27 +10:00
Piotrek Kochański
d30c8b32b5 Remove unnecessary line break. 2021-08-26 15:02:51 +02:00
Andrew Rogl
ee4268dabb Remove unused imports
Fix imports
Fix formatting
2021-08-26 20:59:48 +10:00
Andrew Rogl
1ec87a3bdd pyupgrade beetsplug and tests
All tests working
More tidy up to be done
2021-08-26 19:12:51 +10:00
Piotrek Kochański
0a0719f9ed Add plugin option to store cover art non-progressive. 2021-08-25 22:56:46 +02:00
Adrian Sampson
fd81d65c4b
Undo string type inversion in convert 2021-08-21 13:24:18 -04:00
Adrian Sampson
e6a1f5a3dc
convert: Split command in str form
...with yet another round-trip conversion. :/
2021-08-19 17:24:01 -04:00
Adrian Sampson
2f5f9ea174
Remove shlex_split utility
This works around a bug that does not exist in Python 3.x, and the
workaround (by calling the underlying shlex.split function with bytes)
was causing crashes on some versions of Python 3. Seemed to work fine on
3.10-dev, though, oddly.
2021-08-19 17:14:16 -04:00
Adrian Sampson
75c41c0546
Remove most six.PY2 checks 2021-08-19 16:45:11 -04:00
Kirill A. Korinsky
b0f7418372
Stream-friendly smart playlists
This commit introduced a way to generate a stream-frienldy playlists.
2021-08-14 02:41:22 +02:00
maffo999
5dbc7f9f33 Moved logging to debug and fixed empty line. Updated changelog to include new option. 2021-07-15 20:13:18 +02:00
maffo999
653181a296 Fix subsonicupdate plugin 2021-07-14 20:10:04 +02:00
wisp3rwind
0c285753fb lyrics: Add some missing None-checks to the Tekstowo source
The previous code had the potential to crash if (when?) Tekstowo changes
their website structure sufficiently.

The new code is rather ugly due to the explicit checks after each and
every function call. Unfortunately, the alternative would be to catch a
bunch of very generic Exceptions (AttributeError, ...), since there's no
such thing as a `BeautifulSoupNotFoundError`.
2021-07-04 10:38:00 +02:00
wisp3rwind
09be82bd75 lyrics: slightly more consistent white space in Tekstowo source 2021-07-04 00:35:42 +02:00
Martin Atukunda
efcc5b3fae
return None for lyrics if Tekstowo fails to extract lyrics
I experienced a failure to parse Tekstowo for song lyrics. 

This patch allowed the lyrics plugin to fetch the lyrics from another provider as opposed to failing.
2021-07-01 09:39:42 +03:00
wisp3rwind
d6ca1cc242 duplicates: fix crash when query return empty results 2021-06-18 17:18:50 +02:00
wisp3rwind
316b79f72f lyrics: slightly refactor beautifulsoup checks
instead of having a global list of sources that require the package,
indicate the dependency using an attribute of the source class
2021-06-18 17:16:04 +02:00
wisp3rwind
038cebfa9b lyrics: remove duplicate check for beautifulsoup
The plugin already disables these sources entirely when beautifulsoup is
not available
2021-06-18 17:16:04 +02:00
wisp3rwind
867d383544 lyrics: wrap BeautifulSoup() constructor to centralize error handling
also ensure that the return value is always checked for None
2021-06-18 17:16:04 +02:00
wisp3rwind
b34442f5d1 lyrics: always check for fetch_url() returning None 2021-06-18 17:16:04 +02:00
wisp3rwind
f8a4c661fa lyrics: return None explicitly 2021-06-18 17:16:04 +02:00
wisp3rwind
76aa97827d lyrics: rename html -> soup for consistency 2021-06-18 17:16:04 +02:00
Andrew Rogl
51d922df27 Merge branch 'master' into fix_#2873 2021-05-24 16:21:27 +10:00
Andrew Rogl
81e50cb630 Too quick to delete 2021-05-23 15:43:14 +10:00
Andrew Rogl
39ca5b7be6 Changes as requested 2021-05-23 14:45:02 +10:00
sandersantema
f3e1d90470
Avoid usage of walrus operator which is only compatible with > 3.8 2021-05-13 12:58:26 +02:00
sandersantema
2cd15a7434 Add itunes_dateadded to itunes metasync plugin 2021-05-13 12:32:42 +02:00
Andrew Rogl
923e3bacd6 Attempt to fix duplicates #2873 2021-05-03 16:03:40 +10:00
Sam Thursfield
2fa3717731 Optimise FormattedMapping when querying a specific set of fields
This changes greatly improves the speed of `beet export` and `beet info`
when the `--include-keys` option is used. It also removes the globbing
feature of `--include-keys` that was added in #1295. (See #3762 for
discussion).

Listing all fields for an item requires querying the database to find
any flex attributes. This is slow when done for every item being
exported. We already have a way for the user to specify a fixed set
of keys, but we previously queried everything and filtered it afterwards.
The new approach is more efficient.

Code that iterates through all fields now have to handle invalid field
names. The export and info plugins output invalid fields as None.

Timings before:

    > /usr/bin/time beet export -i title,path,artist -l  Bob Dylan
    13.26user 20.22system 0:34.01elapsed 98%CPU (0avgtext+0avgdata 52544maxresident)k

    > /usr/bin/time beet export -l  Bob Dylan
    12.93user 20.15system 0:33.58elapsed 98%CPU (0avgtext+0avgdata 53632maxresident)k

Timings after:

    > /usr/bin/time beet export -l  Bob Dylan
    13.33user 20.17system 0:34.02elapsed 98%CPU (0avgtext+0avgdata 53500maxresident)k

    > /usr/bin/time beet export -i title,path,artist -l  Bob Dylan
    0.49user 0.07system 0:00.56elapsed 98%CPU (0avgtext+0avgdata 50496maxresident)k

Notice the dramatic speedup in the last example!
2021-05-01 23:41:09 +02:00
Xavier Hocquet
8b979f2a50 Review comments 2021-04-11 18:38:01 -05:00
Xavier Hocquet
31f4df3ff3 Fix falso positive lyric pages for Tekstowo 2021-04-11 17:30:45 -05:00
Evgeniy Gurevich
afc072801c
Simplify Musixmatch multi-part lyrics parser 2021-04-02 10:35:53 +08:00
Evgeniy Gurevich
a8fe8ce9a7
Fix for Musixmatch multi-part lyrics
Sometimes Musixmatch lyrics come in 2 parts.
Also, sometime non-existent lyrics return some content
2021-04-01 14:21:49 +08:00
Adrian Sampson
eab4372a58
Merge pull request #3900 from Lanny/master
badfiles: Optionally run checkers during import
2021-03-29 19:28:30 -04:00
Ryan Lanny Jenkins
79616b42ed Use simpler approach of asserting that at most one handler of import_task_before_choice returns an action. 2021-03-28 16:53:01 -05:00
Xavier Hocquet
6081e6a8df CR comments 2021-03-28 13:08:00 -05:00
Xavier Hocquet
8c6530369d
Merge branch 'master' into tekstowo-lyrics 2021-03-28 12:05:42 -06:00
Ryan Lanny Jenkins
6c4cb82c03 badfiles: Respect any previous decision to skip an import and don't re-prompt the user. 2021-03-27 12:03:56 -05:00
Ryan Lanny Jenkins
1d4a2c3e2a Add a new hook for badfiles pre-import user interaction, instead of flagging the task. 2021-03-27 11:37:26 -05:00
Ryan Lanny Jenkins
9c17d9a924 linting 2021-03-24 17:29:16 -05:00
Ryan Lanny Jenkins
3e1fe88053 Merge branch 'master' of https://github.com/beetbox/beets 2021-03-24 16:59:24 -05:00
Ryan Lanny Jenkins
2c9f3d6464 Add check_on_import config for badfiles. 2021-03-24 16:51:58 -05:00
Ryan Lanny Jenkins
e96b5a7eba Check files during import, show checker warnings and errors along with tagging choices. 2021-03-23 21:55:51 -05:00
wisp3rwind
9a6b65351b Merge pull request #3560 from davidswarbrick/master
Album Art Resize to filesize
2021-03-23 12:15:51 +01:00
wisp3rwind
af70b75670 fetchart/artresizer: Improve comments & docstrings, avoid os.stat if
possible

slight enhancements on top of https://github.com/beetbox/beets/pull/3560
2021-03-23 12:04:30 +01:00
David Swarbrick
07b5e69f40 fetchart/artresizer: add max_filesize support (#3560)
Squashed from the PR, relevant commit messages follow below:

Added file size option to artresizer

 - In line with comments on PR, adjusted the ArtResizer API to add
   functionality to "resize to X bytes" through `max_filesize` arg

 - Adjustment to changelog.rst to include max_filesize change to ArtResizer
   and addition of new plugin.

Added explicit tests for PIL & Imagemagick Methods

 - Checks new resizing functions do reduce the filesize of images

Expose max_filesize logic to fetchart plugin

- Add syspath escaping for OS cross compatibility
- Return smaller PIL image even if max filesize not reached.
- Test resize logic against known smaller filesize (//2)
- Pass integer (not float) quality argument to PIL
- Remove Pillow from dependencies
- Implement "max_filesize" fetchart option, including
  logic to resize and rescale if maxwidth is also set.

Added tests & documentation for fetchart additions.

Tests now check that a target filesize is reached with a
higher initial quality (a difficult check to pass).

With a starting quality of 95% PIL takes 4 iterations to succeed
in lowering the example cover image to 90% its original size.
To cover all bases, the PIL loop has been changed to 5 iterations
in the worst case, and the documentation altered to reflect the
50% loss in quality this implies. This seems reasonable as users
concerned about performance would most likely be persuaded to
install ImageMagick, or remove the maximum filesize constraint.
The previous 30% figure was arbitrary.
2021-03-23 12:00:14 +01:00
Adrian Sampson
d7c556f7d1
Remove stray cue plugin (fix #3892) 2021-03-20 09:04:03 -04:00
Benedikt
e5f1cca8a3
Merge pull request #3890 from wisp3rwind/pr_rg_import_fixes
replaygain: fix write/force flags on import
2021-03-18 22:42:42 +01:00
Benedikt
c8c73cc789
Merge pull request #3891 from wisp3rwind/pr_rg_de-nest
replaygain: don't nest functions when there's no need to
2021-03-18 22:41:13 +01:00
wisp3rwind
d3ec2106cd replaygain: fix write/force flags on import
This restores old behaviour.
2021-03-18 18:37:15 +01:00
wisp3rwind
0125fdf415 replaygain: don't nest functions when there's no need to 2021-03-18 18:31:00 +01:00
Benedikt
eea5c6d1f0
Merge pull request #3888 from wisp3rwind/pr_rg_cleanup
replaygain: remove debugging leftovers
2021-03-18 18:00:41 +01:00
wisp3rwind
feb5041f57 replaygain: remove debugging leftovers 2021-03-18 14:29:28 +01:00
Adrian Sampson
42d9a54ae6
Merge pull request #3885 from nicksellen/fix/no-ascii-encode
Remove ascii encode step
2021-03-17 07:58:48 -04:00
Nick Sellen
6dc1f6414d
Remove ascii encoding step now library is fixed 2021-03-17 09:06:35 +00:00
Graham R. Cobb
c3485b5b04 Remove unnecessary call to format.
Signed-off-by: Graham R. Cobb <g+beets@cobb.uk.net>
2021-03-16 22:36:42 +00:00
Graham R. Cobb
b0110fa224 Try again to fix unidecode_list for python2 support
Signed-off-by: Graham R. Cobb <g+beets@cobb.uk.net>
2021-03-16 16:40:43 +00:00
Graham R. Cobb
cad2c055c5 Make unicode handling explicit, to support python 2 and 3.
Add link to Unidecode library in docs.

Signed-off-by: Graham R. Cobb <g+beets@cobb.uk.net>
2021-03-16 16:29:57 +00:00
Graham R. Cobb
0078b02085 Python2 support for bareasc command
Signed-off-by: Graham R. Cobb <g+beets@cobb.uk.net>
2021-03-16 14:50:51 +00:00
Graham R. Cobb
d1ec7b4b70 Add `bareasc` command to display entries with the unidecode transformation
applied.

Signed-off-by: Graham R. Cobb <g+beets@cobb.uk.net>
2021-03-16 11:57:52 +00:00
Graham R. Cobb
fab7a27e9f Add a couple more tests and make lint happy.
Signed-off-by: Graham R. Cobb <g+beets@cobb.uk.net>
2021-03-15 12:43:58 +00:00
Graham R. Cobb
dcbe622b76 Oops, use in for matching! (It was late last night!)
Signed-off-by: Graham R. Cobb <g+beets@cobb.uk.net>
2021-03-15 10:25:19 +00:00
Graham R. Cobb
7dd1ee3fab Remove debugging print.
Signed-off-by: Graham R. Cobb <g+beets@cobb.uk.net>
2021-03-15 01:09:50 +00:00
Graham R. Cobb
0c612f408b Create plugin for "bare-ASCII" matching query
Signed-off-by: Graham R. Cobb <g+beets@cobb.uk.net>
2021-03-15 00:55:14 +00:00
Adrian Sampson
c4347960ea
Merge pull request #3877 from GrahamCobb/web-readonly
Web readonly
2021-03-12 17:51:57 -05:00
Graham R. Cobb
4ffe9a2c45 Fixed bug where readonly value was not being read from config file.
Also simplified the setup of the `readonly` value in the tests which
fixes a test ordering issue found using --random-order.

Signed-off-by: Graham R. Cobb <g+beets@cobb.uk.net>
2021-03-12 17:58:35 +00:00
Benedikt
feb305f8fc
Merge pull request #3873 from akshgpt7/chore-refactor-issues
Refactor code quality issues
2021-03-12 01:00:43 +01:00
Graham R. Cobb
51d22b765e Add tests for delete operations
Signed-off-by: Graham R. Cobb <g+beets@cobb.uk.net>
2021-03-11 18:02:38 +00:00
Graham R. Cobb
4a9652a9e4 Only allow DELETE or PATCH operations if "readonly" is set to true.
Note: default is false which is a **NOT BACKWARDS COMPATIBLE** change.

Signed-off-by: Graham R. Cobb <g+beets@cobb.uk.net>
2021-03-11 18:02:38 +00:00
Aksh Gupta
79858975a9 chore: refactor code quality issues 2021-03-11 08:45:42 +05:30
Adrian Sampson
84f6d374c4
Merge pull request #3869 from GrahamCobb/web-regex-fix
Web regex fix
2021-03-10 20:36:03 -05:00
Graham R. Cobb
553e38fc11 Do not do backslash substitution on regex queries
As discussed in bug #3867, backslash replacement in query strings is a bit of a
hack but it is useful (see #3566 and #3567 for more discussion). However,
it breaks many regular expressions so this patch stops the replacement if the
query term contains '::', indicating it is a regex match.

This commit fixes #3867.

Signed-off-by: Graham R. Cobb <g+beets@cobb.uk.net>
2021-03-08 16:58:05 +00:00
govynnus
debd382837
Merge pull request #3758 from beetbox/aura
AURA: Add aura plugin and docs
2021-03-08 07:24:53 +00:00
Callum Brown
a24a094562 AURA: Small updates to docs and set server version 2021-03-07 18:24:57 +00:00
Callum Brown
a54ee43d57 AURA: Allow '-' character in filter attribute 2021-03-07 14:23:17 +00:00
Adrian Sampson
09a6ec4f74
Merge branch 'master' into pr/item-album-fallback 2021-03-07 09:20:50 -05:00
Callum Brown
9b9ff46e7d Merge branch 'master' into aura
Ensure aura branch has updated configuration to eliminate spurious
linter errors from the style checker.
2021-03-07 11:08:37 +00:00
Callum Brown
477eed3b25 AURA: Use py3_path rather than displayable_path
displayable_path may remove 'bad' characters, yielding a wrong path.

Also use track.path rather than track.destination() as that is where
the file is actually located rather than where it should be located
according to the beets path system.
2021-03-07 10:25:20 +00:00
Graham R. Cobb
9986b9892c Fix bug where album artpath not returned when INCLUDE_PATHS is set
Track item paths and album artpaths should be removed from results unless
INCLUDE_PATHS is set. This works for items but for albums the artpath is always
removed.

This patch makes the artpath removal conditional on INCLUDE_PATHS not being set
and includes a regression test. Note: the default value for INCLUDE_PATHS is
False so no changes will be seen by users unless they already have
INCLUDE_PATHS set.

Signed-off-by: Graham R. Cobb <g+beets@cobb.uk.net>
2021-03-06 15:25:48 +00:00
Callum Brown
2fe2f4f31e AURA: Ensure CORS allowed origins are strings 2021-03-06 13:30:31 +00:00
Callum Brown
fbc76887ad AURA: Fix styling when formatting error strings 2021-03-06 13:22:28 +00:00
Callum Brown
07cfaaa3b3 AURA: Simplify if statements
Get rid of ` is not None`
Change `len(x) == 0` to `not x`
Change `x is None` to `not x`
2021-03-06 12:44:32 +00:00
Callum Brown
b1baeb37f1 AURA: replace translate_attribute with a dict.get 2021-03-06 12:08:35 +00:00
Callum Brown
7e819d2a2e AURA: Update artist-mbid attribute to use '-' 2021-03-06 12:01:02 +00:00
George Rawlinson
00252ab28f
Fix #3608: Replace discogs-client with python3-discogs-client
discogs-client has been deprecated since June 2020, the replacement
is actively developed by the community and does not have any breaking
API changes.

Signed-off-by: George Rawlinson <george@rawlinson.net.nz>
2021-02-27 10:09:23 +13:00
Andrea Mistrali
1a65501cee Clean up strip_path and logging 2021-02-23 10:40:59 +01:00
Andrea Mistrali
48e7d2964e Style changes 2021-02-23 05:45:53 +01:00
Andrea Mistrali
0e67b6801c ARGH! Wrong variable 2021-02-22 14:50:30 +01:00
Andrea Mistrali
921bc424cd Better handling of strip_path 2021-02-22 14:47:58 +01:00
Andrea Mistrali
99de85b5c2 Only leftmost subpath is replaced 2021-02-22 14:33:01 +01:00
Andrea Mistrali
ce974d4fc7 One line :) 2021-02-22 14:30:50 +01:00
Andrea Mistrali
414b682123 Add strip_path to mpdstats 2021-02-22 11:19:23 +01:00
Samuel Cook
ff4cec2e69
Removes support for bs1770gain.
References in the documentation to this plugin were removed in
beetbox/beets#3127 (beetbox/beets#3130) but no actual code
changes were made.

This PR removes support for this dependency entirely.
2021-01-27 17:42:18 -08:00
John Hamelink
77ce69fe77
Fixes #3834:
This PR fixes a bug (#3834) where tracks which have already been fingerprinted do not return to be used by `beet submit` (part of the Chroma plugin). This results in  submission errors, as the fingerprint is omitted from the resultant payload sent to acoustID.
2021-01-19 22:05:34 +00:00
wisp3rwind
02ec2cfd57 style: whitespace fix, remove unnecessary parenthesis 2021-01-19 19:09:30 +01:00
Benedikt
6680f692f6
Merge pull request #3832 from vincentDcmps/master
Automatically choose subsonic authentication algorithm based on server version
2021-01-19 19:00:10 +01:00
Martin Haaß
9587caf916
convert: uses new par_map to work in parallel (#3830)
Squashed 5 commits:
* convert: uses new par_map to work in parallel
* linting
* code review: remove unneeded list syntax
* linting
* changelog addition
2021-01-19 18:47:02 +01:00
vincent
8af088c785 manage case of supysonic off 2021-01-18 18:24:25 +01:00
vincent
9b496e5027 change comparaison version method 2021-01-13 17:50:37 +01:00
Vincent Ducamps
03a665861d reformating subsonicupdate.py
Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
2021-01-12 18:31:43 +01:00
Vincent Ducamps
b37c55bc0b pass get_version to private
Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
2021-01-11 21:19:52 +01:00
vincent
375c158fc7 implement version check 2021-01-11 18:29:27 +01:00
vincent
54748ad4c9 change auth option enc by password 2021-01-11 17:56:09 +01:00
vincent
93bb114175 update doc 2021-01-11 17:55:23 +01:00
vincent
c1cc91c5e9 add old password option 2021-01-10 12:30:05 +01:00
vincent
0d5ad875d4 add .view to endpoint 2021-01-10 12:19:43 +01:00
FichteFoll
5ace2b626b
Merge remote-tracking branch 'upstream/master' into pr/item-album-fallback 2021-01-08 18:47:18 +01:00
Andrew Simmons
73a7723a15 Add python version check 2021-01-06 10:33:50 -05:00
Auguste Olivry
34c38f41bd Cosmetic fix 2021-01-05 16:15:50 +01:00
Auguste Olivry
345cf6e39b Move index handling inside coalesce_tracks 2021-01-05 16:14:36 +01:00
Auguste Olivry
c61d18bed3 Remove semicolon when prefix is empty 2021-01-05 14:15:22 +01:00
Auguste Olivry
8bda9f991a Keep index tracks in coalesced tracklist 2021-01-05 14:15:22 +01:00
Adrian Sampson
53dcb24d10
Merge pull request #3671 from dosoe/beets_test_parentwork
first try at mocking get_work_by_id
2020-12-22 12:01:17 -05:00
ybnd
eb8ba838e5 Check 'auto' on import_begin 2020-12-22 12:45:28 +01:00
ybnd
93101e7ea6 Disable replaygain parallelism during import 2020-12-21 19:19:20 +01:00
ybnd
12db40fa67 Remove .get() when checking config values 2020-12-21 08:50:39 +01:00
ybnd
1dfd79e658 Fix logic for replaygain auto-compute on import 2020-12-20 19:38:21 +01:00
Adrian Sampson
48222153ae
Merge pull request #3812 from billyjanitsch/fix-fish-completions
Fix escape helper in fish completion plugin
2020-12-16 08:10:48 -05:00
Billy Janitsch
c94809f6da Fix escape helper in fish completion plugin 2020-12-16 02:15:26 -05:00
sentriz
95677c8626
lastgenre: Make TitleCasing optional 2020-12-15 23:37:16 +00:00
ybnd
e3205aacbd Merge remote-tracking branch 'origin/master' into parallel-replaygain 2020-12-14 22:19:28 +01:00
ybnd
363f71af2e Move OperationalError handler to test_replaygain.py 2020-12-14 22:10:54 +01:00
Adam Miller
c1d93165f0 Fix line length 2020-12-07 22:11:08 -05:00
Adam Miller
e11687f80a keyfinder: Catch output from keyfinder-cli with no key 2020-12-07 22:04:05 -05:00
Benedikt Tissot
020c082f3f make CI happy 2020-11-09 17:12:44 +01:00
Benedikt Tissot
57a1b3aca8 escape using helper function 2020-11-09 17:07:00 +01:00
Benedikt Tissot
8f8fd4231a escape ? in fish completion 2020-11-09 15:55:21 +01:00
AnonTester
ecfafb5041 Adjust comment to pass lint test 2020-11-07 21:48:21 +00:00
AnonTester
176fa55bf6 lyrics: Strip \u2005 (four-per-em space) in lyrics (Issue 3789)
https://github.com/beetbox/beets/issues/3789
2020-11-07 21:41:16 +00:00
FichteFoll
701cd6c42b
Merge remote-tracking branch 'upstream/master' into pr/item-album-fallback 2020-11-02 00:10:46 +01:00
Callum Brown
e067298224 Add default config values in create_app()
So if not run through beet aura then default values will be available
2020-10-28 18:56:45 +00:00
Jack Wilsdon
580495f1d6
Simplify MusiXmatch backend and remove unused code 2020-10-05 22:56:01 +01:00
Jack Wilsdon
d115f3679b
Remove LyricWiki source
LyricWiki was shut down on 2020/09/21 and no longer serves lyrics.
2020-10-05 22:15:40 +01:00
Sam Thursfield
d9582f4bea export: Add --format=jsonlines option
This adds support for the JSON Lines format as documented at
https://jsonlines.org/.

In this mode the data is output incrementally, whereas the other
modes load every item into memory and don't produce output until
the end.
2020-10-02 12:41:29 +02:00
Callum Brown
e8aa96ef72 AURA: Add argument info to docstrings
Follows the google docstring style:
https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings
2020-09-27 18:58:39 +01:00
Callum Brown
51c3f310e9 AURA: Fix docstrings for tox -e lint 2020-09-27 18:09:16 +01:00
Callum Brown
5c875c50de AURA: Add aura plugin and docs 2020-09-21 20:24:41 +01:00
Cadel Watson
d1f93a26a6 Fix lint errors 2020-09-20 11:30:12 +10:00
Cadel Watson
a18b317240 Add PATCH method to item queries 2020-09-20 10:46:48 +10:00
Cadel Watson
afcde697e0 Add PATCH method to Items 2020-09-20 10:45:12 +10:00
Cadel Watson
29672a434f Add DELETE method to resource queries 2020-09-20 10:23:25 +10:00
Cadel Watson
76220fb148 Add DELETE method for items and albums 2020-09-20 10:18:07 +10:00
djl
33b10d60fb
fetchart: Improve Cover Art Archive source. (#3748)
* fetchart: Improve Cover Art Archive source.

Instead of blindly selecting the first image, we now treat all "front"
images as candidates.

This is useful where some digital releases have both an animated cover
and a still image and the animated image is the first image returned
from the API.
2020-09-13 20:27:12 +01:00
Jef LeCompte
f2a4864ab0
Merge pull request #3731 from jef/jef/fix-subsonic 2020-09-04 08:06:55 -04:00
Jef LeCompte
3c8419dbe0
fix(plugin): subsonicupdate rest call
Signed-off-by: Jef LeCompte <jeffreylec@gmail.com>
2020-09-04 00:51:03 -04:00
PotcFdk
2039f26f96 Update file metadata after generating fingerprintsthrough the submit command. 2020-08-26 13:36:40 +02:00
ybnd
e1876590ba Fix replaygain.py to pass test_replaygain.py 2020-08-12 12:49:16 +02:00
ybnd
72710cd8c7 Merge branch 'master' into parallel-replaygain 2020-08-12 11:59:32 +02:00
ybnd
50757d34ad Fix conflicts 2020-08-12 11:42:18 +02:00
Aidan Epstein
fce27e6fa9 mpdstats: Don't record a skip when stopping MPD.
MPD keeps the current track in the queue when stopping, so it's not
really like a skip, and I use it so that I can stop the music, and later
start at the beginning of a track.

I do this by keeping track of the current song id, and then comparing
them when we receive a stop signal.
2020-08-10 07:07:17 -07:00
soergeld
d748cc7744 small problem with parent composer 2020-08-09 18:56:52 +02:00
Samuel Cook
b89a2650cc
Delete after convert (#3700)
* If import move is true, files will be deleted after converting.
Fixes #2947

* Removed trailing whitespace to comply with W293, fixing build

* Add period to the end of the comment

Co-Authored-By: Adrian Sampson <adrian@radbox.org>

* Added changelog entry for this fix.

* Added delete_originals option to remove source files after transcode

* Added unit test, removed redundant syspath call

Co-authored-by: Logan Arens <logan-arens@users.noreply.github.com>
Co-authored-by: Logan Arens <heresmygithub@protonmail.com>
Co-authored-by: Adrian Sampson <adrian@radbox.org>
Co-authored-by: Logan Arens <logan.arens@protonmail.com>
2020-08-03 20:20:20 -05:00
Gunther Schmidl
48d39ea11e fix regex, add test and changelog entry 2020-07-30 22:42:31 +02:00
FichteFoll
eda9930c59
Merge remote-tracking branch 'upstream/master' into pr/item-album-fallback 2020-07-27 19:32:44 +02:00
jtpavlock
335776ff30
Merge pull request #3666 from jtpavlock/flake8-errors
Unignore flake8 E221, E226, E242, E704
2020-07-20 12:24:52 -07:00
José Albornoz
dc7e433768
Fix thumbnail plugin pathlib bug (#3360)
PathlibURI.uri() would fail if given a path as bytes instead of as string.

Co-authored-by: Jacob Pavlock <jtpavlock@gmail.com>
2020-07-15 21:00:50 -05:00
Adrian Sampson
8537d1e36d Merge pull request #2554 from musoke/python3-plugin-ipfs
compatibility of IPFS plugin with Python 3
2020-07-14 06:58:20 -04:00
soergeld
770664f27d typo 2020-07-13 23:05:53 +02:00
wisp3rwind
44e4d558c9 lyrics: fix bad_triggers in the google plugin
regression from 117d16f
2020-07-12 22:23:17 +02:00
Jacob Pavlock
124c882b4d un-ignore E221 2020-07-11 18:33:08 -07:00
Adrian Sampson
32e54a29fa
Merge pull request #3655 from aereaux/add_parentwork_date
Get the date of the parentwork, which may be different from the date of the child work.
2020-07-07 07:48:23 -04:00
jtpavlock
45abc9ed7a
Clean up code and tests for Genius Lyrics plugin backend (#3641)
* clean-up code & add tests for genius lyrics backend

* add genius fetch tests

* organize imports: standard lib -> pip -> local

* check in sample genius lyrics page

* fix mock import

* force utf-8 encoding for opened files

* use io.open to force utf-8 encoding w/ python2.7
2020-07-06 08:41:27 -05:00
Aidan Epstein
27199abac8 Get the date of the parentwork, which may be different from the date of the child work.
Also add a changelog entry and docs.
2020-07-03 09:35:15 -07:00
Mark Trolley
0f767ffa66 fetchart: Use Cover Art Archive thumbnails
The Cover Art Archive API offers pre-resized thumbnails of cover
art. If the `maxwidth` option of `fetchart` matches one of the
supported Cover Art Archive thumbnail sizes, and a thumbnail of
that size exists in the Cover Art Archive, fetch it directly
instead of fetching the full size image then resizing it.
2020-06-28 17:18:42 -04:00
Adrian Sampson
533cc88df2
Merge pull request #3639 from trolley/topic/coverart-fallback
Revert Cover Art Archive thumbnails
2020-06-27 19:46:45 -04:00
Adrian Sampson
3e32a4fb87
Merge pull request #3635 from jtpavlock/master
Fix genius lyrics backend artist matching with hyphens
2020-06-27 19:38:26 -04:00
Mark Trolley
a4c647be46 Revert "fetchart: Use Cover Art Archive thumbnails"
This reverts commit 2131f6f7d9.
2020-06-27 16:26:52 -04:00
Mark Trolley
3232a5b8b7 Revert "Indentation fix"
This reverts commit 1e527ed4e5.
2020-06-27 16:26:20 -04:00
Adrian Sampson
1e527ed4e5 Indentation fix 2020-06-27 12:49:32 -04:00
Mark Trolley
2131f6f7d9 fetchart: Use Cover Art Archive thumbnails
The Cover Art Archive API offers pre-resized thumbnails of cover
art. If the `maxwidth` option of `fetchart` matches one of the
supported Cover Art Archive thumbnail sizes fetch it directly
instead of fetching the full size image then resizing it.
2020-06-27 12:34:43 -04:00
Jacob Pavlock
7220c91d2a generalize genius artist matching to use slug() 2020-06-26 18:56:20 -07:00
Jacob Pavlock
bb5740d63c better debug message for no genius artist match 2020-06-26 16:41:20 -07:00
Jacob Pavlock
ae175e156b fix genius lyrics artist matching when artist contains a hyphen 2020-06-26 16:10:33 -07:00
Mark Trolley
6d41f31309 Rename use_secure to secure and add to changelog 2020-06-08 20:19:19 -04:00
Mark Trolley
22d74a3b8a feat: support secure Plex connections 2020-06-08 18:05:43 -04:00
Adrian Sampson
3aad6f42ce Merge pull request #3602 from jef/jef/github-actions
feat: added github actions
2020-06-05 09:56:59 -04:00
ybnd
d1f3d664d7 Implement comments & add to changelog 2020-06-04 16:43:42 +02:00
ybnd
b239a0b3d2 Fix item == None issues when writing lyrics ReST
* Skip ReST writing & sphinx info messages if query doesn't yield anything
* `writerest` into `appendrest` and `writerest`, don't call `writerest(item=None)` to flush state at the end.
2020-06-04 11:15:34 +02:00
Jef LeCompte
42e5844564
fix: revert flake8 change 2020-06-04 02:09:04 -04:00
Jef LeCompte
9f8bd4cd3f
style: flake8 linting 2020-05-25 20:06:43 -04:00
Jef LeCompte
0c3201930c
feat: added github actions
only working with linux for now. exact replica of travis basically.
should probably try to implement the rest of tox or deprecate some
functionality.
2020-05-25 19:35:15 -04:00
Jef LeCompte
66e6b11404
refactor: moved static methods inside class
made them static private class methods
2020-05-22 21:23:25 -04:00
Jef LeCompte
d9603788bc
fix: use endwith() instead of endWith() 2020-05-22 21:23:25 -04:00
Jef LeCompte
1374aa2aea feat: uses new subsonic format as default
also gets rid of warning that port must be `int` when it's default was a `string`
2020-05-18 10:23:26 -04:00
Adrian Sampson
485abb08c0 Merge pull request #3594 from stlutz/master
Scrape new Genius song page html
2020-05-17 14:44:57 -04:00
stlutz
5d306d6fd9 Remove debugging statement and conform to line length. 2020-05-16 17:48:56 +02:00
stlutz
15402f6aa7 Add alternative scraping algorithm to deal with Genius's new song page html layout. 2020-05-16 17:15:45 +02:00
stlutz
46143d9762 Remove unnecessary intermediate web request to genius.com when fetching lyrics.
The search results already include the correct song page url, making it superfluous to do another request via the /song api just to get it.
2020-05-16 16:28:17 +02:00
Adrian Sampson
d4a82b1fa5
Merge pull request #3592 from thenktor/patch-2
Update genres-tree.yaml
2020-05-16 10:03:44 -04:00
stlutz
ac043f9be0 When fetching lyrics from Genius, search for title and artist.
Searching only for the title and just verifying the artist afterwards leads to songs with very common titles not being found, since Genius limits the amount of returned hits.
An example would be 'Saviour' by 'Circa Waves'.
2020-05-16 13:26:09 +02:00
Thorsten
852cdb6dfa
Update genres-tree.yaml
Added more heavy metal genres: https://en.wikipedia.org/wiki/Heavy_metal_genres
2020-05-16 00:34:37 +02:00
Thorsten
05d202760b
Update genres.txt
Added more heavy metal genres: https://en.wikipedia.org/wiki/Heavy_metal_genres
2020-05-16 00:34:10 +02:00
soergeld
fe418b946e forgot one mb_workid_current occurence 2020-05-14 22:40:37 +02:00
Adrian Sampson
b3656bcab9
Merge pull request #3586 from dosoe/beet_update_parentwork
Fetching parentwork if changed, even if not force
2020-05-14 08:26:30 -04:00
Adrian Sampson
1dcfa03b5b Merge branch 'master' of github.com:beetbox/beets 2020-05-13 08:21:09 -04:00
Adrian Sampson
5db2b4ccaa Fix new flake8 warnings 2020-05-13 08:20:50 -04:00
soergeld
918fea5eca small changes, documentation 2020-05-12 16:05:08 +02:00
Adrian Sampson
4ea69da745
Merge pull request #3588 from MrNuggelz/subsonicplaylist
Fix: subsonicplaylist wrong song selection
2020-05-11 19:11:19 -04:00
MrNuggelz
fd1fd2182b changed "SubstringQuery" to "MatchQuery" to prevent wrong song selection 2020-05-11 20:09:04 +02:00
soergeld
1f93ce5a49 small changes, docs 2020-05-11 16:14:52 +02:00
soergeld
c948530279 Fetching parentwork if changed, even if not force 2020-05-10 13:05:55 +02:00
Adrian Sampson
a907dac16c
Merge pull request #3568 from dosoe/beet_test_new_albuminfo
First try adding new albuminfo and trackinfo class
2020-05-09 10:53:43 -04:00
Adrian Sampson
31a264b299
Merge pull request #3425 from MrNuggelz/subsonicplaylist
Subsonic Playlist Plugin
2020-05-09 10:52:10 -04:00
MrNuggelz
5d90296a20 fixed flake8 issues 2020-05-09 13:16:56 +02:00
Dorian Soergel
d07c1dece9
Merge branch 'master' into beet_test_new_albuminfo 2020-05-09 12:45:13 +02:00
MrNuggelz
4933671c10 review: updated subsonicplaylist.py 2020-05-08 21:37:05 +02:00
soergeld
7c71bb87a2 cleaning up, renaming dup_XXInfo() to copy() 2020-05-08 16:32:12 +02:00
pants108
1a79ae5a9f code review 1 2020-05-05 18:39:05 +00:00
pants108
a553693677 fetchart: clean up invalid tmp files 2020-05-03 17:58:44 +00:00
MrNuggelz
5c3debe236 removed unused imports 2020-05-03 16:07:27 +02:00
Joris
08180f2b5d
Merge branch 'master' into subsonicplaylist 2020-05-03 14:59:22 +02:00
MrNuggelz
13b4a1413d update all songs in one transaction 2020-05-03 14:58:34 +02:00
MrNuggelz
cb7dfe3f6f review: updated subsonicplaylist.py 2020-05-03 14:05:22 +02:00
Sören Tempel
6a03afc65d web plugin: support path queries by separating them with a backslash
Without this change the web plugin does not support path queries as
slashes are currently used for joining keywords in the QueryConverter.
Moreover, flask cannot distinguish between an URL encoded and a plain
'/' character during routing [0]. To work around this issue without
introducing a breaking change (i.e. removing the QueryConverter) use the
backslash character for path queries and convert it later on.

Fixes #3566

[0]: https://github.com/pallets/flask/issues/900
2020-04-27 13:36:36 +02:00
soergeld
f507f04639 reintroduce default arguments, adapt all occurences of TrackInfo and AlbumInfo to the absence of positional arguments 2020-04-27 11:21:13 +02:00
Adrian Sampson
47deb2f084 Switch log level for #3563, fix #3533 2020-04-23 08:03:51 -04:00
Michal Koutenský
5143e630d8 Fix #3533 - crash when calculating RG/R128 mix 2020-04-23 11:05:33 +02:00
Adrian Sampson
99dbe93f85
Merge pull request #3559 from somasis/master
fetchart: improve description of -q flag
2020-04-19 20:47:32 -04:00
Kylie McClain
1c03f58e0d
fetchart: improve description of -q flag 2020-04-19 14:56:15 -04:00
Ashhar Hasan
625e9253c0
Add tests for artist_sort as lyrics search fallback
Adjust doc comment to highlight that artist_sort is used as a fallback
2020-04-19 19:19:07 +05:30
Ashhar Hasan
45c8e51d6c
Fix redundant requests for artist == artist_sort 2020-04-19 19:14:00 +05:30
Ashhar Hasan
a5ef8c7b09
Add artist_sort as the last entry in the artists to search
This will handle cases where the artist name includes some
characters which can cause a search failure for some
websites - mainly unicode.

Fixes https://github.com/beetbox/beets/issues/3340.
2020-04-19 00:50:14 +05:30
Adrian Sampson
269e309513 Slight simplification for #3554 2020-04-17 18:28:21 -04:00
lijacky
9ec0d725e5 Changes given feedback on https://github.com/beetbox/beets/pull/3554 and trimmed sample html 2020-04-17 17:14:21 -04:00
lijacky
8e28f0b694 added null check for genius lyrics scrape 2020-04-16 19:06:17 -04:00
Jack Wilsdon
333d5d1dd3
fetchart: Add Last.fm artwork source 2020-03-30 20:20:59 +01:00
Xavier Hocquet
38ea35aa5e Lint 2020-03-28 11:44:56 -06:00
Xavier Hocquet
58bfe4567e Code review 2020-03-28 11:34:03 -06:00
Andrew Rogl
f306591a99 add the extra_tags option to all required plugins 2020-03-28 17:36:02 +10:00
Xavier Hocquet
1266a04998 Docs, lint, and cleanup beautifulsoup source check 2020-03-19 21:10:52 -06:00
Xavier Hocquet
306571883e Implement tekstowo lyrics provider 2020-03-18 23:00:51 -06:00
Justin Mayer
f465c90e78 Enforce PEP-8 compliance on Fish completion plugin 2020-03-04 07:15:46 +01:00
Justin Mayer
05db0d18eb Don't escape question marks in Fish completions
Fish shell previously interpreted question marks as glob characters, but
that behavior has been deprecated and will soon be removed. Plus, the
completion for `help` and its alias `?` does not currently seem to behave
as expected anyway and is thus, at present, of limited utility.
2020-03-04 07:15:46 +01:00
Justin Mayer
82c3867fc0 Rewrite Fish completion plugin docs & code comments 2020-03-04 07:15:46 +01:00
jmwatte
d2d2b646c1 Add plugin for Fish shell tab completion 2020-03-02 09:51:36 +01:00
Daniel Barber
fe8ba17ced Add quality setting to fetchart plugin 2020-02-22 13:36:35 -05:00
Daniel Barber
96b0e8a33e No longer need to pass a default quality here 2020-02-18 16:44:45 -05:00
Daniel Barber
036202e1c5 Default quality to 0 which means don't specify
From the ImageMagick docs: "The default is to use the estimated quality
of your input image if it can be determined, otherwise 92."

In order to get the original behaviour we need to conditional add the
quality parameter to the `magick` call. The quality range can be
anything from 1 to 100, which gives us the convenience of using 0 to
specify no specific quality level.
2020-02-18 14:50:57 -05:00
Daniel Barber
86946ad4b7 Allow the quality to be set for embedded/fetched cover art 2020-02-17 21:12:20 -05:00
Aidan Epstein
535af4bdb2 parentwork: Only call store when the metadata has changed.
Otherwise, this rewrites all your files every time.
2020-02-17 09:05:52 -08:00
Adrian Sampson
d43d54e21c Try to work around a Werkzeug change? 2020-02-06 22:22:54 -05:00
Adrian Sampson
91be732bf4 Fix whitespace (#3453) 2020-02-06 22:18:15 -05:00
Adrian Sampson
f9088a3eb7
Merge pull request #3453 from faulkt/master
added merge_environment_settings call
2020-02-06 21:54:14 -05:00
Tyler Faulk
964a6c2e63 restored whitespace to please style checker 2020-02-06 12:10:38 -05:00
ybnd
63ea17365a Modify patched stdout in test_malformed_output 2020-02-05 09:04:24 +01:00
ybnd
7005691410 Add comment to clarify unexpected AttributeError handling 2020-02-05 08:52:50 +01:00
ybnd
1ab46c69be Merge remote-tracking branch 'origin/master' into bs1770gain-v0.6.0-parsing
# Conflicts:
#	docs/changelog.rst
2020-02-05 08:45:30 +01:00
ybnd
9bd78424c1 Handle keyboard interrupts more cleanly 2020-02-04 19:16:33 +01:00
Adrian Sampson
95e0f54d7c Fix too-long lines (#3448) 2020-02-02 21:04:55 -05:00
Adrian Sampson
d4d04c61aa
Merge pull request #3448 from xhocquet/genius-lowercase-artist-fix
Genius lyrics fix for API capitalization behaviors
2020-02-02 20:46:24 -05:00
Xavier Hocquet
9f43408f1b Changelog and cleanup 2020-02-02 15:57:43 -07:00
ybnd
4970585b0a Remove temporary workaround for silent exceptions 2020-01-31 14:08:28 +01:00
ybnd
4a427182cd Handle exceptions in pooled threads
* ExceptionWatcher instance running in parallel to the pool, monitoring a queue for exceptions
* Pooled threads push exceptions to this queue, log non-fatal exceptions
* Application exits on fatal exception in pooled thread

* More front end info logs in the CLI
2020-01-31 13:50:38 +01:00
ybnd
bef473c8e8 Remove spliced progress regex and add --suppress-progress flag 2020-01-31 07:42:50 +01:00
ybnd
506be02597 Remove packaging dependency 2020-01-30 20:11:09 +01:00
ybnd
f51a68c7e1 Implement comments 2020-01-30 19:53:05 +01:00
ybnd
c3817a4c06 Implement review comments
* safer version comparison

* regex bytes directly

* handle b'\x08 ...' case

* test_replaygain.py: injected command output should match the type of the actual output
2020-01-30 19:21:53 +01:00
ybnd
65ffca215a Exception handling in main & worker threads
* With `bs1770gain` installed the `Bs1770gainBackend` tests fail, but this should be fixed by https://github.com/beetbox/beets/pull/3480.
2020-01-30 18:04:20 +01:00
ybnd
c1cb78c908 Small fixes in replaygain.Bs1770gainBackend and test_replaygain.py
* Fix unspecified `gain_adjustment` when method defined in config

* Fix difference between dB and LUFS values in case of mismatched `target_level`/`method`:

  ```
  db_to_lufs( target_level <dB> ) - lufs_to_dB( -23 <LUFS> )
  ```

* Ignore single assertion in case of bs1770gain

(cherry picked from commit 2395bf224032c44f1ea5d28e0c63af96a92b96df)
2020-01-30 17:59:57 +01:00
ybnd
c78afb1a97 Don't call bs1770gain outside of try statement 2020-01-30 17:02:28 +01:00
ybnd
53820c0a98 Handle bs1770gain v0.6.0 XML output
* Remove `0%\x08\x08` from output (backspace code doesn't resolve; progress percentages get spliced in)

* Handle changed attributes/fields:
  * `sample-peak` attribute `factor` is called `amplitude` instead
  * Album summary is not included in a `summary` tag now, but in two separate `integrated` and `sample-peak` tags

* Handle `lu` attribute

* Get bs1770gain version
  * If v0.6.0 or later, add `--unit=ebu` flag to convert `db` attributes to LUFS
  * May be useful later on

### Output examples

Track:
```
<!-- analyzing ... -->
<bs1770gain norm="-18.00">
  <track total="1" number="1" file="02 tïtle 0.mp3">
    <integrated lufs="-70.00" lu="52.00"/>
    <sample-peak spfs="-72.28" amplitude="0.00"/>
  </track>
  <integrated lufs="-70.00" lu="52.00"/>
  <sample-peak spfs="-72.28" amplitude="0.00"/>
</bs1770gain>
<!-- done. -->
```

Album:
```
<!-- analyzing ... -->
<bs1770gain norm="-18.00">
  <track total="2" number="1" file="02 tïtle 0.mp3">
    <integrated dbfs="-70.00" db="52.00"/>
    <sample-peak dbfs="-72.28" amplitude="0.00"/>
  </track>
  <track total="2" number="2" file="02 tïtle 1.mp3">
    <integrated dbfs="-70.00" db="52.00"/>
    <sample-peak dbfs="-72.28" amplitude="0.00"/>
  </track>
  <integrated dbfs="-70.00" db="52.00"/>
  <sample-peak dbfs="-72.28" amplitude="0.00"/>
</bs1770gain>
<!-- done. -->
```
2020-01-30 16:13:29 +01:00
ybnd
b903584163 Fix --threads argument handling 2020-01-30 13:31:14 +01:00
ybnd
b126ecafdd Clean up single/multithreaded execution selection logic
As suggested in https://github.com/beetbox/beets/pull/3478#discussion_r372467445
2020-01-30 12:38:20 +01:00
ybnd
0fede91bbd Workaround to pass ReplayGainLdnsCliMalformedTest.test_malformed_output ~ Python 3.8 2020-01-30 12:07:42 +01:00
ybnd
79c5535cf6 Open/close pool at begin/end of import session 2020-01-30 09:35:22 +01:00
ybnd
388d2d2c0d Consolidate ThreadPool checking, opening and closing into methods 2020-01-30 09:35:22 +01:00
ybnd
42e895c239 Match --jobs default & signature to that of convert plugin (--threads)
And change local function `func` to `ReplayGainPlugin` method `replaygain_func` so that `self` is passed explicitly
2020-01-30 09:35:22 +01:00
ybnd
d95bb5683b Analyze replaygain in parallel with multiprocessing.pool.ThreadPool
* Add `--jobs` or `-j` to `replaygain`-> set the pool size
* Single-threaded execution by default, if `--jobs` is unset

* If multithreaded, calls `Backend.compute_album_gain` or `Backend.compute_track_gain` asynchronously with metadata storing/writing in the callback
2020-01-28 21:20:21 +01:00
BrainDamage
f118314682 support for keyfinder-cli, which doesn't want the -f flag for paths 2020-01-14 05:07:33 +01:00
MrNuggelz
6d69d01016 added database changed event to subsonicplaylist 2020-01-13 15:43:20 +01:00
Adrian Sampson
a08f2315ea Simplify Confuse usage (#3463) 2019-12-26 20:44:14 -05:00
Mat
2593a5be34 Use a local var to use high resolution option 2019-12-26 21:55:48 +00:00
Mat
3570f5cd56 New high_resolution config option in fetchart 2019-12-26 17:36:56 +00:00
Cole Miller
e945ed894d
Add trailing comma
Co-Authored-By: Adrian Sampson <adrian@radbox.org>
2019-12-18 14:31:59 -05:00
Cole Miller
6c948764fe Wrap comment lines 2019-12-17 17:56:56 -05:00
Cole Miller
614289af5f Remove use of `list.clear()' for compatibility 2019-12-17 17:46:43 -05:00
Cole Miller
3ccafa2495 Fix `str.join' usage 2019-12-17 17:40:16 -05:00
Cole Miller
8805ba28fd Add comments 2019-12-17 16:33:41 -05:00
Cole Miller
02e03be93d Incorporate divisions into track titles 2019-12-17 15:38:54 -05:00
Cole Miller
e31695b606 Trace hierarchy of index tracks 2019-12-17 15:27:26 -05:00
Cole Miller
6889b9ffdc Add `index_tracks' configuration option 2019-12-17 13:43:53 -05:00
Tyler Faulk
a1af5d280e added merge_environment_settings call in fetchart plugin to handle connections with proxy servers 2019-12-10 22:54:31 -05:00
Adrian Sampson
9739e9be9b Docs tweaks for #3449 2019-12-09 15:55:31 -05:00
Jef LeCompte
89f21d9601
Updated documentation 2019-12-09 07:13:25 -05:00
Jef LeCompte
5a38e1b35c
Refactored token generation and updated comments based on suggestions.
Also updated documentation to note the password options.
2019-12-06 18:30:52 -05:00
Jef LeCompte
1690c08e77
Added URL to config and deprecated old configuration 2019-12-06 15:05:36 -05:00
Xavier Hocquet
c8e8e587f8 Add debug logger for Genius lyrics no-match 2019-12-05 20:06:49 -07:00
Xavier Hocquet
d43cf35ad2 Strip and lowercase Genius lyrics artist comparison 2019-12-05 20:06:46 -07:00
Aidan Epstein
9c479659b2 Increment playlist_version when a track is consumed.
This fixes the playlist not updating when in consume mode, at least in
ncmpcpp.
2019-11-24 19:27:09 -08:00
MrNuggelz
e9dee5dca8 added flag to delete old tags 2019-11-16 20:30:53 +01:00
MrNuggelz
bb305b17e1 set tags instead of creating m3u 2019-11-16 14:37:41 +01:00
Joris
ec696f5e58
Removed unused sanitize_path import 2019-11-11 10:48:29 +01:00
MrNuggelz
0191794285 subsonicplaylist plugin 2019-11-10 22:34:12 +01:00
msil
1f665b0290 adding discogs_labelid and discogs_artistid fields 2019-10-24 10:13:37 +00:00
Adrian Sampson
a7671e16a6 Merge pull request #3409 from jackwilsdon/hook-check-call
hook: switch to using check_call
2019-10-17 11:12:06 -04:00
Jack Wilsdon
430eab2cf0
Switch to using check_call for hooks 2019-10-17 11:00:59 +01:00
Austin Marino
c1b646ff27
Merge branch 'master' into Extended_Export_Plugin_Support 2019-10-15 15:35:42 -07:00
Austin Marino
7f6630c006 removed xml configs from doc and code 2019-10-15 14:16:23 -07:00
Adrian Sampson
3aa2c33ac6
Merge pull request #3406 from MrNuggelz/unimported
unimported files plugin
2019-10-15 17:13:31 -04:00
MrNuggelz
d11e14b1a0 improvements from review #2 2019-10-15 21:54:35 +02:00
Austin Marino
eb6055eeca Cleaned up comments and code 2019-10-15 11:45:01 -07:00
Joris
3d15eaff2e
Removed unused import 2019-10-15 16:35:21 +02:00
MrNuggelz
6be6ded022 don't list album art paths as unimported 2019-10-15 16:03:12 +02:00
MrNuggelz
c7e81d8b81 improvements from review 2019-10-15 15:32:50 +02:00
MrNuggelz
b6588edac5 unimported files plugin 2019-10-15 12:04:04 +02:00
Austin Marino
4251ff70dc updated the way in which xml is outputted 2019-10-15 00:15:45 -07:00
Austin Marino
0d818eced5 Ran test to ensure it works 2019-10-14 17:02:39 -07:00
Austin Marino
fa2c9ba259 Aligned export related code with flake8 standards 2019-10-13 11:36:33 -07:00
Austin Marino
ec705fae1e Updated documents and comments to reflcet recent code changes. Cleaned up code to better follow PEP-8 conventions and just work more efficiently all around. 2019-10-12 15:41:06 -07:00
Austin Marino
0e2c1e0d56 Made changes to reflect comments and suggestions made by sampsyo 2019-10-12 14:47:44 -07:00
Austin Marino
c31b488e54 Updated class fields to allow for easier unit testing 2019-10-10 19:35:49 -07:00
Austin Marino
a8a480a691 Updated config formats 2019-10-10 16:33:46 -07:00
Jack Wilsdon
d91da56745
Fix various typos 2019-10-10 08:50:09 +01:00
Austin Marino
e5b43d4bf4 Extended the file type export options to include not only JSON but also XML and CSV 2019-10-09 00:52:49 -07:00
Rahul Ahuja
32ea225fad Guard against "empty" albums 2019-10-05 23:12:53 -07:00
Rahul Ahuja
ce90b2aae5 Improve documentation 2019-10-05 15:07:20 -07:00
Rahul Ahuja
a7cdaac5f8 Consistent naming 2019-10-03 22:57:28 -07:00
Rahul Ahuja
0685305efb Only sync tracks in library 2019-10-03 22:53:35 -07:00
Rahul Ahuja
6c49afaf22 Better naming 2019-10-03 22:49:32 -07:00
Rahul Ahuja
ea03c7fac2 Better readability 2019-10-03 22:16:32 -07:00
Rahul Ahuja
5e6b8f5264 DRY album/track distances 2019-10-03 22:04:30 -07:00
Rahul Ahuja
14b8f30ead Appease flake8 2019-10-03 19:13:40 -07:00
Rahul Ahuja
a1885a571b Add documentation, fix circular import 2019-10-03 19:03:04 -07:00
Rahul Ahuja
f14137fcc2 Add BPSyncPlugin 2019-10-03 18:04:12 -07:00
Rahul Ahuja
3ffaaa1f37 Default bpm to None 2019-09-28 11:37:58 -07:00
Rahul Ahuja
7b9ebcbf2f Properly guard against None key 2019-09-27 17:48:28 -07:00
Rahul Ahuja
13792bd8ab Always set musical_key 2019-09-27 17:33:49 -07:00
Rahul Ahuja
4bc057fd5e Exclude invalid musical keys 2019-09-27 17:11:47 -07:00
temrix
dfb6fc3f5b
Test for presence and non-emptiness in one go. 2019-09-21 21:14:11 +02:00
temrix
9a4175dcd0
Return value directly. 2019-09-21 21:13:41 +02:00
temrix
f98010ad23
Add 'look before you leap' defensive code. 2019-09-21 16:09:08 +02:00
temrix
b4edc1f832
Add bpm, musical_key and genre to plugin. 2019-09-19 00:29:43 +02:00
Rahul Ahuja
ca5806fb6e Restrict country code to alpha characters 2019-09-15 16:34:20 -07:00
Rahul Ahuja
01e8643cec Revert to optional capturing group 2019-09-15 16:24:32 -07:00
Rahul Ahuja
a5fadf0dcc Integrate MetadataSourcePlugin 2019-09-15 15:59:24 -07:00
Rahul Ahuja
0b2837dd4f Revert Spotify, Discogs changes 2019-09-11 00:37:23 -07:00
Rahul Ahuja
6cfe7adb6c Use qualified import 2019-09-11 00:26:48 -07:00
Rahul Ahuja
ed80e915fe Move get_distance --> beets.plugins 2019-09-11 00:07:43 -07:00
Rahul Ahuja
876c0f733f Appease flake8 2019-09-10 23:52:35 -07:00
Rahul Ahuja
dfdf8ded33 Add missing import 2019-09-10 22:55:41 -07:00
Rahul Ahuja
84b13475e0 Move get_distance to beets.autotag 2019-09-09 19:13:24 -07:00
Rahul Ahuja
c531b1628e Avoid circular import 2019-09-09 18:28:20 -07:00
Rahul Ahuja
68e91b18b0 Fix discogs.py MetadataSourcePlugin refs 2019-09-09 17:33:42 -07:00
Rahul Ahuja
732e372ed2 Rename/move to plugins.MetadataSourcePlugin, fix formatting 2019-09-09 17:31:42 -07:00
Rahul Ahuja
0a700c75a2 Optional capturing groups 2019-09-07 01:07:44 -07:00
Rahul Ahuja
bdb7565500 Avoid nested capturing groups 2019-09-07 00:48:19 -07:00
Rahul Ahuja
4a6fa5657b Formatting 2019-09-06 13:11:28 -07:00
Rahul Ahuja
12a8e0a792 Fix Spotify API error formatting 2019-09-06 12:41:24 -07:00
Rahul Ahuja
0d6df42d5f Use Abstract Base Class 2019-09-06 12:08:26 -07:00
Rahul Ahuja
a3fb8ebfff Formatting 2019-09-04 22:56:09 -07:00
Rahul Ahuja
f7c6b5ba7f Fix str format arg order 2019-09-04 22:32:55 -07:00
Rahul Ahuja
30cfd7ff80 Use positional str.format arg 2019-09-04 21:18:07 -07:00
Rahul Ahuja
8010488f37 Modularize distance 2019-09-04 21:03:22 -07:00
Rahul Ahuja
1b05912ab9 Appease flake8 2019-09-04 20:39:46 -07:00
Rahul Ahuja
f64bd65ddb Remove unnecessary indexing 2019-09-04 20:11:30 -07:00
Rahul Ahuja
bd0cea9f1b Factor out APIAutotaggerPlugin 2019-09-04 19:50:04 -07:00
Rahul Ahuja
4a552595df Simplify regex match 2019-09-02 14:27:51 -07:00
Rahul Ahuja
9babce582d Fix track data enumeration idx 2019-09-01 21:24:56 -07:00
Rahul Ahuja
2ab883a20e Fix track.index assignment 2019-09-01 21:23:16 -07:00
Rahul Ahuja
70264ee6ee Handle empty deezer_id upfront 2019-09-01 21:18:08 -07:00
Rahul Ahuja
cd1aa3e8aa Avoid empty deezer_id string 2019-09-01 20:10:34 -07:00
Rahul Ahuja
43f09296c9 Fix AlbumInfo.album_credit assignment 2019-09-01 19:50:55 -07:00
Rahul Ahuja
2177c7695a Stringify Deezer ID 2019-09-01 19:44:27 -07:00
Rahul Ahuja
790ca805d5 Formatting 2019-09-01 18:34:06 -07:00
Rahul Ahuja
2cf55ee893 Add deezer.rst doc, remove unused options 2019-09-01 18:33:27 -07:00
Rahul Ahuja
804397bb12 Appease flake8 2019-09-01 18:13:19 -07:00
Rahul Ahuja
6e5e8a9cb0 Add Deezer plugin 2019-09-01 17:53:56 -07:00
Vexatos
7aab50b7b8
convert: Reduce amount of duplicate code for linking.
Also slightly reworded documentation.
2019-08-21 12:19:47 +02:00
Vexatos
aeb7d8846e
convert: disable album-art embedding for linked files.
Fixed flag precedence of link and hardlink over their options.
Fixed formatting issue.
2019-08-20 16:40:02 +02:00
Vexatos
a61aa74061
convert: add option to hardlink instead of copying.
Overrides the --link option.

As proposed in #2324.
2019-08-20 16:07:01 +02:00
Kier Davis
4820cee35c
convert: add option to symlink instead of copying
As proposed in #2324.

Updated commit from #2326.

Co-authored-by: Vexatos <stuarzt@gmx.de>
2019-08-20 14:50:44 +02:00
Sebastian Pucilowski
a2ee8da8d6 Refactor magic values in discogs_client 2019-08-11 11:21:22 +10:00
Rahul Ahuja
7ec3632309 Fix year assignment with year-only release date 2019-08-03 19:07:56 -07:00
Samuel Nilsson
6e24669d61 Fix #3341 2019-08-03 22:51:40 +02:00
Guilherme Danno
4908028985
Use the 'resource_url' from discogs_client 2019-07-30 16:46:59 -03:00
Samuel Nilsson
60c174101f ffmpeg replaygain backend: Only calculate replaygain for audio stream. Fixed documentation for backend option. 2019-07-29 10:32:19 +02:00
Zsin Skri
e3645dfd59
Merge branch 'master' into r128-targetlevel-config 2019-07-25 23:22:32 +02:00
Zsin Skri
a9f70f8151 apply suggested improvements
Apply improvements suggested in GitHub PullRequest #3065:
- be idiomatic
  - 0 is falsy
  - check enum equality, not identity
  - mutate list by constructing a new one
- improve documentation
  - fix a typo
  - do not mention deprecation of a config option
2019-07-26 01:02:03 +02:00
Adrian Sampson
84032e56e2 Merge pull request #3334 from MartyLake/martylake_add_forward_slash_option
Add option to force forward slashes in paths
2019-07-24 22:11:59 -04:00
Paul Malcolm
5f9a394ca9 Issue #2860 Fetch more acousticbrainz fields 2019-07-23 20:25:26 -04:00
MartyLake
076a82daa6 Review: Rename method 2019-07-24 00:09:52 +02:00
MartyLake
ee7f939336 Review: Remove stray blank line 2019-07-23 23:53:50 +02:00
MartyLake
aa1da3166f Review: Remove unnecessary parens 2019-07-23 23:53:17 +02:00
MartyLake
dd9de05968 Review: Remove unnecessary split of concat 2019-07-23 23:50:20 +02:00
MartyLake
da864402d5 Review: Remove unnecessary get 2019-07-23 23:49:17 +02:00
MartyLake
d1ba309f36 Add a new method that copied pathlib.path.as_posix 2019-07-23 17:17:40 +02:00
Zsin Skri
e7e2c424e7 replaygain: targetlevel and peak_method depends on tag format
Allow to configure the target level for R128_* tags separately from REPLAYGAIN_*
tags and skip peak calculation for R128_* tags if possible.
2019-07-22 13:42:22 +02:00
Zsin Skri
0c8eead459 replaygain: pass target_level and peak to backends
Configure the replaygain analysis by passing arguments to the Backends. This
avoids the difference between ReplayGain and EBU r128 backends; every Backend
can now fulfil both tasks. Additionally it eases Backend development as the
difference between the two tag formats is now completely handled in the main
Plugin, not in the Backends.
2019-07-22 12:58:54 +02:00
Zsin Skri
e5f2fe6fd3 avoid test failure
Use the POSIX character class instead of `\s` to match all whitespace in a
regular expression describing the language of valid inputs, in order to avoid a
test failure for the invalid escape sequence `\s` in Python strings.
2019-07-21 01:28:16 +02:00
Zsin Skri
f9ff56f496 improve wording in the ffmpeg replaygain backend
This commit mostly addresses feedback:
- remove some unused parenthesis
- fix a typo
- expand some docstrings
- document that ffmpeg is usually easy to install
2019-07-21 01:18:49 +02:00
Zsin Skri
271a3c980c replaygain: ffmpeg: increase parser readability
Use keyword arguments to make the ffmpeg parser more readable.
2019-07-19 21:54:47 +02:00
Zsin Skri
c3af5b3763 replaygain: add ffmpeg backend
Add replaygain backend using ffmpeg's ebur128 filter.

The album gain is calculated as the mean of all BS.1770 gating block powers.
Besides differences in gating block offset, this should be equivalent to a
BS.1770 analysis of a proper concatenation of all tracks.

Just calculating the mean of all track gains (as implemented by the bs1770gain
backend) yields incorrect results as that would:
- completely ignore track lengths
  - just using length in seconds won't work either (e.g. BS.1770 ignores
    passages below a threshold)
- take the mean of track loudness, not power

When using the ffmpeg replaygain backend to create R128_*_GAIN tags, the
targetlevel will be set to -23 LUFS. GitHub PullRequest #3065 will make this
configurable.
It will also skip peak calculation, as there is no R128_*_PEAK tag.

It is checked if the libavfilter library supports replaygain calculation. Before
version 6.67.100 that did require the `--enable-libebur128` compile-time-option,
after that the ebur128 library is included in libavfilter itself. Thus we
require either a recent enough libavfilter version or the `--enable-libebur128`
option.
2019-07-19 21:54:47 +02:00
Zsin Skri
7a7314ee3f Allow other ReplayGain backends to support R128.
Previously using EBU R128 forced the use of the bs1770gain backend.
This change adds a whitelist of backends supporting R128. When the configured
backend is in that list it will also be used for R128 calculations. Otherwise
bs1770gain is still used as a default.

This should not change the overall behaviour of the program at all, but allow
for further R128-supporting backends to be added.
2019-07-19 21:54:47 +02:00
Zsin Skri
30395911e2 util.command_output: return stderr, too
Return a namedtuple CommandOutput(stdout, stderr) instead of just stdout from
util.command_ouput, allowing separate access to stdout and stderr.

This change is required by the ffmpeg replaygain backend (GitHub
PullRequest #3056) as ffmpeg's ebur128 filter outputs only to stderr.
2019-07-14 18:32:59 +02:00
Adrian Sampson
e39341b282 Merge pull request #3322 from thedevilisinthedetails/master
465 discogs: Fetch a few more metadata fields
2019-07-01 17:22:50 -04:00
Peter
0cd46dab77 fixing per review comments 2019-07-01 21:04:35 +02:00
Peter
dd7e932a9a removing print log 2019-06-30 14:34:13 +02:00
Peter
e196c1dae6 fixing test 2019-06-30 13:54:38 +02:00
Peter
510276f653 fixing test 2019-06-30 13:44:13 +02:00
Adrian Sampson
73f8edd116 Simplify force check (#3318) 2019-06-27 22:44:57 -04:00
Adrian Sampson
0726123e41 Move PROBE_FIELD to module scope (#3318) 2019-06-27 22:43:18 -04:00
Susanna Maria
b20516e552 Small improvement of code doc 2019-06-26 20:29:17 +02:00
Susanna Maria
cab97c58d4 Pep8 drives me sometimes crazy 2019-06-25 20:57:43 +02:00
Susanna Maria
932d18a838 Pep8 error ... 2019-06-25 20:37:12 +02:00
Susanna Maria
f254b33c6e Findings from PR 2019-06-25 20:22:26 +02:00
Susanna Maria
6e179d86e6 Pep8 bugfix 2019-06-23 17:43:40 +02:00
Susanna Maria
0242176b40 Why binary import of json? 2019-06-23 16:59:33 +02:00
Susanna Maria
1643eea3f5 Parameter handling 2019-06-23 13:04:17 +02:00
Zsin Skri
f645400c5e replaygain: adapt to mediafile commit 95e569a
Since commit 95e569a, mediafile takes care of the float -> Q7.8 conversion in
R128 GAIN tags by itself.

From `store_album_r128_gain` this conversion was already missing, remove it from
`store_track_r128_gain`, too.

fixes #3311
2019-06-18 23:17:38 +02:00
Peter
90cf579ee3 adding genre, released_date and discogs_release_id 2019-06-16 21:55:35 +02:00
Adrian Sampson
7dd0ed77f9 Merge pull request #3302 from Holzhaus/fix-3301
beetsplug/importadded: Add missing path kwarg to update_after_write_time()
2019-06-11 11:50:36 -04:00
Adrian Sampson
ed30a7aed2 Merge pull request #3251 from thedevilisinthedetails/master
#2579 Adding styles to discogs plugin
2019-06-10 13:26:09 -04:00
Peter
7ec1fc934b removing unneeded condition 2019-06-10 15:54:19 +02:00
Peter
9bdadc5c73 removing extra line 2019-06-10 09:33:10 +02:00
Peter
55e003a3d4 fixing per review comments 2019-06-10 09:11:38 +02:00
Peter
f0c91b8f45 fixing per review comments 2019-06-09 20:01:55 +02:00
Peter
2c49c12166 fixing per review comments 2019-06-09 15:44:37 +02:00
Peter
5fc21a1e21 fixing per review comments 2019-06-09 15:39:49 +02:00
Peter
851c413976 adding config option for seperator and addressing review comments 2019-06-09 10:37:33 +02:00
Adrian Sampson
9fcb66b3c8 Nicer string wrap 2019-06-08 21:35:56 -04:00
Adrian Sampson
c2fdf04539 Merge pull request #3279 from dosoe/beets_parentwork_3
add parentwork plugin
2019-06-08 21:35:05 -04:00
Dorian Soergel
9d184e3cad docstrings and style 2019-06-08 22:58:05 +02:00
Dorian Soergel
fd14b5b649 docstrings and style 2019-06-08 22:55:05 +02:00
Dorian Soergel
c96dcfffb6 docstrings and style 2019-06-08 22:44:33 +02:00
Adrian Sampson
f865fc00cd replaygain: Fix py3 crash in audiotools backend
Fixes #3305.
2019-06-08 16:23:49 -04:00
Samuel Nilsson
b8b99d9396 Merge branch 'master' into replaygain 2019-06-08 16:15:27 +02:00
Dorian Soergel
070f50e1e7 docstring 2019-06-07 17:16:03 +02:00