tagcache: Split out to own extension for eventual deletion.

This commit is contained in:
Thomas Adamcik 2013-11-26 23:03:08 +01:00
parent 3c1c6bac71
commit c025b87076
8 changed files with 70 additions and 19 deletions

View File

@ -33,10 +33,6 @@ class Extension(ext.Extension):
from .actor import LocalBackend from .actor import LocalBackend
return [LocalBackend] return [LocalBackend]
def get_library_updaters(self):
from .tagcache.library import LocalLibraryUpdateProvider
return [LocalLibraryUpdateProvider]
def get_command(self): def get_command(self):
from .commands import LocalCommand from .commands import LocalCommand
return LocalCommand() return LocalCommand()

View File

@ -8,7 +8,6 @@ import pykka
from mopidy.backends import base from mopidy.backends import base
from mopidy.utils import encoding, path from mopidy.utils import encoding, path
from .tagcache.library import LocalLibraryProvider
from .playlists import LocalPlaylistsProvider from .playlists import LocalPlaylistsProvider
from .playback import LocalPlaybackProvider from .playback import LocalPlaybackProvider
@ -23,7 +22,6 @@ class LocalBackend(pykka.ThreadingActor, base.Backend):
self.check_dirs_and_files() self.check_dirs_and_files()
self.library = LocalLibraryProvider(backend=self)
self.playback = LocalPlaybackProvider(audio=audio, backend=self) self.playback = LocalPlaybackProvider(audio=audio, backend=self)
self.playlists = LocalPlaylistsProvider(backend=self) self.playlists = LocalPlaylistsProvider(backend=self)
@ -40,10 +38,3 @@ class LocalBackend(pykka.ThreadingActor, base.Backend):
logger.warning( logger.warning(
'Could not create local playlists dir: %s', 'Could not create local playlists dir: %s',
encoding.locale_decode(error)) encoding.locale_decode(error))
try:
path.get_or_create_file(self.config['local']['tag_cache_file'])
except EnvironmentError as error:
logger.warning(
'Could not create empty tag cache file: %s',
encoding.locale_decode(error))

View File

@ -0,0 +1,31 @@
from __future__ import unicode_literals
import os
import mopidy
from mopidy import config, ext
class Extension(ext.Extension):
dist_name = 'Mopidy-Local-Tagcache'
ext_name = 'local-tagcache'
version = mopidy.__version__
def get_default_config(self):
conf_file = os.path.join(os.path.dirname(__file__), 'ext.conf')
return config.read(conf_file)
# Config only contains local-tagcache/enabled since we are not setting our
# own schema.
def validate_environment(self):
pass
def get_backend_classes(self):
from .actor import LocalTagcacheBackend
return [LocalTagcacheBackend]
def get_library_updaters(self):
from .library import LocalTagcacheLibraryUpdateProvider
return [LocalTagcacheLibraryUpdateProvider]

View File

@ -0,0 +1,30 @@
from __future__ import unicode_literals
import logging
import pykka
from mopidy.backends import base
from mopidy.utils import encoding, path
from .library import LocalTagcacheLibraryProvider
logger = logging.getLogger('mopidy.backends.local.tagcache')
class LocalTagcacheBackend(pykka.ThreadingActor, base.Backend):
def __init__(self, config, audio):
super(LocalTagcacheBackend, self).__init__()
self.config = config
self.check_dirs_and_files()
self.library = LocalTagcacheLibraryProvider(backend=self)
self.uri_schemes = ['local']
def check_dirs_and_files(self):
try:
path.get_or_create_file(self.config['local']['tag_cache_file'])
except EnvironmentError as error:
logger.warning(
'Could not create empty tag cache file: %s',
encoding.locale_decode(error))

View File

@ -0,0 +1,2 @@
[local-tagcache]
enabled = true

View File

@ -13,9 +13,9 @@ from .translator import parse_mpd_tag_cache, tracks_to_tag_cache_format
logger = logging.getLogger('mopidy.backends.local.tagcache') logger = logging.getLogger('mopidy.backends.local.tagcache')
class LocalLibraryProvider(base.BaseLibraryProvider): class LocalTagcacheLibraryProvider(base.BaseLibraryProvider):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(LocalLibraryProvider, self).__init__(*args, **kwargs) super(LocalTagcacheLibraryProvider, self).__init__(*args, **kwargs)
self._uri_mapping = {} self._uri_mapping = {}
self._media_dir = self.backend.config['local']['media_dir'] self._media_dir = self.backend.config['local']['media_dir']
self._tag_cache_file = self.backend.config['local']['tag_cache_file'] self._tag_cache_file = self.backend.config['local']['tag_cache_file']
@ -219,7 +219,7 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
raise LookupError('Missing query') raise LookupError('Missing query')
class LocalLibraryUpdateProvider(base.BaseLibraryProvider): class LocalTagcacheLibraryUpdateProvider(base.BaseLibraryProvider):
uri_schemes = ['local'] uri_schemes = ['local']
def __init__(self, config): def __init__(self, config):

View File

@ -43,6 +43,7 @@ setup(
'mopidy.ext': [ 'mopidy.ext': [
'http = mopidy.frontends.http:Extension [http]', 'http = mopidy.frontends.http:Extension [http]',
'local = mopidy.backends.local:Extension', 'local = mopidy.backends.local:Extension',
'local-tagcache = mopidy.backends.local.tagcache:Extension',
'mpd = mopidy.frontends.mpd:Extension', 'mpd = mopidy.frontends.mpd:Extension',
'stream = mopidy.backends.stream:Extension', 'stream = mopidy.backends.stream:Extension',
], ],

View File

@ -6,7 +6,7 @@ import unittest
import pykka import pykka
from mopidy import core from mopidy import core
from mopidy.backends.local import actor from mopidy.backends.local.tagcache import actor
from mopidy.models import Track, Album, Artist from mopidy.models import Track, Album, Artist
from tests import path_to_data_dir from tests import path_to_data_dir
@ -66,7 +66,7 @@ class LocalLibraryProviderTest(unittest.TestCase):
} }
def setUp(self): def setUp(self):
self.backend = actor.LocalBackend.start( self.backend = actor.LocalTagcacheBackend.start(
config=self.config, audio=None).proxy() config=self.config, audio=None).proxy()
self.core = core.Core(backends=[self.backend]) self.core = core.Core(backends=[self.backend])
self.library = self.core.library self.library = self.core.library
@ -92,7 +92,7 @@ class LocalLibraryProviderTest(unittest.TestCase):
config = {'local': self.config['local'].copy()} config = {'local': self.config['local'].copy()}
config['local']['tag_cache_file'] = tag_cache.name config['local']['tag_cache_file'] = tag_cache.name
backend = actor.LocalBackend(config=config, audio=None) backend = actor.LocalTagcacheBackend(config=config, audio=None)
# Sanity check that value is in tag cache # Sanity check that value is in tag cache
result = backend.library.lookup(self.tracks[0].uri) result = backend.library.lookup(self.tracks[0].uri)