Merge branch 'master' into release-2.2
This commit is contained in:
commit
3e40f918c9
@ -76,21 +76,21 @@ simultaneously. To use the Icecast output, do the following:
|
|||||||
.. code-block:: ini
|
.. code-block:: ini
|
||||||
|
|
||||||
[audio]
|
[audio]
|
||||||
output = lamemp3enc ! shout2send mount=mopidy ip=127.0.0.1 port=8000 password=hackme
|
output = lamemp3enc ! shout2send async=false mount=mopidy ip=127.0.0.1 port=8000 password=hackme
|
||||||
|
|
||||||
Example for Ogg Vorbis streaming:
|
Example for Ogg Vorbis streaming:
|
||||||
|
|
||||||
.. code-block:: ini
|
.. code-block:: ini
|
||||||
|
|
||||||
[audio]
|
[audio]
|
||||||
output = audioresample ! audioconvert ! vorbisenc ! oggmux ! shout2send mount=mopidy ip=127.0.0.1 port=8000 password=hackme
|
output = audioresample ! audioconvert ! vorbisenc ! oggmux ! shout2send async=false mount=mopidy ip=127.0.0.1 port=8000 password=hackme
|
||||||
|
|
||||||
Example for MP3 streaming and local audio (multiple outputs):
|
Example for MP3 streaming and local audio (multiple outputs):
|
||||||
|
|
||||||
.. code-block:: ini
|
.. code-block:: ini
|
||||||
|
|
||||||
[audio]
|
[audio]
|
||||||
output = tee name=t ! queue ! audioresample ! autoaudiosink t. ! queue ! lamemp3enc ! shout2send mount=mopidy ip=127.0.0.1 port=8000 password=hackme
|
output = tee name=t ! queue ! audioresample ! autoaudiosink t. ! queue ! lamemp3enc ! shout2send async=false mount=mopidy ip=127.0.0.1 port=8000 password=hackme
|
||||||
|
|
||||||
Other advanced setups are also possible for outputs. Basically, anything you
|
Other advanced setups are also possible for outputs. Basically, anything you
|
||||||
can use with the ``gst-launch-1.0`` command can be plugged into
|
can use with the ``gst-launch-1.0`` command can be plugged into
|
||||||
|
|||||||
@ -20,7 +20,7 @@ Mopidy and enabled by default.
|
|||||||
local network. You have been warned.
|
local network. You have been warned.
|
||||||
|
|
||||||
MPD stands for Music Player Daemon, which is also the name of the `original MPD
|
MPD stands for Music Player Daemon, which is also the name of the `original MPD
|
||||||
server project <http://mpd.wikia.com/>`_. Mopidy does not depend on the
|
server project <https://www.musicpd.org/>`_. Mopidy does not depend on the
|
||||||
original MPD server, but implements the MPD protocol itself, and is thus
|
original MPD server, but implements the MPD protocol itself, and is thus
|
||||||
compatible with clients for the original MPD server.
|
compatible with clients for the original MPD server.
|
||||||
|
|
||||||
|
|||||||
@ -6,9 +6,9 @@ from mopidy.compat import configparser
|
|||||||
from mopidy.internal import validation
|
from mopidy.internal import validation
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import xml.etree.cElementTree as elementtree
|
import xml.etree.cElementTree as elementtree # noqa: N813
|
||||||
except ImportError:
|
except ImportError:
|
||||||
import xml.etree.ElementTree as elementtree
|
import xml.etree.ElementTree as elementtree # noqa: N813
|
||||||
|
|
||||||
|
|
||||||
def parse(data):
|
def parse(data):
|
||||||
|
|||||||
@ -108,7 +108,7 @@ def track_to_mpd_format(track, position=None, stream_title=None):
|
|||||||
if track.album and track.album.uri:
|
if track.album and track.album.uri:
|
||||||
result.append(('X-AlbumUri', track.album.uri))
|
result.append(('X-AlbumUri', track.album.uri))
|
||||||
if track.album and track.album.images:
|
if track.album and track.album.images:
|
||||||
images = ';'.join(i for i in track.album.images if i is not '')
|
images = ';'.join(i for i in track.album.images if i != '')
|
||||||
result.append(('X-AlbumImage', images))
|
result.append(('X-AlbumImage', images))
|
||||||
|
|
||||||
result = [element for element in result if _has_value(*element)]
|
result = [element for element in result if _has_value(*element)]
|
||||||
|
|||||||
@ -45,6 +45,9 @@ class ScannerTest(unittest.TestCase):
|
|||||||
|
|
||||||
def test_tags_is_set(self):
|
def test_tags_is_set(self):
|
||||||
self.scan(self.find('scanner/simple'))
|
self.scan(self.find('scanner/simple'))
|
||||||
|
|
||||||
|
self.check_if_missing_plugin()
|
||||||
|
|
||||||
self.assert_(self.result.values()[0].tags)
|
self.assert_(self.result.values()[0].tags)
|
||||||
|
|
||||||
def test_errors_is_not_set(self):
|
def test_errors_is_not_set(self):
|
||||||
|
|||||||
@ -164,7 +164,7 @@ __HASH10__ = foo # = should all be treated as a comment."""
|
|||||||
|
|
||||||
|
|
||||||
class PreProcessorTest(unittest.TestCase):
|
class PreProcessorTest(unittest.TestCase):
|
||||||
maxDiff = None # Show entire diff.
|
maxDiff = None # Show entire diff. # noqa: N815
|
||||||
|
|
||||||
def test_empty_config(self):
|
def test_empty_config(self):
|
||||||
result = config._preprocess('')
|
result = config._preprocess('')
|
||||||
@ -230,7 +230,7 @@ class PreProcessorTest(unittest.TestCase):
|
|||||||
|
|
||||||
|
|
||||||
class PostProcessorTest(unittest.TestCase):
|
class PostProcessorTest(unittest.TestCase):
|
||||||
maxDiff = None # Show entire diff.
|
maxDiff = None # Show entire diff. # noqa: N815
|
||||||
|
|
||||||
def test_empty_config(self):
|
def test_empty_config(self):
|
||||||
result = config._postprocess('[__COMMENTS__]')
|
result = config._postprocess('[__COMMENTS__]')
|
||||||
|
|||||||
@ -497,7 +497,7 @@ class TestCurrentAndPendingTlTrack(BaseTest):
|
|||||||
'mopidy.core.playback.listener.CoreListener', spec=core.CoreListener)
|
'mopidy.core.playback.listener.CoreListener', spec=core.CoreListener)
|
||||||
class EventEmissionTest(BaseTest):
|
class EventEmissionTest(BaseTest):
|
||||||
|
|
||||||
maxDiff = None
|
maxDiff = None # noqa: N815
|
||||||
|
|
||||||
def test_play_when_stopped_emits_events(self, listener_mock):
|
def test_play_when_stopped_emits_events(self, listener_mock):
|
||||||
tl_tracks = self.core.tracklist.get_tl_tracks()
|
tl_tracks = self.core.tracklist.get_tl_tracks()
|
||||||
|
|||||||
@ -237,7 +237,7 @@ class ExpandPathTest(unittest.TestCase):
|
|||||||
|
|
||||||
|
|
||||||
class FindMTimesTest(unittest.TestCase):
|
class FindMTimesTest(unittest.TestCase):
|
||||||
maxDiff = None
|
maxDiff = None # noqa: N815
|
||||||
|
|
||||||
def setUp(self): # noqa: N802
|
def setUp(self): # noqa: N802
|
||||||
self.tmpdir = tempfile.mkdtemp(b'.mopidy-tests')
|
self.tmpdir = tempfile.mkdtemp(b'.mopidy-tests')
|
||||||
|
|||||||
@ -9,7 +9,7 @@ from tests import path_to_data_dir
|
|||||||
|
|
||||||
|
|
||||||
class BrowseCacheTest(unittest.TestCase):
|
class BrowseCacheTest(unittest.TestCase):
|
||||||
maxDiff = None
|
maxDiff = None # noqa: N815
|
||||||
|
|
||||||
def setUp(self): # noqa: N802
|
def setUp(self): # noqa: N802
|
||||||
self.uris = ['local:track:foo/bar/song1',
|
self.uris = ['local:track:foo/bar/song1',
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user