PICARD-2135: Fixed overwriting and deleting WOAR frame

This commit is contained in:
Philipp Wolfer
2021-03-09 09:16:29 +01:00
parent 53d8b50d9b
commit 09d771906f
2 changed files with 24 additions and 1 deletions

View File

@@ -489,6 +489,7 @@ class ID3File(File):
else:
tags.add(id3.WCOP(url=values[0]))
elif frameid == 'WOAR' and valid_urls:
tags.delall('WOAR')
for url in values:
tags.add(id3.WOAR(url=url))
elif frameid.startswith('T') or frameid == 'MVNM':
@@ -580,7 +581,7 @@ class ID3File(File):
if frame.FrameID == 'POPM' and frame.email == user_email:
del tags[key]
elif real_name in self.__translate:
del tags[real_name]
tags.delall(real_name)
elif name.lower() in self.__rtranslate_freetext_ci:
delall_ci(tags, 'TXXX:' + self.__rtranslate_freetext_ci[name.lower()])
elif real_name in self.__translate_freetext:

View File

@@ -454,6 +454,28 @@ class CommonId3Tests:
self.assertIn('http://example.com/1', loaded_licenses)
self.assertIn('http://example.com/2', loaded_licenses)
@skipUnlessTestfile
def test_woar_not_duplicated(self):
metadata = Metadata({
'website': 'http://example.com/1'
})
loaded_metadata = save_and_load_metadata(self.filename, metadata)
self.assertEqual(metadata['website'], loaded_metadata['website'])
metadata['website'] = 'http://example.com/2'
loaded_metadata = save_and_load_metadata(self.filename, metadata)
self.assertEqual(metadata['website'], loaded_metadata['website'])
@skipUnlessTestfile
def test_woar_delete(self):
metadata = Metadata({
'website': 'http://example.com/1'
})
loaded_metadata = save_and_load_metadata(self.filename, metadata)
self.assertEqual(metadata['website'], loaded_metadata['website'])
del metadata['website']
loaded_metadata = save_and_load_metadata(self.filename, metadata)
self.assertNotIn('website', loaded_metadata)
class MP3Test(CommonId3Tests.Id3TestCase):
testfile = 'test.mp3'