-------------------------
Version 1.4 has **alpha-level** Python 3 support. Thanks to the heroic efforts
of :user:`jrobeson`, beets should run both under Python 2.7, as before, and
now under Python 3.4 and above. The support is still new: it undoubtedly
contains bugs, so it may replace all your music with Limp Bizkit---but if
you're brave and you have backups, please try installing on Python 3. Let us
know how it goes.
If you package beets for distribution, here's what you'll want to know:
* This version of beets now depends on the `six`_ library.
* We also bumped our minimum required version of `Mutagen`_ to 1.33 (from
1.27).
* Please don't package beets as a Python 3 application *yet*, even though most
things work under Python 3.4 and later.
This version also makes a few changes to the command-line interface and
configuration that you may need to know about:
* :doc:`/plugins/duplicates`: The ``duplicates`` command no longer accepts
multiple field arguments in the form ``-k title albumartist album``. Each
argument must be prefixed with ``-k``, as in ``-k title -k albumartist -k
album``.
* The old top-level ``colors`` configuration option has been removed (the
setting is now under ``ui``).
* The deprecated ``list_format_album`` and ``list_format_item``
configuration options have been removed (see :ref:`format_album` and
:ref:`format_item`).
The are a few new features:
* :doc:`/plugins/mpdupdate`, :doc:`/plugins/mpdstats`: When the ``host`` option
is not set, these plugins will now look for the ``$MPD_HOST`` environment
variable before falling back to ``localhost``. Thanks to :user:`tarruda`.
:bug:`2175`
* :doc:`/plugins/web`: Added an ``expand`` option to show the items of an
album. :bug:`2050`
* :doc:`/plugins/embyupdate`: The plugin can now use an API key instead of a
password to authenticate with Emby. :bug:`2045` :bug:`2117`
* :doc:`/plugins/acousticbrainz`: The plugin now adds a ``bpm`` field.
* ``beet --version`` now includes the Python version used to run beets.
* :doc:`/reference/pathformat` can now include unescaped commas (``,``) when
they are not part of a function call. :bug:`2166` :bug:`2213`
* The :ref:`update-cmd` command takes a new ``-F`` flag to specify the fields
to update. Thanks to :user:`dangmai`. :bug:`2229` :bug:`2231`
And there are a few bug fixes too:
* :doc:`/plugins/convert`: The plugin no longer asks for confirmation if the
query did not return anything to convert. :bug:`2260` :bug:`2262`
* :doc:`/plugins/embedart`: The plugin now uses ``jpg`` as an extension rather
than ``jpeg``, to ensure consistency with the :doc:`plugins/fetchart`.
Thanks to :user:`tweitzel`. :bug:`2254` :bug:`2255`
* :doc:`/plugins/embedart`: The plugin now works for all jpeg files, including
those that are only recognizable by their magic bytes.
:bug:`1545` :bug:`2255`
* :doc:`/plugins/web`: The JSON output is no longer pretty-printed (for a
space savings). :bug:`2050`
* :doc:`/plugins/permissions`: Fix a regression in the previous release where
the plugin would always fail to set permissions (and log a warning).
:bug:`2089`
* :doc:`/plugins/beatport`: Use track numbers from Beatport (instead of
determining them from the order of tracks) and set the `medium_index`
value.
* With :ref:`per_disc_numbering` enabled, some metadata sources (notably, the
:doc:`/plugins/beatport`) would not set the track number at all. This is
fixed. :bug:`2085`
* :doc:`/plugins/play`: Fix ``$args`` getting passed verbatim to the play
command if it was set in the configuration but ``-A`` or ``--args`` was
omitted.
* With :ref:`ignore_hidden` enabled, non-UTF-8 filenames would cause a crash.
This is fixed. :bug:`2168`
* :doc:`/plugins/embyupdate`: Fixes authentication header problem that caused
a problem that it was not possible to get tokens from the Emby API.
* :doc:`/plugins/lyrics`: Some titles use a colon to separate the main title
from a subtitle. To find more matches, the plugin now also searches for
lyrics using the part part preceding the colon character. :bug:`2206`
* Fix a crash when a query uses a date field and some items are missing that
field. :bug:`1938`
* :doc:`/plugins/discogs`: Subtracks are now detected and combined into a
single track, two-sided mediums are treated as single discs, and tracks
have ``media``, ``medium_total`` and ``medium`` set correctly. :bug:`2222`
:bug:`2228`.
* :doc:`/plugins/missing`: ``missing`` is now treated as an integer, allowing
the use of (for example) ranges in queries.
* :doc:`/plugins/smartplaylist`: Playlist names will be sanitized to
ensure valid filenames. :bug:`2258`
* The ID3 APIC tag now uses the Latin-1 encoding when possible instead of a
Unicode encoding. This should increase compatibility with other software,
especially with iTunes and when using ID3v2.3. Thanks to :user:`lazka`.
:bug:`899` :bug:`2264` :bug:`2270`
The last release, 1.3.19, also erroneously reported its version as "1.3.18"
when you typed ``beet version``. This has been corrected.
.. _six: https://pypi.org/project/six/