mopidy / mopidy Goto Github PK
View Code? Open in Web Editor NEWMopidy is an extensible music server written in Python
Home Page: https://mopidy.com
License: Apache License 2.0
Mopidy is an extensible music server written in Python
Home Page: https://mopidy.com
License: Apache License 2.0
Hey there,
This is more of a question. Can the buffers be made larger through settings? Right now I have a lot of skipping which makes me think its because of buffering issues. Despotify doesn't have these issues, so its not the internet connection at a given time (as I then quickly switch to Despotify to make sure).
I'm using the Mopidy just before gstreamer got introduced as a dependency and have been having these buffering issues on/off with all versions prior.
Thanks!
Example:
http://open.spotify.com/track/517SGGDDWTJPFv8EyqkJZh
Regexps that would catch both:
spotify_track_res = ( re.compile(r'spotify:(?P<type>\w+):(?P<track_id>\w{22})'), re.compile(r'http://open.spotify.com/(?P<type>\w+)/(?P<track_id>\w{22})') )
After the fix for #24 was applied, Mopidy gets a step closer to working on OS X.
If I load a playlist and then press play, the following happens:
jodal@iota:~/dev/mopidy:develop$ GST_DEBUG_NO_COLOR=1 GST_DEBUG=2 python mopidy
INFO -- Starting Mopidy --
** Message: pygobject_register_sinkfunc is deprecated (GstObject)
INFO Mopidy uses SPOTIFY(R) CORE
INFO Connected to Last.fm
INFO MPD server running at [::]:6600
INFO Connected to Spotify
INFO MPD client connection from [::ffff:10.37.3.10]:48601
0:00:52.278484000 15391 0x104737370 WARN basetransform gstbasetransform.c:1065:gst_base_transform_acceptcaps_default:<volume> transform could not transform 0x10098a240 in anything we support
Segmentation fault
Same situation with a bit more logging from both Mopidy and GStreamer:
jodal@iota:~/dev/mopidy:develop$ GST_DEBUG_NO_COLOR=1 GST_DEBUG=3 python mopidy -v
INFO 2010-10-22 00:29:41,934 [45465:MainThread] mopidy.core
-- Starting Mopidy --
DEBUG 2010-10-22 00:29:41,934 [45465:MainThread] mopidy.utils
Loading: mopidy.outputs.gstreamer.GStreamerOutput
0:00:00.000040000 45465 0x10101e270 INFO GST_INIT gst.c:599:init_pre: Initializing GStreamer Core Library version 0.10.30
0:00:00.000059000 45465 0x10101e270 INFO GST_INIT gst.c:600:init_pre: Using library installed in /usr/local/Cellar/gstreamer/0.10.30/lib
0:00:00.000082000 45465 0x10101e270 INFO GST_INIT gst.c:610:init_pre: Darwin iota.obv20.jodal.no 10.3.0 Darwin Kernel Version 10.3.0: Fri Feb 26 11:58:09 PST 2010; root:xnu-1504.3.12~1/RELEASE_I386 i386
0:00:00.000149000 45465 0x10101e270 INFO GST_INIT gstquery.c:105:_gst_query_initialize: init queries
0:00:00.000713000 45465 0x10101e270 INFO GST_INIT gstmessage.c:73:_gst_message_initialize: init messages
0:00:00.000950000 45465 0x10101e270 INFO GST_PLUGIN_LOADING gstplugin.c:348:_gst_plugin_initialize: registering 0 static plugins
0:00:00.001063000 45465 0x10101e270 INFO GST_PLUGIN_LOADING gstplugin.c:254:gst_plugin_register_static: registered static plugin "staticelements"
0:00:00.001074000 45465 0x10101e270 INFO GST_PLUGIN_LOADING gstplugin.c:256:gst_plugin_register_static: added static plugin "staticelements", result: 1
0:00:00.001111000 45465 0x10101e270 INFO GST_REGISTRY gstregistry.c:1572:ensure_current_registry: reading registry cache: /Users/jodal/.gstreamer-0.10/registry.x86_64.bin
0:00:00.009053000 45465 0x10101e270 INFO GST_REGISTRY gstregistrybinary.c:601:gst_registry_binary_read_cache: loaded /Users/jodal/.gstreamer-0.10/registry.x86_64.bin in 0.007927 seconds
0:00:00.009109000 45465 0x10101e270 INFO GST_REGISTRY gstregistry.c:1442:scan_and_update_registry: Validating plugins from registry cache: /Users/jodal/.gstreamer-0.10/registry.x86_64.bin
0:00:00.010377000 45465 0x10101e270 INFO GST_REGISTRY gstregistry.c:1534:scan_and_update_registry: Registry cache has not changed
0:00:00.010389000 45465 0x10101e270 INFO GST_REGISTRY gstregistry.c:1601:ensure_current_registry: registry reading and updating done, result = 1
0:00:00.010395000 45465 0x10101e270 INFO GST_INIT gst.c:786:init_post: GLib runtime version: 2.24.1
0:00:00.010400000 45465 0x10101e270 INFO GST_INIT gst.c:788:init_post: GLib headers version: 2.24.1
0:00:00.010408000 45465 0x10101e270 INFO GST_INIT gst.c:450:gst_init_check: initialized GStreamer successfully
** Message: pygobject_register_sinkfunc is deprecated (GstObject)
DEBUG 2010-10-22 00:29:41,962 [45465:GStreamerMessagesThread] mopidy.utils.process
GStreamerMessagesThread: Starting thread
DEBUG 2010-10-22 00:29:41,962 [45465:GStreamerPlayerThread] mopidy.utils.process
GStreamerPlayerThread: Starting thread
DEBUG 2010-10-22 00:29:41,962 [45465:MainThread] mopidy.utils
Loading: mopidy.backends.libspotify.LibspotifyBackend
DEBUG 2010-10-22 00:29:41,962 [45465:GStreamerPlayerThread] mopidy.outputs.gstreamer
Setting up GStreamer pipeline
0:00:00.034743000 45465 0x101601120 INFO GST_PIPELINE gstparse.c:291:gst_parse_launch_full: parsing pipeline description 'audioconvert name=convert ! volume name=volume ! autoaudiosink'
DEBUG 2010-10-22 00:29:41,980 [45465:MainThread] mopidy.utils
Loading: mopidy.mixers.gstreamer_software.GStreamerSoftwareMixer
0:00:00.035618000 45465 0x101601120 INFO GST_PLUGIN_LOADING gstplugin.c:800:gst_plugin_load_file: plugin "/usr/local/lib/gstreamer-0.10/libgstaudioconvert.so" loaded
0:00:00.035634000 45465 0x101601120 INFO GST_ELEMENT_FACTORY gstelementfactory.c:363:gst_element_factory_create: creating element "audioconvert"
INFO 2010-10-22 00:29:41,981 [45465:MainThread] mopidy.backends.libspotify
Mopidy uses SPOTIFY(R) CORE
0:00:00.035915000 45465 0x101601120 INFO GST_ELEMENT_PADS gstelement.c:711:gst_element_add_pad:<GstBaseTransform@0x101814020> adding pad 'sink'
0:00:00.035943000 45465 0x101601120 INFO GST_ELEMENT_PADS gstelement.c:711:gst_element_add_pad:<GstBaseTransform@0x101814020> adding pad 'src'
DEBUG 2010-10-22 00:29:41,981 [45465:MainThread] mopidy.backends.libspotify
Connecting to Spotify
DEBUG 2010-10-22 00:29:41,982 [45465:LibspotifySMThread] mopidy.utils.process
LibspotifySMThread: Starting thread
0:00:00.036420000 45465 0x101601120 INFO GST_PLUGIN_LOADING gstplugin.c:800:gst_plugin_load_file: plugin "/usr/local/lib/gstreamer-0.10/libgstvolume.so" loaded
0:00:00.036433000 45465 0x101601120 INFO GST_ELEMENT_FACTORY gstelementfactory.c:363:gst_element_factory_create: creating element "volume"
0:00:00.036596000 45465 0x101601120 INFO GST_ELEMENT_PADS gstelement.c:711:gst_element_add_pad:<GstBaseTransform@0x10181a030> adding pad 'sink'
0:00:00.036619000 45465 0x101601120 INFO GST_ELEMENT_PADS gstelement.c:711:gst_element_add_pad:<GstBaseTransform@0x10181a030> adding pad 'src'
DEBUG 2010-10-22 00:29:41,982 [45465:MainThread] mopidy.utils
Loading: mopidy.frontends.mpd.MpdFrontend
DEBUG 2010-10-22 00:29:41,982 [45465:MpdThread] mopidy.utils.process
MpdThread: Starting thread
0:00:00.037074000 45465 0x101601120 INFO GST_PLUGIN_LOADING gstplugin.c:800:gst_plugin_load_file: plugin "/usr/local/lib/gstreamer-0.10/libgstautodetect.so" loaded
0:00:00.037094000 45465 0x101601120 INFO GST_ELEMENT_FACTORY gstelementfactory.c:363:gst_element_factory_create: creating element "autoaudiosink"
DEBUG 2010-10-22 00:29:41,982 [45465:MainThread] mopidy.utils
Loading: mopidy.frontends.lastfm.LastfmFrontend
0:00:00.037194000 45465 0x101601120 INFO GST_ELEMENT_PADS gstelement.c:711:gst_element_add_pad:<GstAutoAudioSink@0x101816000> adding pad 'sink'
0:00:00.037883000 45465 0x101601120 INFO GST_PLUGIN_LOADING gstplugin.c:800:gst_plugin_load_file: plugin "/usr/local/lib/gstreamer-0.10/libgstcoreelements.so" loaded
0:00:00.037905000 45465 0x101601120 INFO GST_ELEMENT_FACTORY gstelementfactory.c:361:gst_element_factory_create: creating element "fakesink" named "tempsink"
0:00:00.038021000 45465 0x101601120 INFO GST_ELEMENT_PADS gstelement.c:711:gst_element_add_pad:<GstBaseSink@0x101819000> adding pad 'sink'
0:00:00.038069000 45465 0x101601120 INFO GST_ELEMENT_PADS gstelement.c:958:gst_element_get_static_pad: found pad tempsink:sink
0:00:00.038084000 45465 0x101601120 INFO GST_PADS gstpad.c:1906:gst_pad_link_prepare: trying to link sink:proxypad0 and tempsink:sink
0:00:00.038093000 45465 0x101601120 INFO GST_PADS gstpad.c:2089:gst_pad_link_full: linked sink:proxypad0 and tempsink:sink, successful
0:00:00.038115000 45465 0x101601120 INFO GST_ELEMENT_FACTORY gstelementfactory.c:363:gst_element_factory_create: creating element "pipeline"
0:00:00.038183000 45465 0x101601120 INFO GST_PIPELINE ./grammar.y:568:gst_parse_perform_link: linking convert:(any) to volume:(any) (0/0) with caps "0x0"
0:00:00.038199000 45465 0x101601120 INFO GST_ELEMENT_PADS gstutils.c:1592:gst_element_link_pads_full: trying to link element convert:(any) to element volume:(any)
0:00:00.038210000 45465 0x101601120 INFO GST_PADS gstutils.c:1046:gst_pad_check_link: trying to link convert:src and volume:src
0:00:00.038217000 45465 0x101601120 INFO GST_PADS gstutils.c:1066:gst_pad_check_link: Sink pad volume:src is not sink pad, failed
0:00:00.038223000 45465 0x101601120 INFO GST_PADS gstutils.c:1046:gst_pad_check_link: trying to link convert:src and volume:sink
0:00:00.038353000 45465 0x101601120 INFO GST_PADS gstutils.c:1493:prepare_link_maybe_ghosting: convert and volume in same bin, no need for ghost pads
0:00:00.038374000 45465 0x101601120 INFO GST_PADS gstpad.c:1906:gst_pad_link_prepare: trying to link convert:src and volume:sink
0:00:00.038474000 45465 0x101601120 INFO GST_PADS gstpad.c:2089:gst_pad_link_full: linked convert:src and volume:sink, successful
0:00:00.038489000 45465 0x101601120 INFO GST_PIPELINE ./grammar.y:568:gst_parse_perform_link: linking volume:(any) to autoaudiosink0:(any) (0/0) with caps "0x0"
0:00:00.038496000 45465 0x101601120 INFO GST_ELEMENT_PADS gstutils.c:1592:gst_element_link_pads_full: trying to link element volume:(any) to element autoaudiosink0:(any)
0:00:00.038504000 45465 0x101601120 INFO GST_PADS gstutils.c:1046:gst_pad_check_link: trying to link volume:src and autoaudiosink0:sink
0:00:00.038694000 45465 0x101601120 INFO GST_PADS gstutils.c:1493:prepare_link_maybe_ghosting: volume and autoaudiosink0 in same bin, no need for ghost pads
0:00:00.038710000 45465 0x101601120 INFO GST_PADS gstpad.c:1906:gst_pad_link_prepare: trying to link volume:src and autoaudiosink0:sink
0:00:00.038903000 45465 0x101601120 INFO GST_PADS gstpad.c:2089:gst_pad_link_full: linked volume:src and autoaudiosink0:sink, successful
DEBUG 2010-10-22 00:29:41,982 [45465:MpdThread] mopidy.frontends.mpd.thread
Starting MPD server thread
0:00:00.041104000 45465 0x101601120 INFO GST_PARENTAGE gstbin.c:3623:gst_bin_get_by_name: [pipeline0]: looking up child element convert
0:00:00.041214000 45465 0x101601120 INFO GST_ELEMENT_PADS gstelement.c:958:gst_element_get_static_pad: found pad convert:sink
0:00:00.065286000 45465 0x101601120 INFO GST_PLUGIN_LOADING gstplugin.c:800:gst_plugin_load_file: plugin "/usr/local/lib/gstreamer-0.10/libgstapp.so" loaded
0:00:00.065307000 45465 0x101601120 INFO GST_ELEMENT_FACTORY gstelementfactory.c:361:gst_element_factory_create: creating element "appsrc" named "appsrc"
0:00:00.065468000 45465 0x101601120 INFO GST_ELEMENT_PADS gstelement.c:711:gst_element_add_pad:<GstBaseSrc@0x10181a3e0> adding pad 'src'
DEBUG 2010-10-22 00:29:42,014 [45465:MpdThread] mopidy.frontends.mpd.server
MPD server is binding to [::]:6600
0:00:00.072783000 45465 0x101601120 INFO GST_ELEMENT_PADS gstelement.c:958:gst_element_get_static_pad: found pad appsrc:src
0:00:00.072831000 45465 0x101601120 INFO GST_PADS gstpad.c:1906:gst_pad_link_prepare: trying to link appsrc:src and convert:sink
0:00:00.073554000 45465 0x101601120 INFO GST_PADS gstpad.c:2089:gst_pad_link_full: linked appsrc:src and convert:sink, successful
DEBUG 2010-10-22 00:29:42,033 [45465:Dummy-6] mopidy.backends.libspotify.session_manager
System message: 22:29:42.023 I [ap:1368] Connecting to AP A2.spotify.com:4070
DEBUG 2010-10-22 00:29:42,034 [45465:LastfmFrontendThread] mopidy.utils.process
LastfmFrontendThread: Starting thread
INFO 2010-10-22 00:29:42,034 [45465:MpdThread] mopidy.frontends.mpd.server
MPD server running at [::]:6600
INFO 2010-10-22 00:29:42,034 [45465:LastfmFrontendThread] mopidy.frontends.lastfm
Connected to Last.fm
DEBUG 2010-10-22 00:29:42,171 [45465:LibspotifySMThread] mopidy.backends.libspotify.session_manager
User message: <a href="https://www.spotify.com/account/share/">Share Spotify</a> with friends and family, they'll love it.
DEBUG 2010-10-22 00:29:42,205 [45465:LibspotifySMThread] mopidy.backends.libspotify.session_manager
System message: 22:29:42.205 E [session:728] Not all tracks cached
INFO 2010-10-22 00:29:42,207 [45465:LibspotifySMThread] mopidy.backends.libspotify.session_manager
Connected to Spotify
DEBUG 2010-10-22 00:29:42,207 [45465:LibspotifySMThread] mopidy.backends.libspotify.session_manager
Metadata updated, refreshing stored playlists
DEBUG 2010-10-22 00:29:42,774 [45465:LibspotifySMThread] mopidy.backends.libspotify.session_manager
Metadata updated, refreshing stored playlists
DEBUG 2010-10-22 00:29:43,134 [45465:LibspotifySMThread] mopidy.backends.libspotify.session_manager
Metadata updated, refreshing stored playlists
DEBUG 2010-10-22 00:29:43,178 [45465:LibspotifySMThread] mopidy.backends.libspotify.session_manager
Metadata updated, refreshing stored playlists
DEBUG 2010-10-22 00:29:43,434 [45465:LibspotifySMThread] mopidy.backends.libspotify.session_manager
Metadata updated, refreshing stored playlists
DEBUG 2010-10-22 00:29:43,527 [45465:LibspotifySMThread] mopidy.backends.libspotify.session_manager
Metadata updated, refreshing stored playlists
DEBUG 2010-10-22 00:29:43,761 [45465:LibspotifySMThread] mopidy.backends.libspotify.session_manager
Metadata updated, refreshing stored playlists
DEBUG 2010-10-22 00:29:43,932 [45465:LibspotifySMThread] mopidy.backends.libspotify.session_manager
Metadata updated, refreshing stored playlists
DEBUG 2010-10-22 00:29:44,132 [45465:LibspotifySMThread] mopidy.backends.libspotify.session_manager
Metadata updated, refreshing stored playlists
DEBUG 2010-10-22 00:29:44,399 [45465:LibspotifySMThread] mopidy.backends.libspotify.session_manager
Metadata updated, refreshing stored playlists
DEBUG 2010-10-22 00:29:44,739 [45465:LibspotifySMThread] mopidy.backends.libspotify.session_manager
Metadata updated, refreshing stored playlists
DEBUG 2010-10-22 00:29:45,113 [45465:LibspotifySMThread] mopidy.backends.libspotify.session_manager
Metadata updated, refreshing stored playlists
DEBUG 2010-10-22 00:29:45,648 [45465:LibspotifySMThread] mopidy.backends.libspotify.session_manager
Metadata updated, refreshing stored playlists
DEBUG 2010-10-22 00:29:46,103 [45465:LibspotifySMThread] mopidy.backends.libspotify.session_manager
Metadata updated, refreshing stored playlists
INFO 2010-10-22 00:29:50,284 [45465:MpdThread] mopidy.frontends.mpd.server
MPD client connection from [::ffff:10.37.3.10]:51313
DEBUG 2010-10-22 00:29:50,284 [45465:MpdThread] mopidy.frontends.mpd.session
Output to [::ffff:10.37.3.10]:51313: OK MPD 0.16.0
DEBUG 2010-10-22 00:29:55,249 [45465:MpdThread] mopidy.frontends.mpd.session
Input from [::ffff:10.37.3.10]:51313: load "Döderlein"
DEBUG 2010-10-22 00:29:55,271 [45465:MpdThread] mopidy.frontends.mpd.session
Output to [::ffff:10.37.3.10]:51313: OK
DEBUG 2010-10-22 00:29:56,448 [45465:MpdThread] mopidy.frontends.mpd.session
Input from [::ffff:10.37.3.10]:51313: play
DEBUG 2010-10-22 00:29:56,451 [45465:MainThread] mopidy.backends.base
Changing state: stopped -> playing
0:00:14.506304000 45465 0x101601120 INFO GST_STATES gstelement.c:2236:gst_element_continue_state:<tempsink> completed state change to NULL
0:00:14.506330000 45465 0x101601120 INFO GST_ELEMENT_PADS gstpad.c:1686:gst_pad_unlink: unlinking sink:proxypad0(0x10181c080) and tempsink:sink(0x1018186c0)
0:00:14.506342000 45465 0x101601120 INFO GST_ELEMENT_PADS gstpad.c:1729:gst_pad_unlink: unlinked sink:proxypad0 and tempsink:sink
0:00:14.506349000 45465 0x101601120 INFO GST_PARENTAGE gstbin.c:1388:gst_bin_remove_func:<autoaudiosink0> removed child "tempsink"
0:00:14.506365000 45465 0x101601120 INFO GST_REFCOUNTING gstelement.c:2850:gst_element_dispose:<tempsink> dispose
0:00:14.506372000 45465 0x101601120 INFO GST_ELEMENT_PADS gstelement.c:830:gst_element_remove_pad:<tempsink> removing pad 'sink'
0:00:14.506394000 45465 0x101601120 INFO GST_REFCOUNTING gstelement.c:2874:gst_element_dispose:<tempsink> parent class dispose
0:00:14.506406000 45465 0x101601120 INFO GST_REFCOUNTING gstelement.c:2905:gst_element_finalize:<tempsink> finalize
0:00:14.506413000 45465 0x101601120 INFO GST_REFCOUNTING gstelement.c:2916:gst_element_finalize:<tempsink> finalize parent
0:00:14.507106000 45465 0x101601120 INFO GST_PLUGIN_LOADING gstplugin.c:800:gst_plugin_load_file: plugin "/usr/local/lib/gstreamer-0.10/libgstosxaudio.so" loaded
0:00:14.507121000 45465 0x101601120 INFO GST_ELEMENT_FACTORY gstelementfactory.c:361:gst_element_factory_create: creating element "osxaudiosink" named "autoaudiosink0-actual-sink-osxaudio"
0:00:14.507231000 45465 0x101601120 INFO GST_ELEMENT_PADS gstelement.c:711:gst_element_add_pad:<GstBaseSink@0x101819000> adding pad 'sink'
0:00:14.507285000 45465 0x101601120 INFO GST_ELEMENT_PADS gstelement.c:958:gst_element_get_static_pad: found pad autoaudiosink0-actual-sink-osxaudio:sink
0:00:14.533355000 45465 0x101601120 INFO GST_STATES gstelement.c:2236:gst_element_continue_state:<autoaudiosink0-actual-sink-osxaudio> completed state change to READY
0:00:14.533374000 45465 0x101601120 INFO GST_STATES gstelement.c:2249:gst_element_continue_state:<autoaudiosink0-actual-sink-osxaudio> posting state-changed NULL to READY
0:00:14.533420000 45465 0x101601120 INFO GST_ELEMENT_PADS gstelement.c:958:gst_element_get_static_pad: found pad autoaudiosink0-actual-sink-osxaudio:sink
0:00:14.533431000 45465 0x101601120 INFO GST_PADS gstpad.c:1906:gst_pad_link_prepare: trying to link sink:proxypad0 and autoaudiosink0-actual-sink-osxaudio:sink
0:00:14.533439000 45465 0x101601120 INFO GST_PADS gstpad.c:2089:gst_pad_link_full: linked sink:proxypad0 and autoaudiosink0-actual-sink-osxaudio:sink, successful
0:00:14.533450000 45465 0x101601120 INFO GST_STATES gstbin.c:2164:gst_bin_element_set_state:<autoaudiosink0-actual-sink-osxaudio> skipping transition from READY to READY, since bin pending is READY : last change state return follows
0:00:14.533457000 45465 0x101601120 INFO GST_STATES gstbin.c:2443:gst_bin_change_state_func:<autoaudiosink0> child 'autoaudiosink0-actual-sink-osxaudio' changed state to 2(READY) successfully
0:00:14.533467000 45465 0x101601120 INFO GST_STATES gstelement.c:2236:gst_element_continue_state:<autoaudiosink0> completed state change to READY
0:00:14.533474000 45465 0x101601120 INFO GST_STATES gstelement.c:2249:gst_element_continue_state:<autoaudiosink0> posting state-changed NULL to READY
0:00:14.533487000 45465 0x101601120 INFO GST_STATES gstbin.c:2443:gst_bin_change_state_func:<pipeline0> child 'autoaudiosink0' changed state to 2(READY) successfully
0:00:14.533498000 45465 0x101601120 INFO GST_STATES gstelement.c:2236:gst_element_continue_state:<volume> completed state change to READY
0:00:14.533504000 45465 0x101601120 INFO GST_STATES gstelement.c:2249:gst_element_continue_state:<volume> posting state-changed NULL to READY
0:00:14.533524000 45465 0x101601120 INFO GST_STATES gstbin.c:2443:gst_bin_change_state_func:<pipeline0> child 'volume' changed state to 2(READY) successfully
0:00:14.533535000 45465 0x101601120 INFO GST_STATES gstelement.c:2236:gst_element_continue_state:<convert> completed state change to READY
0:00:14.533542000 45465 0x101601120 INFO GST_STATES gstelement.c:2249:gst_element_continue_state:<convert> posting state-changed NULL to READY
0:00:14.533551000 45465 0x101601120 INFO GST_STATES gstbin.c:2443:gst_bin_change_state_func:<pipeline0> child 'convert' changed state to 2(READY) successfully
0:00:14.533560000 45465 0x101601120 INFO GST_STATES gstelement.c:2236:gst_element_continue_state:<appsrc> completed state change to READY
0:00:14.533566000 45465 0x101601120 INFO GST_STATES gstelement.c:2249:gst_element_continue_state:<appsrc> posting state-changed NULL to READY
0:00:14.533574000 45465 0x101601120 INFO GST_STATES gstbin.c:2443:gst_bin_change_state_func:<pipeline0> child 'appsrc' changed state to 2(READY) successfully
0:00:14.533582000 45465 0x101601120 INFO GST_STATES gstelement.c:2236:gst_element_continue_state:<pipeline0> completed state change to READY
0:00:14.533588000 45465 0x101601120 INFO GST_STATES gstelement.c:2249:gst_element_continue_state:<pipeline0> posting state-changed NULL to READY
DEBUG 2010-10-22 00:29:56,479 [45465:GStreamerPlayerThread] mopidy.outputs.gstreamer
Setting GStreamer state to READY: OK
DEBUG 2010-10-22 00:29:56,480 [45465:MainThread] mopidy.backends.libspotify.session_manager
System message: 22:29:56.480 I [file_picker.cpp:88] File picker: track=deb73292c3114d1d837c0f42dd350af6, file=2f60f174cf3d00ef5e932b0d57f5a2647774c6d7, bitrate=160000, max=160000, target=160000, num=3
0:00:14.537346000 45465 0x101601120 INFO GST_STATES gstbin.c:2449:gst_bin_change_state_func:<autoaudiosink0> child 'autoaudiosink0-actual-sink-osxaudio' is changing state asynchronously to PAUSED
0:00:14.537369000 45465 0x101601120 INFO GST_STATES gstbin.c:2449:gst_bin_change_state_func:<pipeline0> child 'autoaudiosink0' is changing state asynchronously to PAUSED
0:00:14.537388000 45465 0x101601120 INFO GST_STATES gstelement.c:2236:gst_element_continue_state:<volume> completed state change to PAUSED
0:00:14.537396000 45465 0x101601120 INFO GST_STATES gstelement.c:2249:gst_element_continue_state:<volume> posting state-changed READY to PAUSED
0:00:14.537411000 45465 0x101601120 INFO GST_STATES gstbin.c:2443:gst_bin_change_state_func:<pipeline0> child 'volume' changed state to 3(PAUSED) successfully
0:00:14.537426000 45465 0x101601120 INFO GST_STATES gstelement.c:2236:gst_element_continue_state:<convert> completed state change to PAUSED
0:00:14.537433000 45465 0x101601120 INFO GST_STATES gstelement.c:2249:gst_element_continue_state:<convert> posting state-changed READY to PAUSED
0:00:14.537442000 45465 0x101601120 INFO GST_STATES gstbin.c:2443:gst_bin_change_state_func:<pipeline0> child 'convert' changed state to 3(PAUSED) successfully
0:00:14.537472000 45465 0x101601120 INFO GST_EVENT gstevent.c:605:gst_event_new_new_segment_full: creating newsegment update 0, rate 1.000000, format bytes, start 0, stop -1, position 0
0:00:14.537538000 45465 0x101601120 INFO GST_STATES gstelement.c:2236:gst_element_continue_state:<appsrc> completed state change to PAUSED
0:00:14.537551000 45465 0x101601120 INFO GST_STATES gstelement.c:2249:gst_element_continue_state:<appsrc> posting state-changed READY to PAUSED
0:00:14.537562000 45465 0x101601120 INFO GST_STATES gstbin.c:2443:gst_bin_change_state_func:<pipeline0> child 'appsrc' changed state to 3(PAUSED) successfully
DEBUG 2010-10-22 00:29:56,483 [45465:GStreamerPlayerThread] mopidy.outputs.gstreamer
Setting GStreamer state to PLAYING: OK
DEBUG 2010-10-22 00:29:56,484 [45465:MpdThread] mopidy.frontends.mpd.session
Output to [::ffff:10.37.3.10]:51313: OK
DEBUG 2010-10-22 00:29:56,485 [45465:LastfmFrontendThread] mopidy.frontends.lastfm
Now playing track: James Brown - The Boss
0:00:14.651679000 45465 0x101601120 INFO GST_PARENTAGE gstbin.c:3623:gst_bin_get_by_name: [pipeline0]: looking up child element appsrc
0:00:14.651748000 45465 0x101601120 INFO pygst gstbuffer.override:50:_wrap_gst_buffer_new: self:0x1048cc170
0:00:14.651773000 45465 0x101601120 INFO pygst gstbuffer.override:69:_wrap_gst_buffer_new: pyo:0x1048cc170 pyr:1 minio:0x100918630 minir:1
0:00:14.652334000 45465 0x1044461b0 WARN basetransform gstbasetransform.c:1065:gst_base_transform_acceptcaps_default:<volume> transform could not transform 0x10098aa40 in anything we support
0:00:14.652473000 45465 0x1044461b0 INFO audioconvert audioconvert.c:520:audio_convert_prepare_context: use int mixing
0:00:14.652485000 45465 0x1044461b0 INFO audioconvert audioconvert.c:526:audio_convert_prepare_context: unitsizes: 4 -> 8
0:00:14.652492000 45465 0x1044461b0 INFO audioconvert audioconvert.c:536:audio_convert_prepare_context: in default 0, mix passthrough 1, out default 0
0:00:14.652509000 45465 0x1044461b0 INFO audioconvert gstaudioconvert.c:373:gst_audio_convert_get_unit_size:<convert> unit_size = 4
0:00:14.652519000 45465 0x1044461b0 INFO audioconvert gstaudioconvert.c:373:gst_audio_convert_get_unit_size:<convert> unit_size = 8
0:00:14.652518000 45465 0x101601120 INFO GST_PARENTAGE gstbin.c:3623:gst_bin_get_by_name: [pipeline0]: looking up child element appsrc
0:00:14.652549000 45465 0x101601120 INFO pygst gstbuffer.override:50:_wrap_gst_buffer_new: self:0x1048cc030
0:00:14.652562000 45465 0x101601120 INFO pygst gstbuffer.override:69:_wrap_gst_buffer_new: pyo:0x1048cc030 pyr:1 minio:0x1009186b0 minir:1
0:00:14.652942000 45465 0x101601120 INFO GST_PARENTAGE gstbin.c:3623:gst_bin_get_by_name: [pipeline0]: looking up child element appsrc
0:00:14.652980000 45465 0x101601120 INFO pygst gstbuffer.override:50:_wrap_gst_buffer_new: self:0x1048cc170
0:00:14.652992000 45465 0x101601120 INFO pygst gstbuffer.override:69:_wrap_gst_buffer_new: pyo:0x1048cc170 pyr:1 minio:0x100918730 minir:1
Segmentation fault
Despotify/spytify segfaults when looking up playlists, both your own lists and other peoples shared lists. To reproduce:
>>> import spytify
>>> s = spytify.Spytify('alice', 'secret')
>>> s.lookup('spotify:user:klette:playlist:5rOGYPwwKqbAcVX8bW4k5V')
...
Segmentation fault
This is confirmed to still be a problem with Despotify r508.
Some MPD clients support autodetection of MPD servers through the use of Zeroconf.
To connect to the open source Avahi implemenation of Zeroconf, we need to add python-dbus as a dependency. python-dbus is also required for the MPRIS frontend. An example in Python showing how to publish a service for automatic discovery through Avahi can be found at http://avahi.org/wiki/PythonPublishExample
Currently, the search capabilities in the local backend is quite naive and simplistic. It would be nice to have more powerful search capabilities, maybe using an existing search solution.
An existing search solutions that seems interesting is Whoosh which is a pure Python search engine, available under the Apache 2 license, both from PyPI and as a Debian package.
This has been reported upstream at http://code.google.com/p/pylast/issues/detail?id=55
After Mopidy has idled for a day or so, I get the following warning when trying to scrobble new tracks:
WARNING Last.fm scrobbling error: Bad session id, consider re-handshaking
We should catch this exception and renew our Last.fm session.
When connecting the Ario MPD client to Mopidy, it reconnects all the time.
Ario issues an MPD request like this:
list Artist Artist "anartistname1" Artist "anartistname1"
This is a format we haven't seen before, and don't support. I'm not entirely sure of the intended semantics of repeating Arist "anartistname1"
twice either.
This is a candidate for a 0.1.1 bugfix release.
Both when using the OS X-bundled Python 2.6 and Homebrew's Python 2.7 I get the following error:
DEBUG 2010-08-14 13:15:11,782 [28425:MainThread] mopidy.frontends.mpd.server
Input from [::ffff:10.37.3.10]:55068: playid "-1"
DEBUG 2010-08-14 13:15:11,782 [28426:MainThread] mopidy.backends.libspotify.playback
Setting output state to READY ...
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
Mopidy version: jodal/mopidy@da2a44f
Pyspotify version: jodal/pyspotify@e0a5fea
Libspotify version: 0.0.4
Python versions: 2.6.1 from OS X and 2.7.0 from Homebrew
This problem seems similar to http://github.com/ask/celery/issues/issue/146.
Hi,
Do you plan implementing IDLE command in mpd frontend? Most of MPD clients use it. IMHO this is the only way for clients to update state smoothly.
Thanks
As of the April 2010 releases of Spotify they support "automatic track replacement":
Automatic track replacement: Spotify will now automatically try to find a replacement for any track you can’t play. So if a friend in another country sends you a playlist with tracks you can’t play or a local file, we’ll search our catalogue and link to a playable track when possible. A ‘link’ icon next to the track name represents replaced tracks.
Currently, Mopidy cannot play these tracks and just prints e.g.:
WARNING Play spotify:track:6R81HhHxetvaWqQoM9K4Ll failed: The track cannot be played
As far as I can see from the API docs, libspotify can tell us that this is a autolinked to another track: http://developer.spotify.com/en/libspotify/docs/group__track.html#g4eeb86de13187697cd9dfe0b0934988d
Experienced by xt at #mopidy:
(mopidy:14158): GStreamer-CRITICAL **: gst_caps_ref: assertion `GST_CAPS_REFCOUNT_VALUE (caps) > 0' failed
(mopidy:14158): GStreamer-CRITICAL **: gst_caps_is_fixed: assertion `GST_IS_CAPS (caps)' failed
(mopidy:14158): GStreamer-CRITICAL **: gst_pad_set_caps: assertion `caps == NULL || gst_caps_is_fixed (caps)' failed
(mopidy:14158): GStreamer-CRITICAL **: gst_caps_unref: assertion `GST_CAPS_REFCOUNT_VALUE (caps) > 0' failed
ERROR 2010-08-24 09:02:54,365 [14158:Thread-1] mopidy.outputs.gstreamer
GStreamer encountered a general stream error. gstbasesrc.c(2507): gst_base_src_loop (): /GstPipeline:pipeline0/GstAppSrc:src:
streaming task paused, reason not-negotiated (-4)
And by myself:
(mopidy:6655): GStreamer-CRITICAL **: gst_caps_is_fixed: assertion `GST_IS_CAPS (caps)' failed
(mopidy:6655): GStreamer-CRITICAL **: gst_pad_set_caps: assertion `caps == NULL || gst_caps_is_fixed (caps)' failed
(mopidy:6655): GStreamer-CRITICAL **: gst_caps_unref: assertion `GST_CAPS_REFCOUNT_VALUE (caps) > 0' failed
ERROR GStreamer encountered a general stream error. gstbasesrc.c(2507): gst_base_src_loop (): /GstPipeline:pipeline0/GstAppSrc:src:
streaming task paused, reason not-negotiated (-4)
It would be nice to be able to manage Spotify playlists through Mopidy. E.g. create/rename/remove playlists, and add/move/remove tracks in playlists.
Hi,
I tried to access Mopidy trough the RelaXXPlayer client (http://relaxx.dirk-hoeschen.de/) unfortunatly it responds with:
Error
Could not connect to mpd-deamon.
Please check for HOST,PORT and PASSWORD in configuration and press F5.
Mopidy says:
MPD client connection from [127.0.0.1]:34906
DEBUG 2010-06-01 13:26:34,933 [24236:MainThread] mopidy.mpd.server
Output: OK MPD 0.16.0
DEBUG 2010-06-01 13:26:34,934 [24236:MainThread] mopidy.mpd.server
Input: commands
DEBUG 2010-06-01 13:26:34,935 [24236:MainThread] mopidy.mpd.server
Output: OK
Could someone help me out?
Kind Regards, Marcus
Last.fm has just released an updated version of their scrobbling API, version 2.0. Mopidy should be upgraded to use the new API.
See http://www.last.fm/api/scrobbling for details.
It would be nice to have support for the Norwegian music streaming service, WiMP. They currently have no public API or library, unlike Spotify, but according to tweets from their official Twitter account they do have private APIs that it is possible to gain access to.
I guess they won't like their private APIs to be used in an open source project, but maybe we could get access and develop the backend as closed source, only to publish it once they make their API public?
User description:
09:46:03 < xt> can't reproduce, but basic steps was 'add playlist,
turn on shuffle, add some more tracks, turn off shuffle,
press next a couple of times only to observe I was getting
the same some over and over'
09:46:18 < xt> *same song
This is a candidate for a 0.1.1 bugfix release.
One could add a frontend exposing Mopidy's core API over HTTP as a RESTful web service and/or WebSocket. As a bonus/proof-of-concept, we could bundle a JavaScript web client with the web service interface, e.g. created using jQuery Mobile.
Some initial work exists in the feature/http-frontend
branch, which starts a Tornado web server as a frontend thread, and answers 'Hello, world!' upon requests.
Just as with the MPRIS frontend (see #50), this frontend depends one some nice way of accessing the backend controller API from a frontend thread.
The local backend could possibly benefit from having an alternative to the tag cache file for caching track meta data. A suggestion is using Sqlite.
We would like to have some means of comparing Mopidy's MPD server with the original MPD server. For example by running the same test suite against both implementations and compare the results.
Some work on this have been done in the feature/blackbox-testing
branch.
addid ""
crashes with SpotifyError from backend.library.lookup()
. This should be avoided both by validation code in the MPD frontend code and by validation/try-except in LibspotifyLibraryController
.
When I, using the latest Mopidy develop and ncmpc, opened a library directory, I got the following crash:
ERROR find_exact() keywords must be strings
Traceback (most recent call last):
File "/Users/jodal/dev/mopidy/mopidy/utils/process.py", line 25, in run
self.run_inside_try()
File "/Users/jodal/dev/mopidy/mopidy/core.py", line 43, in run_inside_try
self.process_message(message)
File "/Users/jodal/dev/mopidy/mopidy/core.py", line 86, in process_message
frontend.process_message(message)
File "/Users/jodal/dev/mopidy/mopidy/frontends/mpd/__init__.py", line 44, in process_message
response = self.dispatcher.handle_request(message['request'])
File "/Users/jodal/dev/mopidy/mopidy/frontends/mpd/dispatcher.py", line 30, in handle_request
result = handler(self, **kwargs)
File "/Users/jodal/dev/mopidy/mopidy/frontends/mpd/protocol/music_db.py", line 176, in list_
return _list_album(frontend, query)
File "/Users/jodal/dev/mopidy/mopidy/frontends/mpd/protocol/music_db.py", line 221, in _list_album
playlist = frontend.backend.library.find_exact(**query)
TypeError: find_exact() keywords must be strings
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/runpy.py", line 121, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/runpy.py", line 34, in _run_code
exec code in run_globals
File "/Users/jodal/dev/mopidy/mopidy/__main__.py", line 17, in <module>
main()
File "/Users/jodal/dev/mopidy/mopidy/__main__.py", line 14, in main
CoreProcess().run()
File "/Users/jodal/dev/mopidy/mopidy/utils/process.py", line 37, in run
raise e
TypeError: find_exact() keywords must be strings
It would be nice to have virtual directories in the library that does not reflect directories on some file system, but exposes various collections of tracks from the backends. Examples include:
Possibly, each backend should be given its own top level namespace it could expose virtual directories within.
Reported by xt at #mopidy.
Traceback:
ERROR 2010-08-24 09:15:00,465 [14157:MainThread] mopidy.utils.process
Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/mopidy/utils/process.py", line 24, in run
self.run_inside_try()
File "/usr/local/lib/python2.6/dist-packages/mopidy/core.py", line 44, in run_inside_try
self.process_message(message)
File "/usr/local/lib/python2.6/dist-packages/mopidy/core.py", line 82, in process_message
frontend.process_message(message)
File "/usr/local/lib/python2.6/dist-packages/mopidy/frontends/mpd/__init__.py", line 44, in process_message
response = self.dispatcher.handle_request(message['request'])
File "/usr/local/lib/python2.6/dist-packages/mopidy/frontends/mpd/dispatcher.py", line 30, in handle_request
result = handler(self, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/mopidy/frontends/mpd/protocol/playback.py", line 89, in next_
return frontend.backend.playback.next()
File "/usr/local/lib/python2.6/dist-packages/mopidy/backends/base/playback.py", line 357, in next
self.play(self.cp_track_at_next)
File "/usr/local/lib/python2.6/dist-packages/mopidy/backends/base/playback.py", line 393, in play
assert cp_track in self.backend.current_playlist.cp_tracks
AssertionError
Traceback (most recent call last):
File "/usr/local/bin/mopidy", line 5, in <module>
main()
File "/usr/local/lib/python2.6/dist-packages/mopidy/__main__.py", line 14, in main
CoreProcess().run()
File "/usr/local/lib/python2.6/dist-packages/mopidy/utils/process.py", line 36, in run
raise e
AssertionError
It would be nice if Mopidy supported Last.fm radio streaming, e.g. through MPD commands like this:
add "lastfm://globaltags/Ambient"
This is already supported by the MPoD client.
It would be nice to support password authenticate in the MPD frontend since users may want to run Mopidy on public IPs or private networks with untrusted users. This is especially important when we add support for editing playlists, and also when the use of IPv6 increases and most installations will be publicly available unless firewalled.
Some initial work on this is available in the feature/mpd-password
branch.
got thise messages in the server:
WARNING Play spotify:track:4gZ4zzYrPp7y0gtxuKDSGC failed: The track cannot be played
WARNING Play spotify:track:1V9X7CgeCY5dh6JPYPuo4k failed: The track cannot be played
WARNING Play spotify:track:0ABR73lSYqrHLh1eX5CffD failed: The track cannot be played
ERROR 'NoneType' object has no attribute 'artists'
Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/mopidy/utils/process.py", line 50, in run
self.run_inside_try()
File "/usr/local/lib/python2.6/dist-packages/mopidy/frontends/lastfm.py", line 75, in run_inside_try
self.process_message(message)
File "/usr/local/lib/python2.6/dist-packages/mopidy/frontends/lastfm.py", line 94, in process_message
self.started_playing(message['track'])
File "/usr/local/lib/python2.6/dist-packages/mopidy/frontends/lastfm.py", line 101, in started_playing
artists = ', '.join([a.name for a in track.artists])
AttributeError: 'NoneType' object has no attribute 'artists'
Exception in thread LastfmFrontendThread:
Traceback (most recent call last):
File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner
self.run()
File "/usr/local/lib/python2.6/dist-packages/mopidy/utils/process.py", line 62, in run
raise e
AttributeError: 'NoneType' object has no attribute 'artists'
at the same time, the ncmpcpp lost connection
ncmpcpp is not rununning on the same machine as mopidy
mopidy is running on port 6601
another mpd is running on 6600
Have several times lost connection from client machine to mopidy server
On a machine where mopidy is the only mpd server, there has been no trouble at all.
Using mpd clients like Sonata, GMPC, ncmpd, and possibly others with Mopidy, the search function does not give good results (if any). This is caused by the implementation of the mpd search in MPD clients.
For instance in Sonata, the client make an mpd search request on the two first letter of the search terms and filter the resulting data to list only relevant result. Since spotify only returns about 100 results in search request, the client is unlikely to successfully filter the search results.
This is not a Mopidy bug but I hope that making it an issue will help people realize what is wrong with their settings.
We would like to make Mopidy controllable through the Ubuntu Sound Menu by implementing a MPRIS interface to Mopidy over D-Bus. This requires the addition of python-dbus as an optional dependency.
Work on a MPRIS frontend can be found in the feature/mpris-frontend
branch. It has come quite far, and currently registration with the Ubuntu Sound Menu is working. The remaining part is implementing a way to call the backend controller API from a frontend thread without implementing a gazillion new message types. Pykka may be a solution for this.
Ubuntu 9.10 Server
mopidy version: 0.1.0a0
Backend: Despotify r507
ncmpcpp version: 0.3.4
built with support for: curl taglib unicode
It does not work. It can be set in the client but the server ignores it.
Ubuntu 9.10 Server
mopidy version: 0.1.0a0
Backend: Despotify r507
ncmpcpp version: 0.3.4
built with support for: curl taglib unicode
I recently added a collaborative playlist to my playlists, when i try to to load it ncmpcpp starts playing the first track but there is no sound. If I then load another playlist ncmpcpp somtimes crashes with the message:
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check
And the other times it begins playing the new playlist but no sound.
Also, the tracks that I have added to the playlist (Using the official client) shows up as "spotify:track:0000000000000000000000" in the playlist view.
Note that all the tracks that were added by others shows up just fine.
During normal usage, ncmpcpp 0.5.x (0.5.2 at least) will suddenly display a "Password:" prompt to the user. ncmpcpp must be restarted to get rid of it. I haven't seen anything special happening in Mopidy related to this.
Yesterday I got this behaviour after less than 10 minutes of usage. Today I've used ncmpcpp for about seven hours without it.
This has been observed by at least three users.
If we can find a solution to this, it is a candidate for a 0.1.1 bugfix release.
After the upgrade from Ubuntu 10.04 to 10.10, I get no sound using Mopidy's latest develop snapshot.
I also see new errors in the Mopidy output, which points to GStreamer being the problem:
jodal@kih:~/dev/mopidy:develop$ python mopidy
INFO -- Starting Mopidy --
** Message: pygobject_register_sinkfunc is deprecated (GstObject)
INFO Mopidy uses SPOTIFY(R) CORE
INFO MPD server running at [::]:6600
INFO Connected to Last.fm
INFO Connected to Spotify
INFO MPD client connection from [::ffff:127.0.0.1]:41369
INFO MPD client connection from [::ffff:127.0.0.1]:41376
ERROR Element doesn't implement handling of this stream. Please file a bug. gstbasetransform.c(2073): gst_base_transform_handle_buffer (): /GstPipeline:pipeline0/GstAudioConvert:convert:
not negotiated
When I try to add a playlist to the playque this is what is seen on the mopidy server:
INFO MPD client connection from [::ffff:127.0.0.1]:35735
INFO MPD client connection from [::ffff:127.0.0.1]:35737
INFO MPD client connection from [::ffff:127.0.0.1]:35739
INFO MPD client connection from [::ffff:127.0.0.1]:35741
INFO MPD client connection from [::ffff:127.0.0.1]:35743
INFO MPD client connection from [::ffff:127.0.0.1]:35745
INFO MPD client connection from [::ffff:127.0.0.1]:35747
INFO MPD client connection from [::ffff:127.0.0.1]:35749
INFO MPD client connection from [::ffff:127.0.0.1]:35751
INFO MPD client connection from [::ffff:127.0.0.1]:35753
INFO MPD client connection from [::ffff:127.0.0.1]:35755
INFO MPD client connection from [::ffff:127.0.0.1]:35757
INFO MPD client connection from [::ffff:127.0.0.1]:35759
INFO MPD client connection from [::ffff:127.0.0.1]:35761
INFO MPD client connection from [::ffff:127.0.0.1]:35763
And nothing more happens on the ncmpcc client.
Mopidy works. Connects to the Spotify service and shows my playlists etc.
However playback sounds very chopyy. As if the stream isn't buffering enough. Regular sound plays without problems and internet connection is ok. The proprietary spotify client plays the stream without problems.
I'm running mopidy on CentOS 5.4 with Python 2.6.1 (r261:67515)
Wes
Using Mopidy 4e29754 and Despotify/spytify r508. At the end of a track, after having listened to a couple of tracks, Mopidy's core process (pid 28016 below) no longer responds upon requests from the MPD server process (pid 28015 below).
DEBUG 2010-06-24 20:56:03,647 [28016:Dummy-1] mopidy.backends.despotify
Despotify signalled end of playlist
DEBUG 2010-06-24 20:56:04,049 [28015:MainThread] mopidy.mpd.server
Input from [::ffff:127.0.0.1]:48995: status
... no response ...
Core process is waiting on something:
jodal@kih:~$ strace -p 28016
Process 28016 attached - interrupt to quit
futex(0x290a0a0, FUTEX_WAIT_PRIVATE, 2, NULL
The MPD server process is still living and accepting connections, but won't answer any requests as it is reusing the locked up core process.
It would be nice to be able to mix music from different backends, e.g. Spotify and local disk, in the current playlist. The library and search results should also include tracks from all backends.
Current work on this is in the features/multi-backend
branch. There are largely two separate parts of work that needs to be done:
These two issues just caused me a tortuous hour trying to install Mopidy. The both seem to be fixed in the develop docs, but master (which is your primary link on the homepage) is deeply unhelpful.
Finally, now I have it built and running and connected to my Spotify Premium, all I see in MPoD on the iPhone are blank screens. Nothing in artists, albums or songs, and nothing in playlists. Plus, no response to searches. What am I missing?
So I'm just trying to send some basic commands to Mopidy on the command line. I'm using ruby as that's what I know & is the language my MPD client is built in.
~$ irb
>> s =TCPSocket.new("localhost", 6600)
=> #<TCPSocket:0x100e76c>
>> s.gets
=> "OK MPD 0.16.0\n"
>> s.puts("addid \"spotify:track:6Gq52E0FY2RV6XKh1hBIE0\"")
=> nil
>> s.gets
As soon as I run s.gets
a dialogue box pops up saying: "Python quit unexpectedly while using the spytify.so plug-in "
Here's some of the output...
Process: Python [8934]
Path: /System/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python
Identifier: Python
Version: ??? (???)
Code Type: X86 (Native)
Parent Process: Python [8932]
PlugIn Path: /Library/Python/2.6/site-packages/spytify.so
PlugIn Identifier: spytify.so
PlugIn Version: ??? (???)
Date/Time: 2010-06-09 20:48:18.434 +0100
OS Version: Mac OS X 10.6.3 (10D578)
Report Version: 6
Interval Since Last Report: 21489 sec
Crashes Since Last Report: 17
Per-App Crashes Since Last Report: 17
Anonymous UUID: 591AB590-E290-423B-8222-F842054D1BFB
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Application Specific Information:
__abort() called
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libSystem.B.dylib 0x94f1e132 __kill + 10
1 libSystem.B.dylib 0x94f1e124 kill$UNIX2003 + 32
2 libSystem.B.dylib 0x94fb08e5 raise + 26
3 libSystem.B.dylib 0x94fc6931 __abort + 124
4 libSystem.B.dylib 0x94fa9674 release_file_streams_for_task + 0
5 spytify.so 0x007cc6f2 __pyx_pf_7spytify_7Spytify_lookup + 4534 (spytify.c:8179)
6 org.python.python 0x00096206 PyEval_EvalFrameEx + 15995
7 org.python.python 0x000964e5 PyEval_EvalFrameEx + 16730
8 org.python.python 0x00097f74 PyEval_EvalCodeEx + 1720
9 org.python.python 0x00039d9f PyClassMethod_New + 1714
10 org.python.python 0x000176e0 PyObject_Call + 101
11 org.python.python 0x00097843 PyEval_EvalFrameEx + 21688
12 org.python.python 0x00097f74 PyEval_EvalCodeEx + 1720
13 org.python.python 0x000965a1 PyEval_EvalFrameEx + 16918
14 org.python.python 0x000964e5 PyEval_EvalFrameEx + 16730
15 org.python.python 0x000964e5 PyEval_EvalFrameEx + 16730
16 org.python.python 0x000964e5 PyEval_EvalFrameEx + 16730
17 org.python.python 0x000964e5 PyEval_EvalFrameEx + 16730
18 org.python.python 0x00097f74 PyEval_EvalCodeEx + 1720
19 org.python.python 0x00039e0c PyClassMethod_New + 1823
20 org.python.python 0x000176e0 PyObject_Call + 101
21 org.python.python 0x0002710d PyClass_New + 1603
22 org.python.python 0x000176e0 PyObject_Call + 101
23 org.python.python 0x0005ed8a _PyType_Lookup + 5617
24 org.python.python 0x00060bc1 PyType_GenericAlloc + 3133
25 org.python.python 0x000176e0 PyObject_Call + 101
26 org.python.python 0x00097812 PyEval_EvalFrameEx + 21639
27 org.python.python 0x000964e5 PyEval_EvalFrameEx + 16730
28 org.python.python 0x000964e5 PyEval_EvalFrameEx + 16730
29 org.python.python 0x00097f74 PyEval_EvalCodeEx + 1720
30 org.python.python 0x00098019 PyEval_EvalCode + 87
31 org.python.python 0x000af0af Py_CompileString + 111
32 org.python.python 0x000af15b PyRun_FileExFlags + 139
33 org.python.python 0x000b0e7e PyRun_SimpleFileExFlags + 814
34 org.python.python 0x000be15c Py_Main + 3074
35 org.python.python.app 0x00001eb5 start + 53
Thread 1:
0 libSystem.B.dylib 0x94efa572 recvfrom$UNIX2003 + 10
1 libSystem.B.dylib 0x94f1a383 recv$UNIX2003 + 54
2 libdespotify.0.dylib 0x0109ee7e block_read + 60
3 libdespotify.0.dylib 0x0109bca1 packet_read + 42
4 libdespotify.0.dylib 0x0109eff8 despotify_thread + 46
5 libSystem.B.dylib 0x94eeaa19 _pthread_start + 345
6 libSystem.B.dylib 0x94eea89e thread_start + 34
Thread 2: Dispatch queue: com.apple.libdispatch-manager
0 libSystem.B.dylib 0x94ee3b42 kevent + 10
1 libSystem.B.dylib 0x94ee425c _dispatch_mgr_invoke + 215
2 libSystem.B.dylib 0x94ee3719 _dispatch_queue_invoke + 163
3 libSystem.B.dylib 0x94ee34be _dispatch_worker_thread2 + 240
4 libSystem.B.dylib 0x94ee2f41 _pthread_wqthread + 390
5 libSystem.B.dylib 0x94ee2d86 start_wqthread + 30
Thread 3:
0 libSystem.B.dylib 0x94ebd2fa mach_msg_trap + 10
1 libSystem.B.dylib 0x94ebda67 mach_msg + 68
2 ....audio_hijack_server.hermes 0x014159b2 ah_serv_loop + 132
3 libSystem.B.dylib 0x94eeaa19 _pthread_start + 345
4 libSystem.B.dylib 0x94eea89e thread_start + 34
Thread 4:
0 libSystem.B.dylib 0x94eeb262 __semwait_signal + 10
1 libSystem.B.dylib 0x94eeaf1e _pthread_cond_wait + 1191
2 libSystem.B.dylib 0x94eecbb8 pthread_cond_wait$UNIX2003 + 73
3 spytify.so 0x007c1379 thread_loop + 133 (audio_thread.c:31)
4 libSystem.B.dylib 0x94eeaa19 _pthread_start + 345
5 libSystem.B.dylib 0x94eea89e thread_start + 34
Thread 0 crashed with X86 Thread State (32-bit):
eax: 0x00000000 ebx: 0x94fc68c1 ecx: 0xbfffcc8c edx: 0x94f1e132
edi: 0x000f8c90 esi: 0x0041d848 ebp: 0xbfffcca8 esp: 0xbfffcc8c
ss: 0x0000001f efl: 0x00000286 eip: 0x94f1e132 cs: 0x00000007
ds: 0x0000001f es: 0x0000001f fs: 0x00000000 gs: 0x00000037
cr2: 0xffe2a5c8
Process CoreProcess-1:
Traceback (most recent call last):
File "/usr/lib/python2.6/multiprocessing/process.py", line 232, in _bootstrap
self.run()
File "/home/johannes/dev/workspaces/mopidy/mopidy/mopidy/process.py", line 13, in run
self._run()
File "/home/johannes/dev/workspaces/mopidy/mopidy/mopidy/process.py", line 36, in _run
self._process_message(message)
File "/home/johannes/dev/workspaces/mopidy/mopidy/mopidy/process.py", line 45, in _process_message
response = self._frontend.handle_request(message['request'])
File "/home/johannes/dev/workspaces/mopidy/mopidy/mopidy/mpd/frontend.py", line 69, in handle_request
result = handler(self, **kwargs)
File "/home/johannes/dev/workspaces/mopidy/mopidy/mopidy/mpd/frontend.py", line 903, in _playback_playid
return self.backend.playback.play(track)
File "/home/johannes/dev/workspaces/mopidy/mopidy/mopidy/backends/__init__.py", line 564, in play
elif track is not None and self._play(track):
File "/home/johannes/dev/workspaces/mopidy/mopidy/mopidy/backends/despotify.py", line 83, in _play
self.backend.spotify.play(self.backend.spotify.lookup(track.uri))
File "spytify.pyx", line 149, in spytify.Spytify.play (src/spytify.c:8534)
SpytifyError: Timeout while browsing track(s)
Ubuntu 9.10 Server
mopidy version: 0.1.0a0
Backend: Despotify r507
ncmpcpp version: 0.3.4
built with support for: curl taglib unicode
It does not work. It can be set in the client but the server ignores it.
This may not be an issue with Mopidy, but more likely with my installation?
I am running Voyage MPD Linux on an Alix board. I am trying to get audio through a connected USB DAC.
When working with normal mpd, I use alsa as audio output and this works:
audio_output {
type "alsa"
device "hw:0,0"
}
What are the settings I need to make Mopidy work?
see the error messages below:
INFO -- Starting Mopidy --
INFO Mopidy uses SPOTIFY(R) CORE
INFO Disabled: mopidy.frontends.lastfm.LastfmFrontend (No module named pylast)
INFO MPD server running at [::]:6600
INFO MPD client connection from [::ffff:192.168.1.214]:54659
INFO Connected to Spotify
ERROR Could not open resource for writing. oss4-sink.c(515): gst_oss4_sink_open (): /GstOss4Sink:autoaudiosink0-actual-sink-oss4:
system error: No such file or directory
WARNING Setting GStreamer state to READY: failed
ERROR Could not initialize supporting library. gstautoaudiosink.c(370): gst_auto_audio_sink_detect (): /GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0:
Failed to find a supported audio sink
ERROR Could not open resource for writing. oss4-sink.c(515): gst_oss4_sink_open (): /GstOss4Sink:autoaudiosink0-actual-sink-oss4:
system error: No such file or directory
WARNING Setting GStreamer state to PLAYING: failed
ERROR Could not initialize supporting library. gstautoaudiosink.c(370): gst_auto_audio_sink_detect (): /GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0:
Failed to find a supported audio sink
INFO 2010-07-04 23:42:50,913 [5795:MainThread] mopidy.mpd.server
MPD client connection from [::ffff:192.168.1.105]:49926
Process CoreProcess-1:
Traceback (most recent call last):
File "/usr/lib/python2.6/multiprocessing/process.py", line 232, in _bootstrap
self.run()
File "/usr/local/lib/python2.6/dist-packages/mopidy/process.py", line 13, in run
self._run()
File "/usr/local/lib/python2.6/dist-packages/mopidy/process.py", line 33, in _run
self._setup()
File "/usr/local/lib/python2.6/dist-packages/mopidy/process.py", line 40, in _setup
core_queue=self.core_queue)
File "/usr/local/lib/python2.6/dist-packages/mopidy/backends/despotify.py", line 31, in __init__
super(DespotifyBackend, self).__init__(*args, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/mopidy/backends/__init__.py", line 32, in __init__
self.mixer = get_class(settings.MIXER)()
File "/usr/local/lib/python2.6/dist-packages/mopidy/mixers/alsa.py", line 17, in __init__
self._mixer = alsaaudio.Mixer(self._get_mixer_control())
File "/usr/local/lib/python2.6/dist-packages/mopidy/mixers/alsa.py", line 24, in _get_mixer_control
if control in alsaaudio.mixers():
ALSAAudioError: No such file or directory
When using the despotify backend and having a large number of playlists (around 200) it seems as if not all playlists are being loaded. Mopidy shows them to front-end clients as a list without a title (ie. "")
When using libspotify as backend those titles show up as "loading..." and after a couple of seconds they are loaded in and fully available. despotify doesn't seem to load in those extra playlists.
Using: Mopidy 0.1.0a3
To reproduce:
Expected behaviour: the tracks should continue to be played in random order
Given that we fix our broken support for OS X (see #25), it would be nice if we could simplify the installation procedure.
Mopidy itself and some dependencies may easily be installed from PyPI using pip. Though we need to have some way of easily installing GStreamer's Python bindings, preferably using Homebrew.
We've already done some work on this, and got GStreamer packaged and included in Homebrew. Though, getting the Python bindings included is still pending. See Homebrew/legacy-homebrew#1612 for some history and Python binding formulas which may be used as a starting point for up-to-date and functional Homebrew formulas.
Other suggestions for making the OS X installation easier are also welcome.
This is mainly an MPC issue as I can't see why this call is needed, however as long as mopidy does not support listall adding songs with MPC fails. Adding a NOP implementation of listall "solves" this issue. Furthermore commenting out the two relevant lines in MPC also solves this issue.
During normal playback both myself and another user has experienced an infinite recursion loop in play/next upon end of track. This probably got to do with the "skip-to-next-track-upon-error" code.
Traceback:
... lots of WARNINGs like this ...
WARNING Play spotify:track:2AVcyZ66hKKKkkFz58Hyhd failed: The track cannot be played
WARNING Play spotify:track:2AVcyZ66hKKKkkFz58Hyhd failed: The track cannot be played
WARNING Play spotify:track:2AVcyZ66hKKKkkFz58Hyhd failed: The track cannot be played
WARNING Play spotify:track:2AVcyZ66hKKKkkFz58Hyhd failed: The track cannot be played
ERROR maximum recursion depth exceeded
Traceback (most recent call last):
File "/home/jodal/dev/mopidy/mopidy/utils/process.py", line 24, in run
self.run_inside_try()
File "/home/jodal/dev/mopidy/mopidy/core.py", line 43, in run_inside_try
self.process_message(message)
File "/home/jodal/dev/mopidy/mopidy/core.py", line 88, in process_message
self.backend.playback.on_end_of_track()
File "/home/jodal/dev/mopidy/mopidy/backends/base/playback.py", line 317, in on_end_of_track
self.play(self.cp_track_at_eot)
File "/home/jodal/dev/mopidy/mopidy/backends/base/playback.py", line 398, in play
self.next()
File "/home/jodal/dev/mopidy/mopidy/backends/base/playback.py", line 351, in next
self.play(self.cp_track_at_next)
File "/home/jodal/dev/mopidy/mopidy/backends/base/playback.py", line 398, in play
self.next()
... lots of play() and next() calls ...
This is a candidate for a 0.1.1 bugfix release.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.