mirror of
https://github.com/fergalmoran/picard.git
synced 2026-02-25 09:03:59 +00:00
Merge pull request #1001 from phw/PICARD-1376-fix-ape-tag-deletion
PICARD-1376: Fix tag deletion for Ape files
This commit is contained in:
@@ -189,17 +189,18 @@ class APEv2File(File):
|
||||
real_name = self._get_tag_name(tag)
|
||||
if real_name in ('Lyrics', 'Comment', 'Performer'):
|
||||
tag_type = re.compile(r"\(%s\)" % tag.split(':', 1)[1])
|
||||
for item in tags.get(real_name):
|
||||
if tag_type.search(item):
|
||||
tags.get(real_name).remove(item)
|
||||
existing_tags = tags.get(real_name)
|
||||
if existing_tags:
|
||||
for item in existing_tags:
|
||||
if tag_type.search(item):
|
||||
tags.get(real_name).remove(item)
|
||||
elif tag in ('totaltracks', 'totaldiscs'):
|
||||
tagstr = real_name.lower() + 'number'
|
||||
try:
|
||||
if tagstr in metadata:
|
||||
tags[real_name] = metadata[tagstr]
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
del tags[real_name]
|
||||
if real_name in tags:
|
||||
del tags[real_name]
|
||||
|
||||
def _get_tag_name(self, name):
|
||||
if name.startswith('lyrics:'):
|
||||
|
||||
@@ -219,6 +219,17 @@ class CommonTests:
|
||||
self.assertIn('~rating', original_metadata.keys())
|
||||
self.assertNotIn('~rating', new_metadata.keys())
|
||||
|
||||
@skipUnlessTestfile
|
||||
def test_delete_non_existant_tags(self):
|
||||
metadata = Metadata()
|
||||
metadata.delete('albumartist')
|
||||
metadata.delete('performer:drums')
|
||||
metadata.delete('totaltracks')
|
||||
new_metadata = save_and_load_metadata(self.filename, metadata)
|
||||
self.assertNotIn('albumartist', new_metadata.keys())
|
||||
self.assertNotIn('performer:drums', new_metadata.keys())
|
||||
self.assertNotIn('totaltracks', new_metadata.keys())
|
||||
|
||||
@skipUnlessTestfile
|
||||
def test_delete_complex_tags(self):
|
||||
metadata = Metadata()
|
||||
|
||||
Reference in New Issue
Block a user