local: Switch to using updater from extensions
This commit is contained in:
parent
dfcb49a8ba
commit
c2cc9f027c
@ -96,15 +96,7 @@ class BaseLibraryProvider(object):
|
||||
|
||||
|
||||
class BaseLibraryUpdateProvider(object):
|
||||
"""
|
||||
:param backend: backend the controller is a part of
|
||||
:type backend: :class:`mopidy.backends.base.Backend`
|
||||
"""
|
||||
|
||||
pykka_traversable = True
|
||||
|
||||
def __init__(self, backend):
|
||||
self.backend = backend
|
||||
uri_schemes = []
|
||||
|
||||
def load(self):
|
||||
"""Loads the library and returns all tracks in it.
|
||||
|
||||
@ -8,7 +8,7 @@ import pykka
|
||||
from mopidy.backends import base
|
||||
from mopidy.utils import encoding, path
|
||||
|
||||
from .library import LocalLibraryProvider, LocalLibraryUpdateProvider
|
||||
from .library import LocalLibraryProvider
|
||||
from .playlists import LocalPlaylistsProvider
|
||||
|
||||
logger = logging.getLogger('mopidy.backends.local')
|
||||
@ -23,7 +23,6 @@ class LocalBackend(pykka.ThreadingActor, base.Backend):
|
||||
self.check_dirs_and_files()
|
||||
|
||||
self.library = LocalLibraryProvider(backend=self)
|
||||
self.updater = LocalLibraryUpdateProvider(backend=self)
|
||||
self.playback = base.BasePlaybackProvider(audio=audio, backend=self)
|
||||
self.playlists = LocalPlaylistsProvider(backend=self)
|
||||
|
||||
|
||||
@ -135,11 +135,12 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
|
||||
|
||||
# TODO: rename and move to tagcache extension.
|
||||
class LocalLibraryUpdateProvider(base.BaseLibraryProvider):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(LocalLibraryUpdateProvider, self).__init__(*args, **kwargs)
|
||||
uri_schemes = ['file']
|
||||
|
||||
def __init__(self, config):
|
||||
self._tracks = {}
|
||||
self._media_dir = self.backend.config['local']['media_dir']
|
||||
self._tag_cache_file = self.backend.config['local']['tag_cache_file']
|
||||
self._media_dir = config['local']['media_dir']
|
||||
self._tag_cache_file = config['local']['tag_cache_file']
|
||||
|
||||
def load(self):
|
||||
tracks = parse_mpd_tag_cache(self._tag_cache_file, self._media_dir)
|
||||
@ -156,6 +157,8 @@ class LocalLibraryUpdateProvider(base.BaseLibraryProvider):
|
||||
|
||||
def commit(self):
|
||||
directory, basename = os.path.split(self._tag_cache_file)
|
||||
|
||||
# TODO: cleanup directory/basename.* files.
|
||||
tmp = tempfile.NamedTemporaryFile(
|
||||
prefix=basename + '.', dir=directory, delete=False)
|
||||
|
||||
|
||||
@ -45,9 +45,9 @@ def main():
|
||||
log.setup_root_logger()
|
||||
log.setup_console_logging(logging_config, args.verbosity_level)
|
||||
|
||||
extensions = dict((e.ext_name, e) for e in ext.load_extensions())
|
||||
extensions = ext.load_extensions()
|
||||
config, errors = config_lib.load(
|
||||
config_files, extensions.values(), config_overrides)
|
||||
config_files, extensions, config_overrides)
|
||||
log.setup_log_levels(config)
|
||||
|
||||
if not config['local']['media_dir']:
|
||||
@ -56,10 +56,21 @@ def main():
|
||||
|
||||
# TODO: missing config error checking and other default setup code.
|
||||
|
||||
audio = dummy_audio.DummyAudio()
|
||||
local_backend_classes = extensions['local'].get_backend_classes()
|
||||
local_backend = local_backend_classes[0](config, audio)
|
||||
local_updater = local_backend.updater
|
||||
updaters = {}
|
||||
for e in extensions:
|
||||
for updater_class in e.get_library_updaters():
|
||||
if updater_class and 'file' in updater_class.uri_schemes:
|
||||
updaters[e.ext_name] = updater_class
|
||||
|
||||
if not updaters:
|
||||
logging.error('No usable updaters found.')
|
||||
return
|
||||
elif len(updaters) > 1:
|
||||
names = ', '.join(updaters.keys())
|
||||
logging.error('More than one updater found. Provided by: %s', names)
|
||||
return
|
||||
|
||||
local_updater = updaters.values()[0](config) # TODO: switch to actor?
|
||||
|
||||
media_dir = config['local']['media_dir']
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user