diff --git a/AUTHORS b/AUTHORS index 3794a267..8269452d 100644 --- a/AUTHORS +++ b/AUTHORS @@ -28,3 +28,4 @@ - Pavol Babincak - Javier Domingo - Lasse Bigum +- David Eisner diff --git a/docs/api/audio.rst b/docs/api/audio.rst index 2b9f6cc5..550ca890 100644 --- a/docs/api/audio.rst +++ b/docs/api/audio.rst @@ -28,3 +28,10 @@ Audio listener .. autoclass:: mopidy.audio.AudioListener :members: + + +Audio scanner +============= + +.. autoclass:: mopidy.audio.scan.Scanner + :members: diff --git a/docs/api/commands.rst b/docs/api/commands.rst new file mode 100644 index 00000000..f0469350 --- /dev/null +++ b/docs/api/commands.rst @@ -0,0 +1,9 @@ +.. _commands-api: + +************ +Commands API +************ + +.. automodule:: mopidy.commands + :synopsis: Commands API for Mopidy CLI. + :members: diff --git a/docs/api/index.rst b/docs/api/index.rst index bb29890b..f58552b7 100644 --- a/docs/api/index.rst +++ b/docs/api/index.rst @@ -13,6 +13,7 @@ API reference core audio frontends + commands ext config http diff --git a/docs/changelog.rst b/docs/changelog.rst index 59d8524a..acb94e3d 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -5,6 +5,126 @@ Changelog This changelog is used to track all major changes to Mopidy. +v0.17.0 (2013-11-23) +==================== + +The focus of 0.17 has been on introducing subcommands to the ``mopidy`` +command, making it possible for extensions to add subcommands of their own, and +to improve the default config file when starting Mopidy the first time. In +addition, we've grown support for Zeroconf publishing of the MPD and HTTP +servers, and gotten a much faster scanner. The scanner now also scans some +additional tags like composers and performers. + +Since the release of 0.16, we've closed or merged 22 issues and pull requests +through about 200 commits by :ref:`five people `, including one new +contributor. + +**Commands** + +- Switched to subcommands for the ``mopidy`` command , this implies the + following changes: (Fixes: :issue:`437`) + + ===================== ================= + Old command New command + ===================== ================= + mopidy --show-deps mopidy deps + mopidy --show-config mopidy config + mopidy-scan mopidy local scan + ===================== ================= + +- Added hooks for extensions to create their own custom subcommands and + converted ``mopidy-scan`` as a first user of the new API. (Fixes: + :issue:`436`) + +**Configuration** + +- When ``mopidy`` is started for the first time we create an empty + :file:`{$XDG_CONFIG_DIR}/mopidy/mopidy.conf` file. We now populate this file + with the default config for all installed extensions so it'll be easier to + set up Mopidy without looking through all the documentation for relevant + config values. (Fixes: :issue:`467`) + +**Core API** + +- The :class:`~mopidy.models.Track` model has grown fields for ``composers``, + ``performers``, ``genre``, and ``comment``. + +- The search field ``track`` has been renamed to ``track_name`` to avoid + confusion with ``track_no``. (Fixes: :issue:`535`) + +- The signature of the tracklist's + :meth:`~mopidy.core.TracklistController.filter` and + :meth:`~mopidy.core.TracklistController.remove` methods have changed. + Previously, they expected e.g. ``tracklist.filter(tlid=17)``. Now, the value + must always be a list, e.g. ``tracklist.filter(tlid=[17])``. This change + allows you to get or remove multiple tracks with a single call, e.g. + ``tracklist.remove(tlid=[1, 2, 7])``. This is especially useful for web + clients, as requests can be batched. This also brings the interface closer to + the library's :meth:`~mopidy.core.LibraryController.find_exact` and + :meth:`~mopidy.core.LibraryController.search` methods. + +**Audio** + +- Change default volume mixer from ``autoaudiomixer`` to ``software``. + GStreamer 1.x does not support volume control, so we're changing to use + software mixing by default, as that may be the only thing we'll support in + the future when we upgrade to GStreamer 1.x. + +**Local backend** + +- Library scanning has been switched back from GStreamer's discoverer to our + custom implementation due to various issues with GStreamer 0.10's built in + scanner. This also fixes the scanner slowdown. (Fixes: :issue:`565`) + +- When scanning, we no longer default the album artist to be the same as the + track artist. Album artist is now only populated if the scanned file got an + explicit album artist set. + +- The scanner will now extract multiple artists from files with multiple artist + tags. + +- The scanner will now extract composers and performers, as well as genre, + bitrate, and comments. (Fixes: :issue:`577`) + +- Fix scanner so that time of last modification is respected when deciding + which files can be skipped when scanning the music collection for changes. + +- The scanner now ignores the capitalization of file extensions in + :confval:`local/excluded_file_extensions`, so you no longer need to list both + ``.jpg`` and ``.JPG`` to ignore JPEG files when scanning. (Fixes: + :issue:`525`) + +- The scanner now by default ignores ``*.nfo`` and ``*.html`` files too. + +**MPD frontend** + +- The MPD service is now published as a Zeroconf service if avahi-daemon is + running on the system. Some MPD clients will use this to present Mopidy as an + available server on the local network without needing any configuration. See + the :confval:`mpd/zeroconf` config value to change the service name or + disable the service. (Fixes: :issue:`39`) + +- Add support for ``composer``, ``performer``, ``comment``, ``genre``, and + ``performer``. These tags can be used with ``list ...``, ``search ...``, and + ``find ...`` and their variants, and are supported in the ``any`` tag also + +- The ``bitrate`` field in the ``status`` response is now always an integer. + This follows the behavior of the original MPD server. (Fixes: :issue:`577`) + +**HTTP frontend** + +- The HTTP service is now published as a Zeroconf service if avahi-daemon is + running on the system. Some browsers will present HTTP Zeroconf services on + the local network as "local sites" bookmarks. See the + :confval:`http/zeroconf` config value to change the service name or disable + the service. (Fixes: :issue:`39`) + +**DBUS/MPRIS** + +- The ``mopidy`` process now registers it's GObject event loop as the default + eventloop for dbus-python. (Fixes: :mpris:`2`) + + v0.16.1 (2013-11-02) ==================== @@ -25,7 +145,7 @@ in Debian. **MPD frontend** - Add support for ``list "albumartist" ...`` which was missed when ``find`` and - ``search`` learned to handle ``albumartist`` in 0.16.0. + ``search`` learned to handle ``albumartist`` in 0.16.0. (Fixes: :issue:`553`) v0.16.0 (2013-10-27) diff --git a/docs/commands/mopidy-convert-config.rst b/docs/commands/mopidy-convert-config.rst index 66876556..83bb7ae3 100644 --- a/docs/commands/mopidy-convert-config.rst +++ b/docs/commands/mopidy-convert-config.rst @@ -19,8 +19,8 @@ combines results from all music sources, and you can mix tracks from all sources in your play queue. Your playlists from Spotify or SoundCloud are also available for use. -The ``mopidy-convert-config`` command is used to convert ``settings.py`` -configuration files used by ``mopidy`` < 0.14 to the ``mopidy.conf`` config +The ``mopidy-convert-config`` command is used to convert :file:`settings.py` +configuration files used by ``mopidy`` < 0.14 to the :file:`mopidy.conf` config file used by ``mopidy`` >= 0.14. @@ -30,16 +30,16 @@ Options .. program:: mopidy-convert-config This program does not take any options. It looks for the pre-0.14 settings file -at ``$XDG_CONFIG_DIR/mopidy/settings.py``, and if it exists it converts it and -ouputs a Mopidy 0.14 compatible ini-format configuration. If you don't already -have a config file at ``$XDG_CONFIG_DIR/mopidy/mopidy.conf``, you're asked if -you want to save the converted config to that file. +at :file:`{$XDG_CONFIG_DIR}/mopidy/settings.py`, and if it exists it converts +it and ouputs a Mopidy 0.14 compatible ini-format configuration. If you don't +already have a config file at :file:`{$XDG_CONFIG_DIR}/mopidy/mopidy.conf``, +you're asked if you want to save the converted config to that file. Example ======= -Given the following contents in ``~/.config/mopidy/settings.py``: +Given the following contents in :file:`~/.config/mopidy/settings.py`: :: @@ -49,7 +49,7 @@ Given the following contents in ``~/.config/mopidy/settings.py``: SPOTIFY_USERNAME = u'alice' Running ``mopidy-convert-config`` will convert the config and create a new -``mopidy.conf`` config file: +:file:`mopidy.conf` config file: .. code-block:: none @@ -70,7 +70,7 @@ Running ``mopidy-convert-config`` will convert the config and create a new Write new config to /home/alice/.config/mopidy/mopidy.conf? [yN] y Done. -Contents of ``~/.config/mopidy/mopidy.conf`` after the conversion: +Contents of :file:`~/.config/mopidy/mopidy.conf` after the conversion: .. code-block:: ini diff --git a/docs/commands/mopidy-scan.rst b/docs/commands/mopidy-scan.rst deleted file mode 100644 index e8c25f77..00000000 --- a/docs/commands/mopidy-scan.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _mopidy-scan-cmd: - -******************* -mopidy-scan command -******************* - -Synopsis -======== - -mopidy-scan - [-h] [--version] [-q] [-v] - - -Description -=========== - -Mopidy is a music server which can play music both from multiple sources, like -your local hard drive, radio streams, and from Spotify and SoundCloud. Searches -combines results from all music sources, and you can mix tracks from all -sources in your play queue. Your playlists from Spotify or SoundCloud are also -available for use. - -The ``mopidy-scan`` command is used to index a music library to make it -available for playback with ``mopidy``. - - -Options -======= - -.. program:: mopidy-scan - -.. cmdoption:: --version - - Show Mopidy's version number and exit. - -.. cmdoption:: -h, --help - - Show help message and exit. - -.. cmdoption:: -q, --quiet - - Show less output: warning level and higher. - -.. cmdoption:: -v, --verbose - - Show more output: debug level and higher. - - -See also -======== - -:ref:`mopidy(1) ` - - -Reporting bugs -============== - -Report bugs to Mopidy's issue tracker at - diff --git a/docs/commands/mopidy.rst b/docs/commands/mopidy.rst index df4766c3..44e961e6 100644 --- a/docs/commands/mopidy.rst +++ b/docs/commands/mopidy.rst @@ -8,8 +8,8 @@ Synopsis ======== mopidy - [-h] [--version] [-q] [-v] [--save-debug-log] [--show-config] - [--show-deps] [--config CONFIG_FILES] [-o CONFIG_OVERRIDES] + [-h] [--version] [-q] [-v] [--save-debug-log] [--config CONFIG_FILES] + [-o CONFIG_OVERRIDES] [COMMAND] ... Description @@ -29,7 +29,7 @@ Options .. program:: mopidy -.. cmdoption:: -h, --help +.. cmdoption:: --help, -h Show help message and exit. @@ -37,11 +37,11 @@ Options Show Mopidy's version number and exit. -.. cmdoption:: -q, --quiet +.. cmdoption:: --quiet, -q Show less output: warning level and higher. -.. cmdoption:: -v, --verbose +.. cmdoption:: --verbose, -v Show more output: debug level and higher. @@ -50,35 +50,51 @@ Options Save debug log to the file specified in the :confval:`logging/debug_file` config value, typically ``./mopidy.log``. -.. cmdoption:: --show-config - - Show the current effective config. All configuration sources are merged - together to show the effective document. Secret values like passwords are - masked out. Config for disabled extensions are not included. - -.. cmdoption:: --show-deps - - Show dependencies, their versions and installation location. - .. cmdoption:: --config Specify config file to use. To use multiple config files, separate them - with colon. The later files override the earlier ones if there's a + with a colon. The later files override the earlier ones if there's a conflict. -.. cmdoption:: -o