This adds support for loading tag caches where the "file:" field has urlencoded
paths. For old tag caches without the urlencoding, this is a noop. Thus, old
tag caches continues to work.
This partly reverts "beac2e8 mpd: Use file:// URIs in tag_cache" by removing
the "file://" URI scheme and the music dir base path from the "file:" fields in
the tag cache.
The advantage is that the tag cache becomes independent of the music dir
location and the tag cache loader can be made compatible with both old and new
tag caches.
- path_to_uri() encodes unicode input as UTF-8 and leaves bytestring input
unchanged before it is converted to file:// URIs.
- uri_to_path() will now always return bytestrings, since we don't know if
there is any non-UTF-8 encoded chars in the file path, and converting it to
unicode would make such paths no longer match the dir or file it was
referring to.
- split_path() will now assume it gets a bytestring in.
file:// URIs are uriencoded, and will thus conserve the encoding of the file
paths. We cannot just convert file paths in other encodings to UTF-8, because
then we won't find the files we point to.
Pyspotify now creates the session in
`pyspotify.SpotifySessionManager.__init__` (rather than in `.connect`) -
see [here][1]. Therefore it seems best not to set `self.session = None`
in `mopidy.SpotifySessionManager.__init__` or `self.session = session`
in `logged_in`.
[1]: 483f757430 (L1R39)
The `on_event()` method is called on all events. By default, it forwards the
event to the specific event handler methods. It's also a convenient method to
override if you want to handle all events in one place.