mirror of
https://github.com/fergalmoran/picard.git
synced 2026-01-06 16:44:06 +00:00
Optimize imagelist.add_metadata_images
Only update image list if new images are not already in the existing images. Also return bool value as indicated in the function documentation.
This commit is contained in:
@@ -219,9 +219,12 @@ def _add_images(metadata, added_images):
|
||||
return
|
||||
|
||||
current_images = set(metadata.images)
|
||||
if added_images != current_images:
|
||||
if added_images.isdisjoint(current_images):
|
||||
metadata.images = ImageList(current_images.union(added_images))
|
||||
metadata.has_common_images = False
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
|
||||
def add_metadata_images(obj, added_sources):
|
||||
@@ -233,11 +236,14 @@ def add_metadata_images(obj, added_sources):
|
||||
"""
|
||||
state = _get_state(obj)
|
||||
(added_new_images, added_orig_images) = _get_metadata_images(state, added_sources)
|
||||
changed = False
|
||||
|
||||
if state.update_new_metadata:
|
||||
_add_images(obj.metadata, added_new_images)
|
||||
changed |= _add_images(obj.metadata, added_new_images)
|
||||
if state.update_orig_metadata:
|
||||
_add_images(obj.orig_metadata, added_orig_images)
|
||||
changed |= _add_images(obj.orig_metadata, added_orig_images)
|
||||
|
||||
return changed
|
||||
|
||||
|
||||
def _remove_images(metadata, sources, removed_images):
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Picard, the next-generation MusicBrainz tagger
|
||||
#
|
||||
# Copyright (C) 2018-2019 Philipp Wolfer
|
||||
# Copyright (C) 2018-2019, 2021 Philipp Wolfer
|
||||
# Copyright (C) 2018-2019 Wieland Hoffmann
|
||||
# Copyright (C) 2018-2020 Laurent Monin
|
||||
#
|
||||
@@ -239,10 +239,19 @@ class AddMetadataImagesTest(PicardTestCase):
|
||||
cluster.files = [self.test_files[0]]
|
||||
update_metadata_images(cluster)
|
||||
cluster.files += self.test_files[1:]
|
||||
add_metadata_images(cluster, self.test_files[1:])
|
||||
added = add_metadata_images(cluster, self.test_files[1:])
|
||||
self.assertTrue(added)
|
||||
self.assertEqual(set(self.test_images), set(cluster.metadata.images))
|
||||
self.assertFalse(cluster.metadata.has_common_images)
|
||||
|
||||
def test_add_no_changes(self):
|
||||
cluster = Cluster('Test')
|
||||
cluster.files = self.test_files
|
||||
update_metadata_images(cluster)
|
||||
added = add_metadata_images(cluster, [self.test_files[1]])
|
||||
self.assertFalse(added)
|
||||
self.assertEqual(set(self.test_images), set(cluster.metadata.images))
|
||||
|
||||
|
||||
class ImageListTest(PicardTestCase):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user