Merge remote-tracking branch 'upstream/master' into bpd_gst10

This commit is contained in:
Philipp Beckmann 2016-06-20 18:11:11 +02:00
commit 0a3d18c5c4
6 changed files with 40 additions and 4 deletions

View file

@ -462,7 +462,7 @@ def tag_item(item, search_artist=None, search_title=None,
candidates = {}
# First, try matching by MusicBrainz ID.
trackids = search_ids or filter(None, [item.mb_trackid])
trackids = search_ids or [t for t in [item.mb_trackid] if t]
if trackids:
for trackid in trackids:
log.debug(u'Searching for track ID: {0}', trackid)

View file

@ -23,6 +23,7 @@ import:
group_albums: no
pretend: false
search_ids: []
duplicate_action: ask
clutter: ["Thumbs.DB", ".DS_Store"]
ignore: [".*", "*~", "System Volume Information", "lost+found"]

View file

@ -331,7 +331,7 @@ class ImportSession(object):
been imported in a previous session.
"""
if self.is_resuming(toppath) \
and all(map(lambda p: progress_element(toppath, p), paths)):
and all([progress_element(toppath, p) for p in paths]):
return True
if self.config['incremental'] \
and tuple(paths) in self.history_dirs:
@ -1327,7 +1327,29 @@ def resolve_duplicates(session, task):
log.debug(u'found duplicates: {}'.format(
[o.id for o in found_duplicates]
))
session.resolve_duplicate(task, found_duplicates)
# Get the default action to follow from config.
duplicate_action = config['import']['duplicate_action'].as_choice({
u'skip': u's',
u'keep': u'k',
u'remove': u'r',
u'ask': u'a',
})
log.debug(u'default action for duplicates: {0}', duplicate_action)
if duplicate_action == u's':
# Skip new.
task.set_choice(action.SKIP)
elif duplicate_action == u'k':
# Keep both. Do nothing; leave the choice intact.
pass
elif duplicate_action == u'r':
# Remove old.
task.should_remove_duplicates = True
else:
# No default action set; ask the session.
session.resolve_duplicate(task, found_duplicates)
session.log_choice(task, True)

View file

@ -230,7 +230,7 @@ def make_key_filter(include):
def filter_(data):
filtered = dict()
for key, value in data.items():
if any(map(lambda m: m.match(key), matchers)):
if any([m.match(key) for m in matchers]):
filtered[key] = value
return filtered

View file

@ -8,6 +8,8 @@ New features:
* A new ``--force`` option for :ref:`remove-cmd` allows removal of items
without prompting beforehand. :bug:`2042`
* A new importer configuration :ref:`duplicate_action` controls how
duplicate albums or tracks treated in import task. :bug:`185`
Some fixes for Windows:

View file

@ -550,6 +550,17 @@ with the ``-a`` flag to the :ref:`import-cmd` command.)
Default: ``yes``.
.. _duplicate_action:
duplicate_action
~~~~~~~~~~~~~~~~
Either ``skip``, ``keep``, ``remove``, or ``ask``. Controls how duplicates
are treated in import task. "skip" means that new item(album or track) will be
skiped; "keep" means keep both old and new items; "remove" means remove old
item; "ask" means the user should be prompted for the action each time.
The default is ``ask``.
.. _musicbrainz-config: