From 9f7aa866bd5d1b9d382e258ab4053bb6ebfc8750 Mon Sep 17 00:00:00 2001 From: Adrian Sampson Date: Sat, 7 Nov 2015 13:20:09 -0800 Subject: [PATCH] Use `ui.should_write` everywhere There sure are a lot of plugins that want to write metadata! --- beets/ui/__init__.py | 2 +- beetsplug/chroma.py | 3 +-- beetsplug/echonest.py | 4 ++-- beetsplug/embedart.py | 2 +- beetsplug/ftintitle.py | 3 +-- beetsplug/keyfinder.py | 4 +--- beetsplug/lastgenre/__init__.py | 3 +-- beetsplug/lyrics.py | 4 ++-- beetsplug/mbsync.py | 5 ++--- beetsplug/replaygain.py | 3 +-- 10 files changed, 13 insertions(+), 20 deletions(-) diff --git a/beets/ui/__init__.py b/beets/ui/__init__.py index a4c4c376b..e2af8593b 100644 --- a/beets/ui/__init__.py +++ b/beets/ui/__init__.py @@ -149,7 +149,7 @@ def _bool_fallback(opt, view): return opt -def should_write(write_opt): +def should_write(write_opt=None): """Decide whether a command that updates metadata should also write tags, using the importer configuration as the default. """ diff --git a/beetsplug/chroma.py b/beetsplug/chroma.py index f1ca233e0..3446661d3 100644 --- a/beetsplug/chroma.py +++ b/beetsplug/chroma.py @@ -194,8 +194,7 @@ class AcoustidPlugin(plugins.BeetsPlugin): def fingerprint_cmd_func(lib, opts, args): for item in lib.items(ui.decargs(args)): - fingerprint_item(self._log, item, - write=config['import']['write'].get(bool)) + fingerprint_item(self._log, item, write=ui.should_write()) fingerprint_cmd.func = fingerprint_cmd_func return [submit_cmd, fingerprint_cmd] diff --git a/beetsplug/echonest.py b/beetsplug/echonest.py index 2c8a35c69..312a8b620 100644 --- a/beetsplug/echonest.py +++ b/beetsplug/echonest.py @@ -24,7 +24,7 @@ import tempfile from string import Template import subprocess -from beets import util, config, plugins, ui +from beets import util, plugins, ui from beets.dbcore import types import pyechonest import pyechonest.song @@ -472,7 +472,7 @@ class EchonestMetadataPlugin(plugins.BeetsPlugin): def fetch_func(lib, opts, args): self.config.set_args(opts) - write = config['import']['write'].get(bool) + write = ui.should_write() for item in lib.items(ui.decargs(args)): self._log.info(u'{0}', item) if self.config['force'] or self.requires_update(item): diff --git a/beetsplug/embedart.py b/beetsplug/embedart.py index 9c0efa51e..6dc235979 100644 --- a/beetsplug/embedart.py +++ b/beetsplug/embedart.py @@ -128,7 +128,7 @@ class EmbedCoverArtPlugin(BeetsPlugin): def process_album(self, album): """Automatically embed art after art has been set """ - if self.config['auto'] and config['import']['write']: + if self.config['auto'] and ui.should_write(): max_width = self.config['maxwidth'].get(int) art.embed_album(self._log, album, max_width, True, self.config['compare_threshold'].get(int), diff --git a/beetsplug/ftintitle.py b/beetsplug/ftintitle.py index 8c435865c..d2369bf52 100644 --- a/beetsplug/ftintitle.py +++ b/beetsplug/ftintitle.py @@ -22,7 +22,6 @@ import re from beets import plugins from beets import ui from beets.util import displayable_path -from beets import config def split_on_feat(artist): @@ -102,7 +101,7 @@ class FtInTitlePlugin(plugins.BeetsPlugin): def func(lib, opts, args): self.config.set_args(opts) drop_feat = self.config['drop'].get(bool) - write = config['import']['write'].get(bool) + write = ui.should_write() for item in lib.items(ui.decargs(args)): self.ft_in_title(item, drop_feat) diff --git a/beetsplug/keyfinder.py b/beetsplug/keyfinder.py index e3e9a86ba..d76448a4c 100644 --- a/beetsplug/keyfinder.py +++ b/beetsplug/keyfinder.py @@ -23,7 +23,6 @@ import subprocess from beets import ui from beets import util from beets.plugins import BeetsPlugin -from beets import config class KeyFinderPlugin(BeetsPlugin): @@ -46,8 +45,7 @@ class KeyFinderPlugin(BeetsPlugin): return [cmd] def command(self, lib, opts, args): - self.find_key(lib.items(ui.decargs(args)), - write=config['import']['write'].get(bool)) + self.find_key(lib.items(ui.decargs(args)), write=ui.should_write()) def imported(self, session, task): self.find_key(task.items) diff --git a/beetsplug/lastgenre/__init__.py b/beetsplug/lastgenre/__init__.py index eab6ab440..85bd87f9b 100644 --- a/beetsplug/lastgenre/__init__.py +++ b/beetsplug/lastgenre/__init__.py @@ -31,7 +31,6 @@ import traceback from beets import plugins from beets import ui from beets.util import normpath, plurality -from beets import config from beets import library @@ -336,7 +335,7 @@ class LastGenrePlugin(plugins.BeetsPlugin): ) def lastgenre_func(lib, opts, args): - write = config['import']['write'].get(bool) + write = ui.should_write() self.config.set_args(opts) for album in lib.albums(ui.decargs(args)): diff --git a/beetsplug/lyrics.py b/beetsplug/lyrics.py index 2f1e3529e..16f669f53 100644 --- a/beetsplug/lyrics.py +++ b/beetsplug/lyrics.py @@ -29,7 +29,7 @@ import warnings from HTMLParser import HTMLParseError from beets import plugins -from beets import config, ui +from beets import ui DIV_RE = re.compile(r'<(/?)div>?', re.I) @@ -557,7 +557,7 @@ class LyricsPlugin(plugins.BeetsPlugin): def func(lib, opts, args): # The "write to files" option corresponds to the # import_write config value. - write = config['import']['write'].get(bool) + write = ui.should_write() for item in lib.items(ui.decargs(args)): self.fetch_item_lyrics( lib, item, write, diff --git a/beetsplug/mbsync.py b/beetsplug/mbsync.py index 974f7e894..03b79a48e 100644 --- a/beetsplug/mbsync.py +++ b/beetsplug/mbsync.py @@ -20,7 +20,6 @@ from __future__ import (division, absolute_import, print_function, from beets.plugins import BeetsPlugin from beets import autotag, library, ui, util from beets.autotag import hooks -from beets import config from collections import defaultdict @@ -50,7 +49,7 @@ class MBSyncPlugin(BeetsPlugin): default=True, dest='move', help="don't move files in library") cmd.parser.add_option('-W', '--nowrite', action='store_false', - default=config['import']['write'], dest='write', + default=None, dest='write', help="don't write updated metadata to files") cmd.parser.add_format_option() cmd.func = self.func @@ -61,7 +60,7 @@ class MBSyncPlugin(BeetsPlugin): """ move = opts.move pretend = opts.pretend - write = opts.write + write = ui.should_write(opts.write) query = ui.decargs(args) self.singletons(lib, query, move, pretend, write) diff --git a/beetsplug/replaygain.py b/beetsplug/replaygain.py index d57533e75..75f2ab947 100644 --- a/beetsplug/replaygain.py +++ b/beetsplug/replaygain.py @@ -27,7 +27,6 @@ from beets import logging from beets import ui from beets.plugins import BeetsPlugin from beets.util import syspath, command_output, displayable_path -from beets import config # Utilities. @@ -926,7 +925,7 @@ class ReplayGainPlugin(BeetsPlugin): def func(lib, opts, args): self._log.setLevel(logging.INFO) - write = config['import']['write'].get(bool) + write = ui.should_write() if opts.album: for album in lib.albums(ui.decargs(args)):