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
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
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
wisp3rwind
feb5041f57
replaygain: remove debugging leftovers
2021-03-18 14:29:28 +01:00
Aksh Gupta
79858975a9
chore: refactor code quality issues
2021-03-11 08:45:42 +05:30
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
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
ybnd
363f71af2e
Move OperationalError handler to test_replaygain.py
2020-12-14 22:10:54 +01: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
Adrian Sampson
5db2b4ccaa
Fix new flake8 warnings
2020-05-13 08:20:50 -04: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
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
9bd78424c1
Handle keyboard interrupts more cleanly
2020-02-04 19:16:33 +01: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