{"action":"opened","issue":{"url":"https://api.github.com/repos/rattboi/mopidy-subsonic/issues/14","labels_url":"https://api.github.com/repos/rattboi/mopidy-subsonic/issues/14/labels{/name}","comments_url":"https://api.github.com/repos/rattboi/mopidy-subsonic/issues/14/comments","events_url":"https://api.github.com/repos/rattboi/mopidy-subsonic/issues/14/events","html_url":"https://github.com/rattboi/mopidy-subsonic/issues/14","id":97974611,"number":14,"title":"Extension crashes in get_user_playlists with 404 error","user":{"login":"Dhar","id":235769,"avatar_url":"https://avatars.githubusercontent.com/u/235769?v=3","gravatar_id":"","url":"https://api.github.com/users/Dhar","html_url":"https://github.com/Dhar","followers_url":"https://api.github.com/users/Dhar/followers","following_url":"https://api.github.com/users/Dhar/following{/other_user}","gists_url":"https://api.github.com/users/Dhar/gists{/gist_id}","starred_url":"https://api.github.com/users/Dhar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Dhar/subscriptions","organizations_url":"https://api.github.com/users/Dhar/orgs","repos_url":"https://api.github.com/users/Dhar/repos","events_url":"https://api.github.com/users/Dhar/events{/privacy}","received_events_url":"https://api.github.com/users/Dhar/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-07-29T16:26:33Z","updated_at":"2015-07-29T16:26:33Z","closed_at":null,"body":"During startup, the extension crashes with the following error:\r\n\r\n```\r\n2015-07-29 09:15:01,718 INFO [18096:MainThread] mopidy_subsonic.client: Connecting to Subsonic library http://xxx.xxx.com:4040 as user xxx\r\n2015-07-29 09:15:01,937 ERROR [18096:MainThread] mopidy.commands: Uncaught exception\r\nTraceback (most recent call last):\r\n  File \"/usr/local/lib/python2.7/dist-packages/mopidy/commands.py\", line 274, in run\r\n    backends = self.start_backends(config, backend_classes, audio)\r\n  File \"/usr/local/lib/python2.7/dist-packages/mopidy/commands.py\", line 352, in start_backends\r\n    config=config, audio=audio).proxy()\r\n  File \"/usr/lib/python2.7/dist-packages/pykka/actor.py\", line 93, in start\r\n    obj = cls(*args, **kwargs)\r\n  File \"/usr/local/lib/python2.7/dist-packages/mopidy_subsonic/actor.py\", line 32, in __init__\r\n    self.playlists = SubsonicPlaylistsProvider(backend=self)\r\n  File \"/usr/local/lib/python2.7/dist-packages/mopidy_subsonic/playlist.py\", line 15, in __init__\r\n    self.playlists = self._get_playlists()\r\n  File \"/usr/local/lib/python2.7/dist-packages/mopidy_subsonic/playlist.py\", line 36, in _get_playlists\r\n    playlists = self.remote.get_user_playlists()\r\n  File \"/usr/local/lib/python2.7/dist-packages/mopidy_subsonic/client.py\", line 365, in get_user_playlists\r\n    results = self.api.getPlaylists().get('playlists')\r\n  File \"/usr/local/lib/python2.7/dist-packages/libsonic/connection.py\", line 593, in getPlaylists\r\n    res = self._doInfoReq(req)\r\n  File \"/usr/local/lib/python2.7/dist-packages/libsonic/connection.py\", line 2394, in _doInfoReq\r\n    res = self._opener.open(req)\r\n  File \"/usr/lib/python2.7/urllib2.py\", line 437, in open\r\n    response = meth(req, response)\r\n  File \"/usr/lib/python2.7/urllib2.py\", line 550, in http_response\r\n    'http', request, response, code, msg, hdrs)\r\n  File \"/usr/lib/python2.7/urllib2.py\", line 475, in error\r\n    return self._call_chain(*args)\r\n  File \"/usr/lib/python2.7/urllib2.py\", line 409, in _call_chain\r\n    result = func(*args)\r\n  File \"/usr/lib/python2.7/urllib2.py\", line 558, in http_error_default\r\n    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)\r\nHTTPError: HTTP Error 404: Not Found\r\n```\r\n\r\nI examined the URL being accessed and discovered that it *does* exist.  Running curl against it shows a valid response:\r\n```\r\nuser@machine:~$ curl http://xxx.xxx.com:4040/subsonic/rest/getPlaylists.view\r\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<subsonic-response xmlns=\"http://subsonic.org/restapi\" status=\"failed\" version=\"1.12.0\">\r\n   <error code=\"10\" message=\"Required parameter is missing.\"/>\r\n</subsonic-response>\r\n```\r\n\r\nThe extension doesn't seem to be using the username or password which are some of the \"required parameters\" that are missing according to [the Subsonic API docs](http://www.subsonic.org/pages/api.jsp).  These missing parameters, along with the missing protocol version and client ID, seem to indicate that this extension couldn't work with Subsonic even if a spurious 404 wasn't being generated."}}