* Deals with gain values of 0 in SoundCheck files by interpreting them
as 0.0dB rather than causing an exception
* Return default values if SoundCheck tag is malformed in some way
* Other misc changes for compactness
* Adds 2 functions to convert between SoundCheck and ReplayGain
* Adds relevant StorageStyle to rg_track_* for SoundCheck
* Adds a new packing type for SoundCheck
* Modifies StorageStyle to accept a lang argument
* Modifies StorageStyle to allow specifying Packed out_type
* Modifies MediaField to write COMM frames with a lang attribute
The lastgenre command should always log what it's doing so the user can see
the progress being made. If you really don't want any output, just pipe to
/dev/null.
* util.prune_dirs modified to accept glob patterns as clutter to determine emptiness.
* config option, 'clutter' (a list of filenames/glob patterns)
* ImportTask.prune passes this option's value to prune_dirs.
For example, catalogue numbers like "[REACT217]". This shouldn't bypass the
nested multi-disc detection and automatically include all subdirs.
Do nested multi-disc detection first, so that `collapse_pat` is only set for
flattened albums, and we can skip the ancestry check on subsequent folders.
- Remove "part", "volume", "vol." multi-disc markers. These are often
part of album titles, and not necessarily indicative of a multi-disc
album. Only look for "CD X" and "disc X" (case insensitive), ignoring
white space and other non-word characters.
- Don't only expect each disc to be in a subdirectory of a common parent
directory, with all siblings belonging to the same release. Also match
any consecutive siblings (even when the parent contains other albums)
that are named with the same prefix and multi-disc marker.
- The `albums_in_dir(path)` function now always yields a list of paths
along with each list of items. `ItemTask.path` is now always a list of
paths.
- The `displayable_path(path)` function now accepts a list of paths, and
will join them with "; " by default. This can be changed with the
`separator` argument.
- The `sorted_walk()` function now does a case insensitive sort on
directories, but still returns case sensitive results. This allows
better multi-disc album detection.
- The `art_for_album()` function now takes a list of paths as its second
argument, instead of a single path.
This provides a default for source, preventing a crash when not present in the
user's config.
It also refactors the source decision to a helper function, _lastfm_obj, to
avoid copypasta.