mirror of
https://github.com/beetbox/beets.git
synced 2025-12-07 17:16:07 +01:00
140 lines
4.2 KiB
ReStructuredText
140 lines
4.2 KiB
ReStructuredText
BPD Plugin
|
|
==========
|
|
|
|
BPD is a music player using music from a beets library. It runs as a daemon and
|
|
implements the MPD protocol, so it's compatible with all the great MPD clients
|
|
out there. I'm using `Theremin`_, `gmpc`_, `Sonata`_, and `Ario`_ successfully.
|
|
|
|
.. _Theremin: https://theremin.sigterm.eu/
|
|
.. _gmpc: http://gmpc.wikia.com/wiki/Gnome_Music_Player_Client
|
|
.. _Sonata: http://sonata.berlios.de/
|
|
.. _Ario: http://ario-player.sourceforge.net/
|
|
|
|
Dependencies
|
|
------------
|
|
|
|
Before you can use BPD, you'll need the media library called GStreamer (along
|
|
with its Python bindings) on your system.
|
|
|
|
* On Mac OS X, you can use `MacPorts`_ or `Homebrew`_. For MacPorts, just run
|
|
``port install py27-gst-python``. For Homebrew, the appropriate formulae are
|
|
in `homebrew-versions`_, so run ``brew tap homebrew/versions`` and then
|
|
``brew install gst-python010``. (Note that you'll need the Mac OS X
|
|
Developer Tools in either case.)
|
|
|
|
.. _homebrew-versions: https://github.com/Homebrew/homebrew-versions
|
|
|
|
* On Linux, it's likely that you already have gst-python. (If not, your
|
|
distribution almost certainly has a package for it.)
|
|
|
|
* On Windows, you may want to try `GStreamer WinBuilds`_ (cavet emptor: I
|
|
haven't tried this).
|
|
|
|
You will also need the various GStreamer plugin packages to make everything
|
|
work. See the :doc:`/plugins/chroma` documentation for more information on
|
|
installing GStreamer plugins.
|
|
|
|
.. _MacPorts: http://www.macports.org/
|
|
.. _GStreamer WinBuilds: http://www.gstreamer-winbuild.ylatuya.es/
|
|
.. _Homebrew: http://mxcl.github.com/homebrew/
|
|
|
|
Usage
|
|
-----
|
|
|
|
To use the ``bpd`` plugin, first enable it in your configuration (see
|
|
:ref:`using-plugins`).
|
|
Then, you can run BPD by invoking::
|
|
|
|
$ beet bpd
|
|
|
|
Fire up your favorite MPD client to start playing music. The MPD site has `a
|
|
long list of available clients`_. Here are my favorites:
|
|
|
|
.. _a long list of available clients: http://mpd.wikia.com/wiki/Clients
|
|
|
|
* Linux: `gmpc`_, `Sonata`_
|
|
|
|
* Mac: `Theremin`_
|
|
|
|
* Windows: I don't know. Get in touch if you have a recommendation.
|
|
|
|
* iPhone/iPod touch: `MPoD`_
|
|
|
|
.. _MPoD: http://www.katoemba.net/makesnosenseatall/mpod/
|
|
|
|
One nice thing about MPD's (and thus BPD's) client-server architecture is that
|
|
the client can just as easily on a different computer from the server as it can
|
|
be run locally. Control your music from your laptop (or phone!) while it plays
|
|
on your headless server box. Rad!
|
|
|
|
Configuration
|
|
-------------
|
|
|
|
To configure the plugin, make a ``bpd:`` section in your configuration file.
|
|
The available options are:
|
|
|
|
- **host**:
|
|
Default: Bind to all interfaces.
|
|
- **port**:
|
|
Default: 6600
|
|
- **password**:
|
|
Default: No password.
|
|
- **volume**: Initial volume, as a percentage.
|
|
Default: 100
|
|
|
|
Here's an example::
|
|
|
|
bpd:
|
|
host: 127.0.0.1
|
|
port: 6600
|
|
password: seekrit
|
|
volume: 100
|
|
|
|
Implementation Notes
|
|
--------------------
|
|
|
|
In the real MPD, the user can browse a music directory as it appears on disk.
|
|
In beets, we like to abstract away from the directory structure. Therefore, BPD
|
|
creates a "virtual" directory structure (artist/album/track) to present to
|
|
clients. This is static for now and cannot be reconfigured like the real
|
|
on-disk directory structure can. (Note that an obvious solution to this is just
|
|
string matching on items' destination, but this requires examining the entire
|
|
library Python-side for every query.)
|
|
|
|
We don't currently support versioned playlists. Many clients, however, use
|
|
plchanges instead of playlistinfo to get the current playlist, so plchanges
|
|
contains a dummy implementation that just calls playlistinfo.
|
|
|
|
The ``stats`` command always send zero for ``playtime``, which is supposed to
|
|
indicate the amount of time the server has spent playing music. BPD doesn't
|
|
currently keep track of this.
|
|
|
|
The ``update`` command regenerates the directory tree from the beets database.
|
|
|
|
Unimplemented Commands
|
|
----------------------
|
|
|
|
These are the commands from `the MPD protocol`_ that have not yet been
|
|
implemented in BPD.
|
|
|
|
.. _the MPD protocol: http://www.musicpd.org/doc/protocol/
|
|
|
|
Saved playlists:
|
|
|
|
* playlistclear
|
|
* playlistdelete
|
|
* playlistmove
|
|
* playlistadd
|
|
* playlistsearch
|
|
* listplaylist
|
|
* listplaylistinfo
|
|
* playlistfind
|
|
* rm
|
|
* save
|
|
* load
|
|
* rename
|
|
|
|
Deprecated:
|
|
|
|
* playlist
|
|
* volume
|