beets 1.3.8
This release has two big new chunks of functionality. Queries now support sorting and user-defined fields can now have types.
If you want to see all your songs in reverse chronological order, just type beet list year-. It couldn't be easier.
Flexible field types mean that some functionality that has previously only worked for built-in fields, like range queries, can now work with plugin- and user-defined fields too. For starters, the /plugins/echonest/ and mpdstats now mark the types of the fields they provide---so you can now say, for example, beet ls liveness:0.5..1.5 for the Echo Nest "liveness" attribute. The types makes it easy to specify field types in your config file.
One upgrade note: if you use the discogs, you will need to upgrade the Discogs client library to use this version. Just type pip install -U discogs-client.
Other new features:
info: Target files can now be specified through library queries (in addition to filenames). The--libraryoption prints library fields instead of tags. Multiple files can be summarized together with the new--summarizeoption.mbcollection: A new option lets you automatically update your collection on import. Thanks to Olin Gay.convert: A newnever_convert_lossy_filesoption can prevent lossy transcoding. Thanks to Simon Kohlmeyer.convert: A new--yescommand-line flag skips the confirmation.
Still more fixes and little improvements:
- Invalid state files don't crash the importer.
 lyrics: Only strip featured artists and parenthesized title suffixes if no lyrics for the original artist and title were found.- Fix a crash when reading some files with missing tags.
 discogs: Compatibility with the new 2.0 version of the discogs_client Python library. If you were using the old version, you wil need to upgrade to the latest version of the library to use the correspondingly new version of the plugin (e.g., withpip install -U discogs-client). Thanks to Andriy Kohut.- Fix a crash when writing files that can't be read. Thanks to Jocelyn De La Rosa.
 - The 
statscommand now counts album artists. The album count also more accurately reflects the number of albums in the database. convert: Avoid crashes when tags cannot be written to newly converted files.- Formatting templates with item data no longer confusingly shows album-level data when the two are inconsistent.
 - Resuming imports and beginning incremental imports should now be much faster when there is a lot of previously-imported music to skip.
 lyrics: Remove<script>tags from scraped lyrics. Thanks to Bombardment.play: Add arelative_toconfig option. Thanks to BrainDamage.- Fix a crash when a MusicBrainz release has zero tracks.
 - The 
--versionflag now works as an alias for theversioncommand. lastgenre: Remove some unhelpful genres from the default whitelist. Thanks to gwern.importfeeds: A newechooutput mode prints files' paths to standard error. Thanks to robotanarchy.replaygain: Restore some error handling whenmp3gainoutput cannot be parsed. The verbose log now contains the bad tool output in this case.convert: Fix filename extensions when converting automatically.- The 
writeplugin event allows plugins to change the tags that are written to a media file. zero: Do not delete database values; only media file tags are affected.