m3u: Make empty playlists_dir default to ext's data dir

Partly fixes #1259
This commit is contained in:
Stein Magnus Jodal 2015-08-23 00:06:36 +02:00
parent e0a028291a
commit e1f349a6d4
6 changed files with 22 additions and 11 deletions

View File

@ -29,6 +29,12 @@ Bug fix release.
:confval:`core/data_dir`, like the Debian and Arch packages. (Fixes: :confval:`core/data_dir`, like the Debian and Arch packages. (Fixes:
:issue:`1259`) :issue:`1259`)
- M3U: Changed default for the :confval:`m3u/playlists_dir` from
``$XDG_DATA_DIR/mopidy/m3u`` to unset, which now means the extension's data
dir. This does not change the defaults for desktop users, only system
services installed from packages that properly set :confval:`core/data_dir`,
like the Debian and Arch pakages. (Fixes: :issue:`1259`)
- Stream: If "file" is present in the :confval:`stream/protocols` config value - Stream: If "file" is present in the :confval:`stream/protocols` config value
and the :ref:`ext-file` extension is enabled, we exited with an error because and the :ref:`ext-file` extension is enabled, we exited with an error because
two extensions claimed the same URI scheme. We now log a warning recommending two extensions claimed the same URI scheme. We now log a warning recommending

View File

@ -52,4 +52,5 @@ See :ref:`config` for general help on configuring Mopidy.
.. confval:: m3u/playlists_dir .. confval:: m3u/playlists_dir
Path to directory with M3U files. Path to directory with M3U files. Unset by default, in which case the
extension's data dir is used to store playlists.

View File

@ -21,7 +21,7 @@ class Extension(ext.Extension):
def get_config_schema(self): def get_config_schema(self):
schema = super(Extension, self).get_config_schema() schema = super(Extension, self).get_config_schema()
schema['playlists_dir'] = config.Path() schema['playlists_dir'] = config.Path(optional=True)
return schema return schema
def setup(self, registry): def setup(self, registry):

View File

@ -4,7 +4,7 @@ import logging
import pykka import pykka
from mopidy import backend from mopidy import backend, m3u
from mopidy.internal import encoding, path from mopidy.internal import encoding, path
from mopidy.m3u.library import M3ULibraryProvider from mopidy.m3u.library import M3ULibraryProvider
from mopidy.m3u.playlists import M3UPlaylistsProvider from mopidy.m3u.playlists import M3UPlaylistsProvider
@ -21,12 +21,16 @@ class M3UBackend(pykka.ThreadingActor, backend.Backend):
self._config = config self._config = config
if config['m3u']['playlists_dir'] is not None:
self._playlists_dir = config['m3u']['playlists_dir']
try: try:
path.get_or_create_dir(config['m3u']['playlists_dir']) path.get_or_create_dir(self._playlists_dir)
except EnvironmentError as error: except EnvironmentError as error:
logger.warning( logger.warning(
'Could not create M3U playlists dir: %s', 'Could not create M3U playlists dir: %s',
encoding.locale_decode(error)) encoding.locale_decode(error))
else:
self._playlists_dir = m3u.Extension().get_data_dir(config)
self.playlists = M3UPlaylistsProvider(backend=self) self.playlists = M3UPlaylistsProvider(backend=self)
self.library = M3ULibraryProvider(backend=self) self.library = M3ULibraryProvider(backend=self)

View File

@ -1,3 +1,3 @@
[m3u] [m3u]
enabled = true enabled = true
playlists_dir = $XDG_DATA_DIR/mopidy/m3u playlists_dir =

View File

@ -23,7 +23,7 @@ class M3UPlaylistsProvider(backend.PlaylistsProvider):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(M3UPlaylistsProvider, self).__init__(*args, **kwargs) super(M3UPlaylistsProvider, self).__init__(*args, **kwargs)
self._playlists_dir = self.backend._config['m3u']['playlists_dir'] self._playlists_dir = self.backend._playlists_dir
self._playlists = {} self._playlists = {}
self.refresh() self.refresh()