From 864ea22a7005edd72218d4212db1b6203bde089a Mon Sep 17 00:00:00 2001 From: rembo10 Date: Tue, 1 Apr 2014 20:34:51 -0700 Subject: [PATCH] Pulled in a few beets updates --- lib/beets/autotag/__init__.py | 2 +- lib/beets/autotag/hooks.py | 2 +- lib/beets/autotag/match.py | 2 +- lib/beets/library.py | 2 +- lib/beets/ui/commands.py | 21 ++++++++++++++++----- 5 files changed, 20 insertions(+), 9 deletions(-) diff --git a/lib/beets/autotag/__init__.py b/lib/beets/autotag/__init__.py index aaec990c..a3696354 100644 --- a/lib/beets/autotag/__init__.py +++ b/lib/beets/autotag/__init__.py @@ -242,6 +242,6 @@ def apply_metadata(album_info, mapping): item[field] = value if track_info.disctitle is not None: item.disctitle = track_info.disctitle - + # Headphones seal of approval item.comments = 'tagged by headphones/beets' diff --git a/lib/beets/autotag/hooks.py b/lib/beets/autotag/hooks.py index 5ba841bf..74c8cf82 100644 --- a/lib/beets/autotag/hooks.py +++ b/lib/beets/autotag/hooks.py @@ -21,7 +21,7 @@ from beets import plugins from beets import config from beets.autotag import mb from beets.util import levenshtein -from lib.unidecode import unidecode +from unidecode import unidecode log = logging.getLogger('beets') diff --git a/lib/beets/autotag/match.py b/lib/beets/autotag/match.py index 082a8c2f..a4bc47fa 100644 --- a/lib/beets/autotag/match.py +++ b/lib/beets/autotag/match.py @@ -20,7 +20,7 @@ from __future__ import division import datetime import logging import re -from lib.munkres import Munkres +from munkres import Munkres from beets import plugins from beets import config diff --git a/lib/beets/library.py b/lib/beets/library.py index 9102aff7..94559430 100644 --- a/lib/beets/library.py +++ b/lib/beets/library.py @@ -21,7 +21,7 @@ import logging import shlex import unicodedata import time -from lib.unidecode import unidecode +from unidecode import unidecode from beets.mediafile import MediaFile, MutagenError from beets import plugins from beets import util diff --git a/lib/beets/ui/commands.py b/lib/beets/ui/commands.py index d0ff320a..e7e631a4 100644 --- a/lib/beets/ui/commands.py +++ b/lib/beets/ui/commands.py @@ -1082,7 +1082,7 @@ default_commands.append(version_cmd) # modify: Declaratively change metadata. -def modify_items(lib, mods, query, write, move, album, confirm): +def modify_items(lib, mods, dels, query, write, move, album, confirm): """Modifies matching items according to key=value assignments.""" # Parse key=value specifications into a dictionary. model_cls = library.Album if album else library.Item @@ -1102,6 +1102,8 @@ def modify_items(lib, mods, query, write, move, album, confirm): for obj in objs: for field, value in fsets.iteritems(): obj[field] = value + for field in dels: + del obj[field] if ui.show_model_changes(obj): changed.add(obj) @@ -1155,13 +1157,22 @@ modify_cmd.parser.add_option('-f', '--format', action='store', help='print with custom format', default=None) def modify_func(lib, opts, args): args = decargs(args) - mods = [a for a in args if '=' in a] - query = [a for a in args if '=' not in a] - if not mods: + mods = [] + dels = [] + query = [] + for arg in args: + if arg.endswith('!') and '=' not in arg and ':' not in arg: + dels.append(arg[:-1]) + elif '=' in arg: + mods.append(arg) + else: + query.append(arg) + if not mods and not dels: raise ui.UserError('no modifications specified') write = opts.write if opts.write is not None else \ config['import']['write'].get(bool) - modify_items(lib, mods, query, write, opts.move, opts.album, not opts.yes) + modify_items(lib, mods, dels, query, write, opts.move, opts.album, + not opts.yes) modify_cmd.func = modify_func default_commands.append(modify_cmd)