New Upstream Snapshot - mopidy-mpris
Ready changes
Summary
Merged new upstream version: 3.0.3+git20220518.2.630e0a2 (was: 3.0.3+git20220518.1.630e0a2).
Resulting package
Built on 2022-12-19T20:25 (took 8m17s)
The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:
apt install -t fresh-snapshots mopidy-mpris
Lintian Result
Diff
diff --git a/.circleci/config.yml b/.circleci/config.yml
deleted file mode 100644
index d225883..0000000
--- a/.circleci/config.yml
+++ /dev/null
@@ -1,57 +0,0 @@
-version: 2.1
-
-orbs:
- codecov: codecov/codecov@1.0.5
-
-workflows:
- version: 2
- test:
- jobs:
- - py39
- - py38
- - py37
- - black
- - check-manifest
- - flake8
-
-jobs:
- py39: &test-template
- docker:
- - image: mopidy/ci-python:3.9
- steps:
- - checkout
- - restore_cache:
- name: Restoring tox cache
- key: tox-v1-{{ .Environment.CIRCLE_JOB }}-{{ checksum "setup.cfg" }}
- - run:
- name: Run tests
- command: |
- tox -e $CIRCLE_JOB -- \
- --junit-xml=test-results/pytest/results.xml \
- --cov-report=xml
- - save_cache:
- name: Saving tox cache
- key: tox-v1-{{ .Environment.CIRCLE_JOB }}-{{ checksum "setup.cfg" }}
- paths:
- - ./.tox
- - ~/.cache/pip
- - codecov/upload:
- file: coverage.xml
- - store_test_results:
- path: test-results
-
- py38:
- <<: *test-template
- docker:
- - image: mopidy/ci-python:3.8
-
- py37:
- <<: *test-template
- docker:
- - image: mopidy/ci-python:3.7
-
- black: *test-template
-
- check-manifest: *test-template
-
- flake8: *test-template
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
deleted file mode 100644
index 21a6ea1..0000000
--- a/.github/workflows/release.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-name: Release
-
-on:
- release:
- types: [published]
-
-jobs:
- release:
- runs-on: ubuntu-20.04
-
- steps:
- - uses: actions/checkout@v2
- - uses: actions/setup-python@v2
- with:
- python-version: '3.9'
- - name: "Install dependencies"
- run: python3 -m pip install build
- - name: "Build package"
- run: python3 -m build
- - uses: pypa/gh-action-pypi-publish@v1.4.1
- with:
- user: __token__
- password: ${{ secrets.PYPI_TOKEN }}
diff --git a/MANIFEST.in b/MANIFEST.in
index 7734bb0..9d9fd9b 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -6,7 +6,6 @@ include MANIFEST.in
include pyproject.toml
include tox.ini
-recursive-include .circleci *
recursive-include .github *
include mopidy_*/ext.conf
diff --git a/Mopidy_MPRIS.egg-info/PKG-INFO b/Mopidy_MPRIS.egg-info/PKG-INFO
index 68a144e..a141b09 100644
--- a/Mopidy_MPRIS.egg-info/PKG-INFO
+++ b/Mopidy_MPRIS.egg-info/PKG-INFO
@@ -6,385 +6,6 @@ Home-page: https://github.com/mopidy/mopidy-mpris
Author: Stein Magnus Jodal
Author-email: stein.magnus@jodal.no
License: Apache License, Version 2.0
-Description: ************
- Mopidy-MPRIS
- ************
-
- .. image:: https://img.shields.io/pypi/v/Mopidy-MPRIS
- :target: https://pypi.org/project/Mopidy-MPRIS/
- :alt: Latest PyPI version
-
- .. image:: https://img.shields.io/circleci/build/gh/mopidy/mopidy-mpris
- :target: https://circleci.com/gh/mopidy/mopidy-mpris
- :alt: CircleCI build status
-
- .. image:: https://img.shields.io/codecov/c/gh/mopidy/mopidy-mpris
- :target: https://codecov.io/gh/mopidy/mopidy-mpris
- :alt: Test coverage
-
- `Mopidy`_ extension for controlling Mopidy through D-Bus using the `MPRIS
- specification`_.
-
- Mopidy-MPRIS supports the minimum requirements of the `MPRIS specification`_
- as well as the optional `Playlists interface`_. The `TrackList interface`_
- is currently not supported.
-
- .. _Mopidy: https://www.mopidy.com/
- .. _MPRIS specification: https://specifications.freedesktop.org/mpris-spec/latest/
- .. _Playlists interface: https://specifications.freedesktop.org/mpris-spec/latest/Playlists_Interface.html
- .. _TrackList interface: https://specifications.freedesktop.org/mpris-spec/latest/Track_List_Interface.html
-
-
- Table of contents
- =================
-
- - Requirements_
- - Installation_
- - Configuration_
- - Usage_
- - Clients_
-
- - `GNOME Shell builtin`_
- - `gnome-shell-extensions-mediaplayer`_
- - `gnome-shell-extensions-mpris-indicator-button`_
- - `Ubuntu Sound Menu`_
-
- - `Advanced setups`_
-
- - `Running as a service`_
- - `MPRIS on the system bus`_
- - `UPnP/DLNA with Rygel`_
-
- - `Development tips`_
-
- - `Browsing the MPRIS API with D-Feet`_
- - `Testing the MPRIS API with pydbus`_
-
- - `Project resources`_
- - Credits_
-
-
- Requirements
- ============
-
- - `pydbus`_ D-Bus Python bindings, which again depends on ``python-gi``. Thus
- it is usually easiest to install with your distribution's package manager.
-
- .. _pydbus: https://github.com/LEW21/pydbus
-
-
- Installation
- ============
-
- Install by running::
-
- sudo python3 -m pip install Mopidy-MPRIS
-
- See https://mopidy.com/ext/mpris/ for alternative installation methods.
-
-
- Configuration
- =============
-
- No configuration is required for the MPRIS extension to work.
-
- The following configuration values are available:
-
- - ``mpris/enabled``: If the MPRIS extension should be enabled or not.
- Defaults to ``true``.
-
- - ``mpris/bus_type``: The type of D-Bus bus Mopidy-MPRIS should connect to.
- Choices include ``session`` (the default) and ``system``.
-
-
- Usage
- =====
-
- Once Mopidy-MPRIS has been installed and your Mopidy server has been
- restarted, the Mopidy-MPRIS extension announces its presence on D-Bus so that
- any MPRIS compatible clients on your system can interact with it. Exactly how
- you control Mopidy through MPRIS depends on which MPRIS client you use.
-
-
- Clients
- =======
-
- The following clients have been tested with Mopidy-MPRIS.
-
- GNOME Shell builtin
- -------------------
-
- State:
- Not working
- Tested versions:
- Ubuntu 18.10,
- GNOME Shell 3.30.1-2ubuntu1,
- Mopidy-MPRIS 2.0.0
-
- GNOME Shell, which is the default desktop on Ubuntu 18.04 onwards, has a
- builtin MPRIS client. This client seems to work well with Spotify's player,
- but Mopidy-MPRIS does not show up here.
-
- If you have any tips on what's missing to get this working, please open an
- issue.
-
- gnome-shell-extensions-mediaplayer
- ----------------------------------
-
- State:
- Working
- Tested versions:
- Ubuntu 18.10,
- GNOME Shell 3.30.1-2ubuntu1,
- gnome-shell-extension-mediaplayer 63,
- Mopidy-MPRIS 2.0.0
- Website:
- https://github.com/JasonLG1979/gnome-shell-extensions-mediaplayer
-
- gnome-shell-extensions-mediaplayer is a quite feature rich MPRIS client
- built as an extension to GNOME Shell. With the improvements to Mopidy-MPRIS
- in v2.0, this extension works very well with Mopidy.
-
- gnome-shell-extensions-mpris-indicator-button
- ---------------------------------------------
-
- State:
- Working
- Tested versions:
- Ubuntu 18.10,
- GNOME Shell 3.30.1-2ubuntu1,
- gnome-shell-extensions-mpris-indicator-button 5,
- Mopidy-MPRIS 2.0.0
- Website:
- https://github.com/JasonLG1979/gnome-shell-extensions-mpris-indicator-button/
-
- gnome-shell-extensions-mpris-indicator-button is a minimalistic version of
- gnome-shell-extensions-mediaplayer. It works with Mopidy-MPRIS, with the
- exception of the play/pause button not changing state when Mopidy starts
- playing.
-
- If you have any tips on what's missing to get the play/pause button display
- correctly, please open an issue.
-
- Ubuntu Sound Menu
- -----------------
-
- State:
- Unknown
-
- Historically, Ubuntu Sound Menu was the primary target for Mopidy-MPRIS'
- development. Since Ubuntu 18.04 replaced Unity with GNOME Shell, this is no
- longer the case. It is currently unknown to what degree Mopidy-MPRIS works
- with old Ubuntu setups.
-
- If you run an Ubuntu setup with Unity and have tested Mopidy-MPRIS, please
- open an issue to share your results.
-
-
- Advanced setups
- ===============
-
- Running as a service
- --------------------
-
- If you have input on how to best configure Mopidy-MPRIS when Mopidy is
- running as a service, please add a comment to `issue #15`_.
-
- .. _issue #15: https://github.com/mopidy/mopidy-mpris/issues/15
-
- MPRIS on the system bus
- -----------------------
-
- You can set the ``mpris/bus_type`` config value to ``system``. This will lead
- to Mopidy-MPRIS making itself available on the system bus instead of the
- logged in user's session bus.
-
- .. note::
- Few MPRIS clients will try to access MPRIS devices on the system bus, so
- this will give you limited functionality. For example, media keys in
- GNOME Shell does not work with media players that expose their MPRIS
- interface on the system bus instead of the user's session bus.
-
- The default setup will often not permit Mopidy to publish its service on the
- D-Bus system bus, causing a warning similar to this in Mopidy's log::
-
- MPRIS frontend setup failed (g-dbus-error-quark:
- GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: Connection ":1.3071"
- is not allowed to own the service "org.mpris.MediaPlayer2.mopidy" due to
- security policies in the configuration file (9))
-
- To solve this, create the file
- ``/etc/dbus-1/system.d/org.mpris.MediaPlayer2.mopidy.conf`` with the
- following contents:
-
- .. code:: xml
-
- <!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
- "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
- <busconfig>
- <!-- Allow mopidy user to publish the Mopidy-MPRIS service -->
- <policy user="mopidy">
- <allow own="org.mpris.MediaPlayer2.mopidy"/>
- </policy>
-
- <!-- Allow anyone to invoke methods on the Mopidy-MPRIS service -->
- <policy context="default">
- <allow send_destination="org.mpris.MediaPlayer2.mopidy"/>
- <allow receive_sender="org.mpris.MediaPlayer2.mopidy"/>
- </policy>
- </busconfig>
-
- If you run Mopidy as another user than ``mopidy``, you must
- update ``user="mopidy"`` in the above file accordingly.
-
- Once the file is in place, you must restart Mopidy for the change to take
- effect.
-
- To test the setup, you can run the following command as any user on the
- system to play/pause the music::
-
- dbus-send --system --print-reply \
- --dest=org.mpris.MediaPlayer2.mopidy \
- /org/mpris/MediaPlayer2 \
- org.mpris.MediaPlayer2.Player.PlayPause
-
- UPnP/DLNA with Rygel
- --------------------
-
- Rygel_ is an application that will translate between Mopidy's MPRIS interface
- and UPnP. Rygel must be run on the same machine as Mopidy, but will make
- Mopidy controllable by any device on the local network that can control a
- UPnP/DLNA MediaRenderer.
-
- .. _Rygel: https://wiki.gnome.org/Projects/Rygel
-
- The setup process is approximately as follows:
-
- 1. Install Rygel.
-
- On Debian/Ubuntu/Raspbian::
-
- sudo apt install rygel
-
- 2. Enable Rygel's MPRIS plugin.
-
- On Debian/Ubuntu/Raspbian, edit ``/etc/rygel.conf``, find the ``[MPRIS]``
- section, and change ``enabled=false`` to ``enabled=true``.
-
- 3. Start Rygel.
-
- To start it as the current user::
-
- systemctl --user start rygel
-
- To make Rygel start as the current user on boot::
-
- systemctl --user enable rygel
-
- 4. Configure your system's firewall to allow the local network to reach
- Rygel. Exactly how is out of scope for this document.
-
- 5. Start Mopidy with Mopidy-MPRIS enabled.
-
- 6. If you view Rygel's log output with::
-
- journalctl --user -feu rygel
-
- You should see a log statement similar to::
-
- New plugin "org.mpris.MediaPlayer2.mopidy" available
-
- 6. If everything went well, you should now be able to control Mopidy from a
- device on your local network that can control an UPnP/DLNA MediaRenderer,
- for example the Android app BubbleUPnP.
-
- Alternatively, `upmpdcli combined with Mopidy-MPD`_ serves the same purpose as
- this setup.
-
- .. _upmpdcli combined with Mopidy-MPD: https://docs.mopidy.com/en/latest/clients/upnp/
-
-
- Development tips
- ================
-
- Mopidy-MPRIS has an extensive test suite, so the first step for all changes
- or additions is to add a test exercising the new code. However, making the
- tests pass doesn't ensure that what comes out on the D-Bus bus is correct. To
- introspect this through the bus, there's a couple of useful tools.
-
-
- Browsing the MPRIS API with D-Feet
- ----------------------------------
-
- D-Feet is a graphical D-Bus browser. On Debian/Ubuntu systems it can be
- installed by running::
-
- sudo apt install d-feet
-
- Then run the ``d-feet`` command. In the D-Feet window, select the tab
- corresponding to the bus you run Mopidy-MPRIS on, usually the session bus.
- Then search for "MediaPlayer2" to find all available MPRIS interfaces.
-
- To get the current value of a property, double-click it. To execute a method,
- double-click it, provide any required arguments, and click "Execute".
-
- For more information on D-Feet, see the `GNOME wiki
- <https://wiki.gnome.org/Apps/DFeet>`_.
-
-
- Testing the MPRIS API with pydbus
- ---------------------------------
-
- To use the MPRIS API directly, start Mopidy, and then run the following in a
- Python shell to use ``pydbus`` as an MPRIS client::
-
- >>> import pydbus
- >>> bus = pydbus.SessionBus()
- >>> player = bus.get('org.mpris.MediaPlayer2.mopidy', '/org/mpris/MediaPlayer2')
-
- Now you can control Mopidy through the player object. To get properties from
- Mopidy, run for example::
-
- >>> player.PlaybackStatus
- 'Playing'
- >>> player.Metadata
- {'mpris:artUrl': 'https://i.scdn.co/image/8eb49b41eeb45c1cf53e1ddfea7973d9ca257777',
- 'mpris:length': 342000000,
- 'mpris:trackid': '/com/mopidy/track/36',
- 'xesam:album': '65/Milo',
- 'xesam:albumArtist': ['Kiasmos'],
- 'xesam:artist': ['Rival Consoles'],
- 'xesam:discNumber': 1,
- 'xesam:title': 'Arp',
- 'xesam:trackNumber': 5,
- 'xesam:url': 'spotify:track:7CoxEEsqo3XdvUsScRV4WD'}
- >>>
-
- To pause Mopidy's playback through D-Bus, run::
-
- >>> player.Pause()
- >>>
-
- For details on the API, please refer to the `MPRIS specification
- <https://specifications.freedesktop.org/mpris-spec/latest/>`__.
-
-
- Project resources
- =================
-
- - `Source code <https://github.com/mopidy/mopidy-mpris>`_
- - `Issue tracker <https://github.com/mopidy/mopidy-mpris/issues>`_
- - `Changelog <https://github.com/mopidy/mopidy-mpris/releases>`_
-
-
- Credits
- =======
-
- - Original author: `Stein Magnus Jodal <https://github.com/jodal>`__
- - Current maintainer: `Stein Magnus Jodal <https://github.com/jodal>`__
- - `Contributors <https://github.com/mopidy/mopidy-mpris/graphs/contributors>`_
-
-Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: No Input/Output (Daemon)
Classifier: Intended Audience :: End Users/Desktop
@@ -394,9 +15,409 @@ Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
Classifier: Topic :: Multimedia :: Sound/Audio :: Players
Requires-Python: >=3.7
+Provides-Extra: dev
Provides-Extra: lint
-Provides-Extra: release
Provides-Extra: test
-Provides-Extra: dev
+License-File: LICENSE
+
+************
+Mopidy-MPRIS
+************
+
+.. image:: https://img.shields.io/pypi/v/Mopidy-MPRIS
+ :target: https://pypi.org/project/Mopidy-MPRIS/
+ :alt: Latest PyPI version
+
+.. image:: https://img.shields.io/github/workflow/status/mopidy/mopidy-mpris/CI
+ :target: https://github.com/mopidy/mopidy-mpris/actions
+ :alt: CI build status
+
+.. image:: https://img.shields.io/codecov/c/gh/mopidy/mopidy-mpris
+ :target: https://codecov.io/gh/mopidy/mopidy-mpris
+ :alt: Test coverage
+
+`Mopidy`_ extension for controlling Mopidy through D-Bus using the `MPRIS
+specification`_.
+
+Mopidy-MPRIS supports the minimum requirements of the `MPRIS specification`_
+as well as the optional `Playlists interface`_. The `TrackList interface`_
+is currently not supported.
+
+.. _Mopidy: https://www.mopidy.com/
+.. _MPRIS specification: https://specifications.freedesktop.org/mpris-spec/latest/
+.. _Playlists interface: https://specifications.freedesktop.org/mpris-spec/latest/Playlists_Interface.html
+.. _TrackList interface: https://specifications.freedesktop.org/mpris-spec/latest/Track_List_Interface.html
+
+
+Maintainer wanted
+=================
+
+Mopidy-MPRIS is currently kept on life support by the Mopidy core developers.
+It is in need of a more dedicated maintainer.
+
+If you want to be the maintainer of Mopidy-MPRIS, please:
+
+1. Make 2-3 good pull requests improving any part of the project.
+
+2. Read and get familiar with all of the project's open issues.
+
+3. Send a pull request removing this section and adding yourself as the
+ "Current maintainer" in the "Credits" section below. In the pull request
+ description, please refer to the previous pull requests and state that
+ you've familiarized yourself with the open issues.
+
+ As a maintainer, you'll be given push access to the repo and the authority
+ to make releases to PyPI when you see fit.
+
+
+Table of contents
+=================
+
+- Requirements_
+- Installation_
+- Configuration_
+- Usage_
+- Clients_
+
+ - `GNOME Shell builtin`_
+ - `gnome-shell-extensions-mediaplayer`_
+ - `gnome-shell-extensions-mpris-indicator-button`_
+ - `Ubuntu Sound Menu`_
+
+- `Advanced setups`_
+
+ - `Running as a service`_
+ - `MPRIS on the system bus`_
+ - `UPnP/DLNA with Rygel`_
+
+- `Development tips`_
+
+ - `Browsing the MPRIS API with D-Feet`_
+ - `Testing the MPRIS API with pydbus`_
+
+- `Project resources`_
+- Credits_
+
+
+Requirements
+============
+
+- `pydbus`_ D-Bus Python bindings, which again depends on ``python-gi``. Thus
+ it is usually easiest to install with your distribution's package manager.
+
+.. _pydbus: https://github.com/LEW21/pydbus
+
+
+Installation
+============
+
+Install by running::
+
+ sudo python3 -m pip install Mopidy-MPRIS
+
+See https://mopidy.com/ext/mpris/ for alternative installation methods.
+
+
+Configuration
+=============
+
+No configuration is required for the MPRIS extension to work.
+
+The following configuration values are available:
+
+- ``mpris/enabled``: If the MPRIS extension should be enabled or not.
+ Defaults to ``true``.
+
+- ``mpris/bus_type``: The type of D-Bus bus Mopidy-MPRIS should connect to.
+ Choices include ``session`` (the default) and ``system``.
+
+
+Usage
+=====
+
+Once Mopidy-MPRIS has been installed and your Mopidy server has been
+restarted, the Mopidy-MPRIS extension announces its presence on D-Bus so that
+any MPRIS compatible clients on your system can interact with it. Exactly how
+you control Mopidy through MPRIS depends on which MPRIS client you use.
+
+
+Clients
+=======
+
+The following clients have been tested with Mopidy-MPRIS.
+
+GNOME Shell builtin
+-------------------
+
+State:
+ Not working
+Tested versions:
+ Ubuntu 18.10,
+ GNOME Shell 3.30.1-2ubuntu1,
+ Mopidy-MPRIS 2.0.0
+
+GNOME Shell, which is the default desktop on Ubuntu 18.04 onwards, has a
+builtin MPRIS client. This client seems to work well with Spotify's player,
+but Mopidy-MPRIS does not show up here.
+
+If you have any tips on what's missing to get this working, please open an
+issue.
+
+gnome-shell-extensions-mediaplayer
+----------------------------------
+
+State:
+ Working
+Tested versions:
+ Ubuntu 18.10,
+ GNOME Shell 3.30.1-2ubuntu1,
+ gnome-shell-extension-mediaplayer 63,
+ Mopidy-MPRIS 2.0.0
+Website:
+ https://github.com/JasonLG1979/gnome-shell-extensions-mediaplayer
+
+gnome-shell-extensions-mediaplayer is a quite feature rich MPRIS client
+built as an extension to GNOME Shell. With the improvements to Mopidy-MPRIS
+in v2.0, this extension works very well with Mopidy.
+
+gnome-shell-extensions-mpris-indicator-button
+---------------------------------------------
+
+State:
+ Working
+Tested versions:
+ Ubuntu 18.10,
+ GNOME Shell 3.30.1-2ubuntu1,
+ gnome-shell-extensions-mpris-indicator-button 5,
+ Mopidy-MPRIS 2.0.0
+Website:
+ https://github.com/JasonLG1979/gnome-shell-extensions-mpris-indicator-button/
+
+gnome-shell-extensions-mpris-indicator-button is a minimalistic version of
+gnome-shell-extensions-mediaplayer. It works with Mopidy-MPRIS, with the
+exception of the play/pause button not changing state when Mopidy starts
+playing.
+
+If you have any tips on what's missing to get the play/pause button display
+correctly, please open an issue.
+
+Ubuntu Sound Menu
+-----------------
+
+State:
+ Unknown
+
+Historically, Ubuntu Sound Menu was the primary target for Mopidy-MPRIS'
+development. Since Ubuntu 18.04 replaced Unity with GNOME Shell, this is no
+longer the case. It is currently unknown to what degree Mopidy-MPRIS works
+with old Ubuntu setups.
+
+If you run an Ubuntu setup with Unity and have tested Mopidy-MPRIS, please
+open an issue to share your results.
+
+
+Advanced setups
+===============
+
+Running as a service
+--------------------
+
+If you have input on how to best configure Mopidy-MPRIS when Mopidy is
+running as a service, please add a comment to `issue #15`_.
+
+.. _issue #15: https://github.com/mopidy/mopidy-mpris/issues/15
+
+MPRIS on the system bus
+-----------------------
+
+You can set the ``mpris/bus_type`` config value to ``system``. This will lead
+to Mopidy-MPRIS making itself available on the system bus instead of the
+logged in user's session bus.
+
+.. note::
+ Few MPRIS clients will try to access MPRIS devices on the system bus, so
+ this will give you limited functionality. For example, media keys in
+ GNOME Shell does not work with media players that expose their MPRIS
+ interface on the system bus instead of the user's session bus.
+
+The default setup will often not permit Mopidy to publish its service on the
+D-Bus system bus, causing a warning similar to this in Mopidy's log::
+
+ MPRIS frontend setup failed (g-dbus-error-quark:
+ GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: Connection ":1.3071"
+ is not allowed to own the service "org.mpris.MediaPlayer2.mopidy" due to
+ security policies in the configuration file (9))
+
+To solve this, create the file
+``/etc/dbus-1/system.d/org.mpris.MediaPlayer2.mopidy.conf`` with the
+following contents:
+
+.. code:: xml
+
+ <!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+ <busconfig>
+ <!-- Allow mopidy user to publish the Mopidy-MPRIS service -->
+ <policy user="mopidy">
+ <allow own="org.mpris.MediaPlayer2.mopidy"/>
+ </policy>
+
+ <!-- Allow anyone to invoke methods on the Mopidy-MPRIS service -->
+ <policy context="default">
+ <allow send_destination="org.mpris.MediaPlayer2.mopidy"/>
+ <allow receive_sender="org.mpris.MediaPlayer2.mopidy"/>
+ </policy>
+ </busconfig>
+
+If you run Mopidy as another user than ``mopidy``, you must
+update ``user="mopidy"`` in the above file accordingly.
+
+Once the file is in place, you must restart Mopidy for the change to take
+effect.
+
+To test the setup, you can run the following command as any user on the
+system to play/pause the music::
+
+ dbus-send --system --print-reply \
+ --dest=org.mpris.MediaPlayer2.mopidy \
+ /org/mpris/MediaPlayer2 \
+ org.mpris.MediaPlayer2.Player.PlayPause
+
+UPnP/DLNA with Rygel
+--------------------
+
+Rygel_ is an application that will translate between Mopidy's MPRIS interface
+and UPnP. Rygel must be run on the same machine as Mopidy, but will make
+Mopidy controllable by any device on the local network that can control a
+UPnP/DLNA MediaRenderer.
+
+.. _Rygel: https://wiki.gnome.org/Projects/Rygel
+
+The setup process is approximately as follows:
+
+1. Install Rygel.
+
+ On Debian/Ubuntu/Raspbian::
+
+ sudo apt install rygel
+
+2. Enable Rygel's MPRIS plugin.
+
+ On Debian/Ubuntu/Raspbian, edit ``/etc/rygel.conf``, find the ``[MPRIS]``
+ section, and change ``enabled=false`` to ``enabled=true``.
+
+3. Start Rygel.
+
+ To start it as the current user::
+
+ systemctl --user start rygel
+
+ To make Rygel start as the current user on boot::
+
+ systemctl --user enable rygel
+
+4. Configure your system's firewall to allow the local network to reach
+ Rygel. Exactly how is out of scope for this document.
+
+5. Start Mopidy with Mopidy-MPRIS enabled.
+
+6. If you view Rygel's log output with::
+
+ journalctl --user -feu rygel
+
+ You should see a log statement similar to::
+
+ New plugin "org.mpris.MediaPlayer2.mopidy" available
+
+6. If everything went well, you should now be able to control Mopidy from a
+ device on your local network that can control an UPnP/DLNA MediaRenderer,
+ for example the Android app BubbleUPnP.
+
+Alternatively, `upmpdcli combined with Mopidy-MPD`_ serves the same purpose as
+this setup.
+
+.. _upmpdcli combined with Mopidy-MPD: https://docs.mopidy.com/en/latest/clients/upnp/
+
+
+Development tips
+================
+
+Mopidy-MPRIS has an extensive test suite, so the first step for all changes
+or additions is to add a test exercising the new code. However, making the
+tests pass doesn't ensure that what comes out on the D-Bus bus is correct. To
+introspect this through the bus, there's a couple of useful tools.
+
+
+Browsing the MPRIS API with D-Feet
+----------------------------------
+
+D-Feet is a graphical D-Bus browser. On Debian/Ubuntu systems it can be
+installed by running::
+
+ sudo apt install d-feet
+
+Then run the ``d-feet`` command. In the D-Feet window, select the tab
+corresponding to the bus you run Mopidy-MPRIS on, usually the session bus.
+Then search for "MediaPlayer2" to find all available MPRIS interfaces.
+
+To get the current value of a property, double-click it. To execute a method,
+double-click it, provide any required arguments, and click "Execute".
+
+For more information on D-Feet, see the `GNOME wiki
+<https://wiki.gnome.org/Apps/DFeet>`_.
+
+
+Testing the MPRIS API with pydbus
+---------------------------------
+
+To use the MPRIS API directly, start Mopidy, and then run the following in a
+Python shell to use ``pydbus`` as an MPRIS client::
+
+ >>> import pydbus
+ >>> bus = pydbus.SessionBus()
+ >>> player = bus.get('org.mpris.MediaPlayer2.mopidy', '/org/mpris/MediaPlayer2')
+
+Now you can control Mopidy through the player object. To get properties from
+Mopidy, run for example::
+
+ >>> player.PlaybackStatus
+ 'Playing'
+ >>> player.Metadata
+ {'mpris:artUrl': 'https://i.scdn.co/image/8eb49b41eeb45c1cf53e1ddfea7973d9ca257777',
+ 'mpris:length': 342000000,
+ 'mpris:trackid': '/com/mopidy/track/36',
+ 'xesam:album': '65/Milo',
+ 'xesam:albumArtist': ['Kiasmos'],
+ 'xesam:artist': ['Rival Consoles'],
+ 'xesam:discNumber': 1,
+ 'xesam:title': 'Arp',
+ 'xesam:trackNumber': 5,
+ 'xesam:url': 'spotify:track:7CoxEEsqo3XdvUsScRV4WD'}
+ >>>
+
+To pause Mopidy's playback through D-Bus, run::
+
+ >>> player.Pause()
+ >>>
+
+For details on the API, please refer to the `MPRIS specification
+<https://specifications.freedesktop.org/mpris-spec/latest/>`__.
+
+
+Project resources
+=================
+
+- `Source code <https://github.com/mopidy/mopidy-mpris>`_
+- `Issue tracker <https://github.com/mopidy/mopidy-mpris/issues>`_
+- `Changelog <https://github.com/mopidy/mopidy-mpris/releases>`_
+
+
+Credits
+=======
+
+- Original author: `Stein Magnus Jodal <https://github.com/jodal>`__
+- Current maintainer: None. Maintainer wanted, see section above.
+- `Contributors <https://github.com/mopidy/mopidy-mpris/graphs/contributors>`_
diff --git a/Mopidy_MPRIS.egg-info/SOURCES.txt b/Mopidy_MPRIS.egg-info/SOURCES.txt
index 516ce62..395ccd2 100644
--- a/Mopidy_MPRIS.egg-info/SOURCES.txt
+++ b/Mopidy_MPRIS.egg-info/SOURCES.txt
@@ -6,8 +6,6 @@ pyproject.toml
setup.cfg
setup.py
tox.ini
-.circleci/config.yml
-.github/workflows/release.yml
Mopidy_MPRIS.egg-info/PKG-INFO
Mopidy_MPRIS.egg-info/SOURCES.txt
Mopidy_MPRIS.egg-info/dependency_links.txt
diff --git a/Mopidy_MPRIS.egg-info/entry_points.txt b/Mopidy_MPRIS.egg-info/entry_points.txt
index 32f2530..b2a635a 100644
--- a/Mopidy_MPRIS.egg-info/entry_points.txt
+++ b/Mopidy_MPRIS.egg-info/entry_points.txt
@@ -1,3 +1,2 @@
[mopidy.ext]
mpris = mopidy_mpris:Extension
-
diff --git a/Mopidy_MPRIS.egg-info/requires.txt b/Mopidy_MPRIS.egg-info/requires.txt
index a2a603f..d29dd5a 100644
--- a/Mopidy_MPRIS.egg-info/requires.txt
+++ b/Mopidy_MPRIS.egg-info/requires.txt
@@ -1,17 +1,16 @@
Mopidy>=3.0.0
Pykka>=2.0.1
-setuptools
pydbus>=0.6.0
+setuptools
[dev]
black
check-manifest
flake8
+flake8-black
flake8-bugbear
flake8-import-order
isort[pyproject]
-twine
-wheel
pytest
pytest-cov
@@ -19,14 +18,11 @@ pytest-cov
black
check-manifest
flake8
+flake8-black
flake8-bugbear
flake8-import-order
isort[pyproject]
-[release]
-twine
-wheel
-
[test]
pytest
pytest-cov
diff --git a/PKG-INFO b/PKG-INFO
index 68a144e..a141b09 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -6,385 +6,6 @@ Home-page: https://github.com/mopidy/mopidy-mpris
Author: Stein Magnus Jodal
Author-email: stein.magnus@jodal.no
License: Apache License, Version 2.0
-Description: ************
- Mopidy-MPRIS
- ************
-
- .. image:: https://img.shields.io/pypi/v/Mopidy-MPRIS
- :target: https://pypi.org/project/Mopidy-MPRIS/
- :alt: Latest PyPI version
-
- .. image:: https://img.shields.io/circleci/build/gh/mopidy/mopidy-mpris
- :target: https://circleci.com/gh/mopidy/mopidy-mpris
- :alt: CircleCI build status
-
- .. image:: https://img.shields.io/codecov/c/gh/mopidy/mopidy-mpris
- :target: https://codecov.io/gh/mopidy/mopidy-mpris
- :alt: Test coverage
-
- `Mopidy`_ extension for controlling Mopidy through D-Bus using the `MPRIS
- specification`_.
-
- Mopidy-MPRIS supports the minimum requirements of the `MPRIS specification`_
- as well as the optional `Playlists interface`_. The `TrackList interface`_
- is currently not supported.
-
- .. _Mopidy: https://www.mopidy.com/
- .. _MPRIS specification: https://specifications.freedesktop.org/mpris-spec/latest/
- .. _Playlists interface: https://specifications.freedesktop.org/mpris-spec/latest/Playlists_Interface.html
- .. _TrackList interface: https://specifications.freedesktop.org/mpris-spec/latest/Track_List_Interface.html
-
-
- Table of contents
- =================
-
- - Requirements_
- - Installation_
- - Configuration_
- - Usage_
- - Clients_
-
- - `GNOME Shell builtin`_
- - `gnome-shell-extensions-mediaplayer`_
- - `gnome-shell-extensions-mpris-indicator-button`_
- - `Ubuntu Sound Menu`_
-
- - `Advanced setups`_
-
- - `Running as a service`_
- - `MPRIS on the system bus`_
- - `UPnP/DLNA with Rygel`_
-
- - `Development tips`_
-
- - `Browsing the MPRIS API with D-Feet`_
- - `Testing the MPRIS API with pydbus`_
-
- - `Project resources`_
- - Credits_
-
-
- Requirements
- ============
-
- - `pydbus`_ D-Bus Python bindings, which again depends on ``python-gi``. Thus
- it is usually easiest to install with your distribution's package manager.
-
- .. _pydbus: https://github.com/LEW21/pydbus
-
-
- Installation
- ============
-
- Install by running::
-
- sudo python3 -m pip install Mopidy-MPRIS
-
- See https://mopidy.com/ext/mpris/ for alternative installation methods.
-
-
- Configuration
- =============
-
- No configuration is required for the MPRIS extension to work.
-
- The following configuration values are available:
-
- - ``mpris/enabled``: If the MPRIS extension should be enabled or not.
- Defaults to ``true``.
-
- - ``mpris/bus_type``: The type of D-Bus bus Mopidy-MPRIS should connect to.
- Choices include ``session`` (the default) and ``system``.
-
-
- Usage
- =====
-
- Once Mopidy-MPRIS has been installed and your Mopidy server has been
- restarted, the Mopidy-MPRIS extension announces its presence on D-Bus so that
- any MPRIS compatible clients on your system can interact with it. Exactly how
- you control Mopidy through MPRIS depends on which MPRIS client you use.
-
-
- Clients
- =======
-
- The following clients have been tested with Mopidy-MPRIS.
-
- GNOME Shell builtin
- -------------------
-
- State:
- Not working
- Tested versions:
- Ubuntu 18.10,
- GNOME Shell 3.30.1-2ubuntu1,
- Mopidy-MPRIS 2.0.0
-
- GNOME Shell, which is the default desktop on Ubuntu 18.04 onwards, has a
- builtin MPRIS client. This client seems to work well with Spotify's player,
- but Mopidy-MPRIS does not show up here.
-
- If you have any tips on what's missing to get this working, please open an
- issue.
-
- gnome-shell-extensions-mediaplayer
- ----------------------------------
-
- State:
- Working
- Tested versions:
- Ubuntu 18.10,
- GNOME Shell 3.30.1-2ubuntu1,
- gnome-shell-extension-mediaplayer 63,
- Mopidy-MPRIS 2.0.0
- Website:
- https://github.com/JasonLG1979/gnome-shell-extensions-mediaplayer
-
- gnome-shell-extensions-mediaplayer is a quite feature rich MPRIS client
- built as an extension to GNOME Shell. With the improvements to Mopidy-MPRIS
- in v2.0, this extension works very well with Mopidy.
-
- gnome-shell-extensions-mpris-indicator-button
- ---------------------------------------------
-
- State:
- Working
- Tested versions:
- Ubuntu 18.10,
- GNOME Shell 3.30.1-2ubuntu1,
- gnome-shell-extensions-mpris-indicator-button 5,
- Mopidy-MPRIS 2.0.0
- Website:
- https://github.com/JasonLG1979/gnome-shell-extensions-mpris-indicator-button/
-
- gnome-shell-extensions-mpris-indicator-button is a minimalistic version of
- gnome-shell-extensions-mediaplayer. It works with Mopidy-MPRIS, with the
- exception of the play/pause button not changing state when Mopidy starts
- playing.
-
- If you have any tips on what's missing to get the play/pause button display
- correctly, please open an issue.
-
- Ubuntu Sound Menu
- -----------------
-
- State:
- Unknown
-
- Historically, Ubuntu Sound Menu was the primary target for Mopidy-MPRIS'
- development. Since Ubuntu 18.04 replaced Unity with GNOME Shell, this is no
- longer the case. It is currently unknown to what degree Mopidy-MPRIS works
- with old Ubuntu setups.
-
- If you run an Ubuntu setup with Unity and have tested Mopidy-MPRIS, please
- open an issue to share your results.
-
-
- Advanced setups
- ===============
-
- Running as a service
- --------------------
-
- If you have input on how to best configure Mopidy-MPRIS when Mopidy is
- running as a service, please add a comment to `issue #15`_.
-
- .. _issue #15: https://github.com/mopidy/mopidy-mpris/issues/15
-
- MPRIS on the system bus
- -----------------------
-
- You can set the ``mpris/bus_type`` config value to ``system``. This will lead
- to Mopidy-MPRIS making itself available on the system bus instead of the
- logged in user's session bus.
-
- .. note::
- Few MPRIS clients will try to access MPRIS devices on the system bus, so
- this will give you limited functionality. For example, media keys in
- GNOME Shell does not work with media players that expose their MPRIS
- interface on the system bus instead of the user's session bus.
-
- The default setup will often not permit Mopidy to publish its service on the
- D-Bus system bus, causing a warning similar to this in Mopidy's log::
-
- MPRIS frontend setup failed (g-dbus-error-quark:
- GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: Connection ":1.3071"
- is not allowed to own the service "org.mpris.MediaPlayer2.mopidy" due to
- security policies in the configuration file (9))
-
- To solve this, create the file
- ``/etc/dbus-1/system.d/org.mpris.MediaPlayer2.mopidy.conf`` with the
- following contents:
-
- .. code:: xml
-
- <!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
- "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
- <busconfig>
- <!-- Allow mopidy user to publish the Mopidy-MPRIS service -->
- <policy user="mopidy">
- <allow own="org.mpris.MediaPlayer2.mopidy"/>
- </policy>
-
- <!-- Allow anyone to invoke methods on the Mopidy-MPRIS service -->
- <policy context="default">
- <allow send_destination="org.mpris.MediaPlayer2.mopidy"/>
- <allow receive_sender="org.mpris.MediaPlayer2.mopidy"/>
- </policy>
- </busconfig>
-
- If you run Mopidy as another user than ``mopidy``, you must
- update ``user="mopidy"`` in the above file accordingly.
-
- Once the file is in place, you must restart Mopidy for the change to take
- effect.
-
- To test the setup, you can run the following command as any user on the
- system to play/pause the music::
-
- dbus-send --system --print-reply \
- --dest=org.mpris.MediaPlayer2.mopidy \
- /org/mpris/MediaPlayer2 \
- org.mpris.MediaPlayer2.Player.PlayPause
-
- UPnP/DLNA with Rygel
- --------------------
-
- Rygel_ is an application that will translate between Mopidy's MPRIS interface
- and UPnP. Rygel must be run on the same machine as Mopidy, but will make
- Mopidy controllable by any device on the local network that can control a
- UPnP/DLNA MediaRenderer.
-
- .. _Rygel: https://wiki.gnome.org/Projects/Rygel
-
- The setup process is approximately as follows:
-
- 1. Install Rygel.
-
- On Debian/Ubuntu/Raspbian::
-
- sudo apt install rygel
-
- 2. Enable Rygel's MPRIS plugin.
-
- On Debian/Ubuntu/Raspbian, edit ``/etc/rygel.conf``, find the ``[MPRIS]``
- section, and change ``enabled=false`` to ``enabled=true``.
-
- 3. Start Rygel.
-
- To start it as the current user::
-
- systemctl --user start rygel
-
- To make Rygel start as the current user on boot::
-
- systemctl --user enable rygel
-
- 4. Configure your system's firewall to allow the local network to reach
- Rygel. Exactly how is out of scope for this document.
-
- 5. Start Mopidy with Mopidy-MPRIS enabled.
-
- 6. If you view Rygel's log output with::
-
- journalctl --user -feu rygel
-
- You should see a log statement similar to::
-
- New plugin "org.mpris.MediaPlayer2.mopidy" available
-
- 6. If everything went well, you should now be able to control Mopidy from a
- device on your local network that can control an UPnP/DLNA MediaRenderer,
- for example the Android app BubbleUPnP.
-
- Alternatively, `upmpdcli combined with Mopidy-MPD`_ serves the same purpose as
- this setup.
-
- .. _upmpdcli combined with Mopidy-MPD: https://docs.mopidy.com/en/latest/clients/upnp/
-
-
- Development tips
- ================
-
- Mopidy-MPRIS has an extensive test suite, so the first step for all changes
- or additions is to add a test exercising the new code. However, making the
- tests pass doesn't ensure that what comes out on the D-Bus bus is correct. To
- introspect this through the bus, there's a couple of useful tools.
-
-
- Browsing the MPRIS API with D-Feet
- ----------------------------------
-
- D-Feet is a graphical D-Bus browser. On Debian/Ubuntu systems it can be
- installed by running::
-
- sudo apt install d-feet
-
- Then run the ``d-feet`` command. In the D-Feet window, select the tab
- corresponding to the bus you run Mopidy-MPRIS on, usually the session bus.
- Then search for "MediaPlayer2" to find all available MPRIS interfaces.
-
- To get the current value of a property, double-click it. To execute a method,
- double-click it, provide any required arguments, and click "Execute".
-
- For more information on D-Feet, see the `GNOME wiki
- <https://wiki.gnome.org/Apps/DFeet>`_.
-
-
- Testing the MPRIS API with pydbus
- ---------------------------------
-
- To use the MPRIS API directly, start Mopidy, and then run the following in a
- Python shell to use ``pydbus`` as an MPRIS client::
-
- >>> import pydbus
- >>> bus = pydbus.SessionBus()
- >>> player = bus.get('org.mpris.MediaPlayer2.mopidy', '/org/mpris/MediaPlayer2')
-
- Now you can control Mopidy through the player object. To get properties from
- Mopidy, run for example::
-
- >>> player.PlaybackStatus
- 'Playing'
- >>> player.Metadata
- {'mpris:artUrl': 'https://i.scdn.co/image/8eb49b41eeb45c1cf53e1ddfea7973d9ca257777',
- 'mpris:length': 342000000,
- 'mpris:trackid': '/com/mopidy/track/36',
- 'xesam:album': '65/Milo',
- 'xesam:albumArtist': ['Kiasmos'],
- 'xesam:artist': ['Rival Consoles'],
- 'xesam:discNumber': 1,
- 'xesam:title': 'Arp',
- 'xesam:trackNumber': 5,
- 'xesam:url': 'spotify:track:7CoxEEsqo3XdvUsScRV4WD'}
- >>>
-
- To pause Mopidy's playback through D-Bus, run::
-
- >>> player.Pause()
- >>>
-
- For details on the API, please refer to the `MPRIS specification
- <https://specifications.freedesktop.org/mpris-spec/latest/>`__.
-
-
- Project resources
- =================
-
- - `Source code <https://github.com/mopidy/mopidy-mpris>`_
- - `Issue tracker <https://github.com/mopidy/mopidy-mpris/issues>`_
- - `Changelog <https://github.com/mopidy/mopidy-mpris/releases>`_
-
-
- Credits
- =======
-
- - Original author: `Stein Magnus Jodal <https://github.com/jodal>`__
- - Current maintainer: `Stein Magnus Jodal <https://github.com/jodal>`__
- - `Contributors <https://github.com/mopidy/mopidy-mpris/graphs/contributors>`_
-
-Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: No Input/Output (Daemon)
Classifier: Intended Audience :: End Users/Desktop
@@ -394,9 +15,409 @@ Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
Classifier: Topic :: Multimedia :: Sound/Audio :: Players
Requires-Python: >=3.7
+Provides-Extra: dev
Provides-Extra: lint
-Provides-Extra: release
Provides-Extra: test
-Provides-Extra: dev
+License-File: LICENSE
+
+************
+Mopidy-MPRIS
+************
+
+.. image:: https://img.shields.io/pypi/v/Mopidy-MPRIS
+ :target: https://pypi.org/project/Mopidy-MPRIS/
+ :alt: Latest PyPI version
+
+.. image:: https://img.shields.io/github/workflow/status/mopidy/mopidy-mpris/CI
+ :target: https://github.com/mopidy/mopidy-mpris/actions
+ :alt: CI build status
+
+.. image:: https://img.shields.io/codecov/c/gh/mopidy/mopidy-mpris
+ :target: https://codecov.io/gh/mopidy/mopidy-mpris
+ :alt: Test coverage
+
+`Mopidy`_ extension for controlling Mopidy through D-Bus using the `MPRIS
+specification`_.
+
+Mopidy-MPRIS supports the minimum requirements of the `MPRIS specification`_
+as well as the optional `Playlists interface`_. The `TrackList interface`_
+is currently not supported.
+
+.. _Mopidy: https://www.mopidy.com/
+.. _MPRIS specification: https://specifications.freedesktop.org/mpris-spec/latest/
+.. _Playlists interface: https://specifications.freedesktop.org/mpris-spec/latest/Playlists_Interface.html
+.. _TrackList interface: https://specifications.freedesktop.org/mpris-spec/latest/Track_List_Interface.html
+
+
+Maintainer wanted
+=================
+
+Mopidy-MPRIS is currently kept on life support by the Mopidy core developers.
+It is in need of a more dedicated maintainer.
+
+If you want to be the maintainer of Mopidy-MPRIS, please:
+
+1. Make 2-3 good pull requests improving any part of the project.
+
+2. Read and get familiar with all of the project's open issues.
+
+3. Send a pull request removing this section and adding yourself as the
+ "Current maintainer" in the "Credits" section below. In the pull request
+ description, please refer to the previous pull requests and state that
+ you've familiarized yourself with the open issues.
+
+ As a maintainer, you'll be given push access to the repo and the authority
+ to make releases to PyPI when you see fit.
+
+
+Table of contents
+=================
+
+- Requirements_
+- Installation_
+- Configuration_
+- Usage_
+- Clients_
+
+ - `GNOME Shell builtin`_
+ - `gnome-shell-extensions-mediaplayer`_
+ - `gnome-shell-extensions-mpris-indicator-button`_
+ - `Ubuntu Sound Menu`_
+
+- `Advanced setups`_
+
+ - `Running as a service`_
+ - `MPRIS on the system bus`_
+ - `UPnP/DLNA with Rygel`_
+
+- `Development tips`_
+
+ - `Browsing the MPRIS API with D-Feet`_
+ - `Testing the MPRIS API with pydbus`_
+
+- `Project resources`_
+- Credits_
+
+
+Requirements
+============
+
+- `pydbus`_ D-Bus Python bindings, which again depends on ``python-gi``. Thus
+ it is usually easiest to install with your distribution's package manager.
+
+.. _pydbus: https://github.com/LEW21/pydbus
+
+
+Installation
+============
+
+Install by running::
+
+ sudo python3 -m pip install Mopidy-MPRIS
+
+See https://mopidy.com/ext/mpris/ for alternative installation methods.
+
+
+Configuration
+=============
+
+No configuration is required for the MPRIS extension to work.
+
+The following configuration values are available:
+
+- ``mpris/enabled``: If the MPRIS extension should be enabled or not.
+ Defaults to ``true``.
+
+- ``mpris/bus_type``: The type of D-Bus bus Mopidy-MPRIS should connect to.
+ Choices include ``session`` (the default) and ``system``.
+
+
+Usage
+=====
+
+Once Mopidy-MPRIS has been installed and your Mopidy server has been
+restarted, the Mopidy-MPRIS extension announces its presence on D-Bus so that
+any MPRIS compatible clients on your system can interact with it. Exactly how
+you control Mopidy through MPRIS depends on which MPRIS client you use.
+
+
+Clients
+=======
+
+The following clients have been tested with Mopidy-MPRIS.
+
+GNOME Shell builtin
+-------------------
+
+State:
+ Not working
+Tested versions:
+ Ubuntu 18.10,
+ GNOME Shell 3.30.1-2ubuntu1,
+ Mopidy-MPRIS 2.0.0
+
+GNOME Shell, which is the default desktop on Ubuntu 18.04 onwards, has a
+builtin MPRIS client. This client seems to work well with Spotify's player,
+but Mopidy-MPRIS does not show up here.
+
+If you have any tips on what's missing to get this working, please open an
+issue.
+
+gnome-shell-extensions-mediaplayer
+----------------------------------
+
+State:
+ Working
+Tested versions:
+ Ubuntu 18.10,
+ GNOME Shell 3.30.1-2ubuntu1,
+ gnome-shell-extension-mediaplayer 63,
+ Mopidy-MPRIS 2.0.0
+Website:
+ https://github.com/JasonLG1979/gnome-shell-extensions-mediaplayer
+
+gnome-shell-extensions-mediaplayer is a quite feature rich MPRIS client
+built as an extension to GNOME Shell. With the improvements to Mopidy-MPRIS
+in v2.0, this extension works very well with Mopidy.
+
+gnome-shell-extensions-mpris-indicator-button
+---------------------------------------------
+
+State:
+ Working
+Tested versions:
+ Ubuntu 18.10,
+ GNOME Shell 3.30.1-2ubuntu1,
+ gnome-shell-extensions-mpris-indicator-button 5,
+ Mopidy-MPRIS 2.0.0
+Website:
+ https://github.com/JasonLG1979/gnome-shell-extensions-mpris-indicator-button/
+
+gnome-shell-extensions-mpris-indicator-button is a minimalistic version of
+gnome-shell-extensions-mediaplayer. It works with Mopidy-MPRIS, with the
+exception of the play/pause button not changing state when Mopidy starts
+playing.
+
+If you have any tips on what's missing to get the play/pause button display
+correctly, please open an issue.
+
+Ubuntu Sound Menu
+-----------------
+
+State:
+ Unknown
+
+Historically, Ubuntu Sound Menu was the primary target for Mopidy-MPRIS'
+development. Since Ubuntu 18.04 replaced Unity with GNOME Shell, this is no
+longer the case. It is currently unknown to what degree Mopidy-MPRIS works
+with old Ubuntu setups.
+
+If you run an Ubuntu setup with Unity and have tested Mopidy-MPRIS, please
+open an issue to share your results.
+
+
+Advanced setups
+===============
+
+Running as a service
+--------------------
+
+If you have input on how to best configure Mopidy-MPRIS when Mopidy is
+running as a service, please add a comment to `issue #15`_.
+
+.. _issue #15: https://github.com/mopidy/mopidy-mpris/issues/15
+
+MPRIS on the system bus
+-----------------------
+
+You can set the ``mpris/bus_type`` config value to ``system``. This will lead
+to Mopidy-MPRIS making itself available on the system bus instead of the
+logged in user's session bus.
+
+.. note::
+ Few MPRIS clients will try to access MPRIS devices on the system bus, so
+ this will give you limited functionality. For example, media keys in
+ GNOME Shell does not work with media players that expose their MPRIS
+ interface on the system bus instead of the user's session bus.
+
+The default setup will often not permit Mopidy to publish its service on the
+D-Bus system bus, causing a warning similar to this in Mopidy's log::
+
+ MPRIS frontend setup failed (g-dbus-error-quark:
+ GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: Connection ":1.3071"
+ is not allowed to own the service "org.mpris.MediaPlayer2.mopidy" due to
+ security policies in the configuration file (9))
+
+To solve this, create the file
+``/etc/dbus-1/system.d/org.mpris.MediaPlayer2.mopidy.conf`` with the
+following contents:
+
+.. code:: xml
+
+ <!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+ <busconfig>
+ <!-- Allow mopidy user to publish the Mopidy-MPRIS service -->
+ <policy user="mopidy">
+ <allow own="org.mpris.MediaPlayer2.mopidy"/>
+ </policy>
+
+ <!-- Allow anyone to invoke methods on the Mopidy-MPRIS service -->
+ <policy context="default">
+ <allow send_destination="org.mpris.MediaPlayer2.mopidy"/>
+ <allow receive_sender="org.mpris.MediaPlayer2.mopidy"/>
+ </policy>
+ </busconfig>
+
+If you run Mopidy as another user than ``mopidy``, you must
+update ``user="mopidy"`` in the above file accordingly.
+
+Once the file is in place, you must restart Mopidy for the change to take
+effect.
+
+To test the setup, you can run the following command as any user on the
+system to play/pause the music::
+
+ dbus-send --system --print-reply \
+ --dest=org.mpris.MediaPlayer2.mopidy \
+ /org/mpris/MediaPlayer2 \
+ org.mpris.MediaPlayer2.Player.PlayPause
+
+UPnP/DLNA with Rygel
+--------------------
+
+Rygel_ is an application that will translate between Mopidy's MPRIS interface
+and UPnP. Rygel must be run on the same machine as Mopidy, but will make
+Mopidy controllable by any device on the local network that can control a
+UPnP/DLNA MediaRenderer.
+
+.. _Rygel: https://wiki.gnome.org/Projects/Rygel
+
+The setup process is approximately as follows:
+
+1. Install Rygel.
+
+ On Debian/Ubuntu/Raspbian::
+
+ sudo apt install rygel
+
+2. Enable Rygel's MPRIS plugin.
+
+ On Debian/Ubuntu/Raspbian, edit ``/etc/rygel.conf``, find the ``[MPRIS]``
+ section, and change ``enabled=false`` to ``enabled=true``.
+
+3. Start Rygel.
+
+ To start it as the current user::
+
+ systemctl --user start rygel
+
+ To make Rygel start as the current user on boot::
+
+ systemctl --user enable rygel
+
+4. Configure your system's firewall to allow the local network to reach
+ Rygel. Exactly how is out of scope for this document.
+
+5. Start Mopidy with Mopidy-MPRIS enabled.
+
+6. If you view Rygel's log output with::
+
+ journalctl --user -feu rygel
+
+ You should see a log statement similar to::
+
+ New plugin "org.mpris.MediaPlayer2.mopidy" available
+
+6. If everything went well, you should now be able to control Mopidy from a
+ device on your local network that can control an UPnP/DLNA MediaRenderer,
+ for example the Android app BubbleUPnP.
+
+Alternatively, `upmpdcli combined with Mopidy-MPD`_ serves the same purpose as
+this setup.
+
+.. _upmpdcli combined with Mopidy-MPD: https://docs.mopidy.com/en/latest/clients/upnp/
+
+
+Development tips
+================
+
+Mopidy-MPRIS has an extensive test suite, so the first step for all changes
+or additions is to add a test exercising the new code. However, making the
+tests pass doesn't ensure that what comes out on the D-Bus bus is correct. To
+introspect this through the bus, there's a couple of useful tools.
+
+
+Browsing the MPRIS API with D-Feet
+----------------------------------
+
+D-Feet is a graphical D-Bus browser. On Debian/Ubuntu systems it can be
+installed by running::
+
+ sudo apt install d-feet
+
+Then run the ``d-feet`` command. In the D-Feet window, select the tab
+corresponding to the bus you run Mopidy-MPRIS on, usually the session bus.
+Then search for "MediaPlayer2" to find all available MPRIS interfaces.
+
+To get the current value of a property, double-click it. To execute a method,
+double-click it, provide any required arguments, and click "Execute".
+
+For more information on D-Feet, see the `GNOME wiki
+<https://wiki.gnome.org/Apps/DFeet>`_.
+
+
+Testing the MPRIS API with pydbus
+---------------------------------
+
+To use the MPRIS API directly, start Mopidy, and then run the following in a
+Python shell to use ``pydbus`` as an MPRIS client::
+
+ >>> import pydbus
+ >>> bus = pydbus.SessionBus()
+ >>> player = bus.get('org.mpris.MediaPlayer2.mopidy', '/org/mpris/MediaPlayer2')
+
+Now you can control Mopidy through the player object. To get properties from
+Mopidy, run for example::
+
+ >>> player.PlaybackStatus
+ 'Playing'
+ >>> player.Metadata
+ {'mpris:artUrl': 'https://i.scdn.co/image/8eb49b41eeb45c1cf53e1ddfea7973d9ca257777',
+ 'mpris:length': 342000000,
+ 'mpris:trackid': '/com/mopidy/track/36',
+ 'xesam:album': '65/Milo',
+ 'xesam:albumArtist': ['Kiasmos'],
+ 'xesam:artist': ['Rival Consoles'],
+ 'xesam:discNumber': 1,
+ 'xesam:title': 'Arp',
+ 'xesam:trackNumber': 5,
+ 'xesam:url': 'spotify:track:7CoxEEsqo3XdvUsScRV4WD'}
+ >>>
+
+To pause Mopidy's playback through D-Bus, run::
+
+ >>> player.Pause()
+ >>>
+
+For details on the API, please refer to the `MPRIS specification
+<https://specifications.freedesktop.org/mpris-spec/latest/>`__.
+
+
+Project resources
+=================
+
+- `Source code <https://github.com/mopidy/mopidy-mpris>`_
+- `Issue tracker <https://github.com/mopidy/mopidy-mpris/issues>`_
+- `Changelog <https://github.com/mopidy/mopidy-mpris/releases>`_
+
+
+Credits
+=======
+
+- Original author: `Stein Magnus Jodal <https://github.com/jodal>`__
+- Current maintainer: None. Maintainer wanted, see section above.
+- `Contributors <https://github.com/mopidy/mopidy-mpris/graphs/contributors>`_
diff --git a/README.rst b/README.rst
index 37f37dd..d5dae01 100644
--- a/README.rst
+++ b/README.rst
@@ -6,9 +6,9 @@ Mopidy-MPRIS
:target: https://pypi.org/project/Mopidy-MPRIS/
:alt: Latest PyPI version
-.. image:: https://img.shields.io/circleci/build/gh/mopidy/mopidy-mpris
- :target: https://circleci.com/gh/mopidy/mopidy-mpris
- :alt: CircleCI build status
+.. image:: https://img.shields.io/github/workflow/status/mopidy/mopidy-mpris/CI
+ :target: https://github.com/mopidy/mopidy-mpris/actions
+ :alt: CI build status
.. image:: https://img.shields.io/codecov/c/gh/mopidy/mopidy-mpris
:target: https://codecov.io/gh/mopidy/mopidy-mpris
@@ -27,6 +27,27 @@ is currently not supported.
.. _TrackList interface: https://specifications.freedesktop.org/mpris-spec/latest/Track_List_Interface.html
+Maintainer wanted
+=================
+
+Mopidy-MPRIS is currently kept on life support by the Mopidy core developers.
+It is in need of a more dedicated maintainer.
+
+If you want to be the maintainer of Mopidy-MPRIS, please:
+
+1. Make 2-3 good pull requests improving any part of the project.
+
+2. Read and get familiar with all of the project's open issues.
+
+3. Send a pull request removing this section and adding yourself as the
+ "Current maintainer" in the "Credits" section below. In the pull request
+ description, please refer to the previous pull requests and state that
+ you've familiarized yourself with the open issues.
+
+ As a maintainer, you'll be given push access to the repo and the authority
+ to make releases to PyPI when you see fit.
+
+
Table of contents
=================
@@ -373,5 +394,5 @@ Credits
=======
- Original author: `Stein Magnus Jodal <https://github.com/jodal>`__
-- Current maintainer: `Stein Magnus Jodal <https://github.com/jodal>`__
+- Current maintainer: None. Maintainer wanted, see section above.
- `Contributors <https://github.com/mopidy/mopidy-mpris/graphs/contributors>`_
diff --git a/debian/changelog b/debian/changelog
index 78ef81c..56ff0ff 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+mopidy-mpris (3.0.3+git20220518.2.630e0a2-1) UNRELEASED; urgency=low
+
+ * New upstream snapshot.
+ * New upstream snapshot.
+
+ -- Debian Janitor <janitor@jelmer.uk> Mon, 19 Dec 2022 20:19:46 -0000
+
mopidy-mpris (3.0.3-1) unstable; urgency=medium
* New upstream release
diff --git a/pyproject.toml b/pyproject.toml
index bff16e0..7929f7e 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -3,7 +3,7 @@ requires = ["setuptools >= 30.3.0", "wheel"]
[tool.black]
-target-version = ["py37", "py38"]
+target-version = ["py37", "py38", "py39", "py310"]
line-length = 80
diff --git a/setup.cfg b/setup.cfg
index d234524..c0904ef 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -18,6 +18,7 @@ classifiers =
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
Topic :: Multimedia :: Sound/Audio :: Players
[options]
@@ -36,18 +37,15 @@ lint =
black
check-manifest
flake8
+ flake8-black
flake8-bugbear
flake8-import-order
isort[pyproject]
-release =
- twine
- wheel
test =
pytest
pytest-cov
dev =
%(lint)s
- %(release)s
%(test)s
[options.packages.find]
diff --git a/tests/dummy_audio.py b/tests/dummy_audio.py
index 90b3d29..694f9bf 100644
--- a/tests/dummy_audio.py
+++ b/tests/dummy_audio.py
@@ -27,7 +27,7 @@ class DummyAudio(pykka.ThreadingActor):
self._tags = {}
self._bad_uris = set()
- def set_uri(self, uri, live_stream=False):
+ def set_uri(self, uri, live_stream=False, download=False):
assert self._uri is None, "prepare change not called before set"
self._position = 0
self._uri = uri
diff --git a/tox.ini b/tox.ini
index 6d655cc..1dd60a5 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
[tox]
-envlist = py37, py38, py39, black, check-manifest, flake8
+envlist = py37, py38, py39, py310, check-manifest, flake8
[testenv]
sitepackages = true
@@ -10,10 +10,6 @@ commands =
--cov=mopidy_mpris --cov-report=term-missing \
{posargs}
-[testenv:black]
-deps = .[lint]
-commands = python -m black --check .
-
[testenv:check-manifest]
deps = .[lint]
commands = python -m check_manifest
Debdiff
File lists identical (after any substitutions)
No differences were encountered in the control files