diff --git a/beetsplug/metasync/__init__.py b/beetsplug/metasync/__init__.py index 9d004ea30..05669fd42 100644 --- a/beetsplug/metasync/__init__.py +++ b/beetsplug/metasync/__init__.py @@ -15,12 +15,14 @@ """Synchronize information from music player libraries """ from abc import abstractmethod, ABCMeta -from beets import ui -from beets.plugins import BeetsPlugin import inspect import pkgutil from importlib import import_module +from beets.util.confit import ConfigValueError +from beets import ui +from beets.plugins import BeetsPlugin + METASYNC_MODULE = 'beetsplug.metasync' @@ -34,7 +36,7 @@ class MetaSource(object): self._log = log @abstractmethod - def sync_data(self, item): + def sync_from_source(self, item): pass @@ -116,14 +118,17 @@ class MetaSyncPlugin(BeetsPlugin): except KeyError: self._log.error(u'Unknown metadata source \'{0}\''.format( player)) - except ImportError as e: + except (ImportError, ConfigValueError) as e: self._log.error(u'Failed to instantiate metadata source ' u'\'{0}\': {1}'.format(player, e)) + if not meta_sources: + return + # Sync the items with all of the meta sources for item in lib.items(query): for meta_source in meta_sources.values(): - meta_source.sync_data(item) + meta_source.sync_from_source(item) changed = ui.show_model_changes(item) diff --git a/beetsplug/metasync/amarok.py b/beetsplug/metasync/amarok.py index b63b322ec..b544c22ec 100644 --- a/beetsplug/metasync/amarok.py +++ b/beetsplug/metasync/amarok.py @@ -61,7 +61,7 @@ class Amarok(MetaSource): self.collection = \ dbus.SessionBus().get_object('org.kde.amarok', '/Collection') - def sync_data(self, item): + def sync_from_source(self, item): path = displayable_path(item.path) # amarok unfortunately doesn't allow searching for the full path, only diff --git a/beetsplug/metasync/itunes.py b/beetsplug/metasync/itunes.py index 7ae1e46ef..279621cf3 100644 --- a/beetsplug/metasync/itunes.py +++ b/beetsplug/metasync/itunes.py @@ -30,7 +30,7 @@ from beetsplug.metasync import MetaSource @contextmanager def create_temporary_copy(path): - temp_dir = tempfile.gettempdir() + temp_dir = tempfile.mkdtemp() temp_path = os.path.join(temp_dir, 'temp_itunes_lib') shutil.copyfile(path, temp_path) try: @@ -76,7 +76,7 @@ class Itunes(MetaSource): (track['Name'], track['Album'], track['Album Artist']): track for track in raw_library['Tracks'].values()} - def sync_data(self, item): + def sync_from_source(self, item): key = (item.title, item.album, item.albumartist) result = self.collection.get(key)