mirror of
https://github.com/fergalmoran/picard.git
synced 2026-01-07 17:14:55 +00:00
PICARD-1413: Explicitly mark compilation tag as deleted
Mark compilation tag as deleted if it does not apply instead of sneakily removing it only for ID3.
This commit is contained in:
committed by
Philipp Wolfer
parent
c31e2886ea
commit
7a359d5786
@@ -341,6 +341,8 @@ class Album(DataObject, Item):
|
||||
artists.add(tm["artist"])
|
||||
if va:
|
||||
tm["compilation"] = "1"
|
||||
else:
|
||||
tm.delete("compilation")
|
||||
if discpregap:
|
||||
tm["~discpregap"] = "1"
|
||||
|
||||
|
||||
@@ -367,7 +367,6 @@ class ID3File(File):
|
||||
tmcl = mutagen.id3.TMCL(encoding=encoding, people=[])
|
||||
tipl = mutagen.id3.TIPL(encoding=encoding, people=[])
|
||||
|
||||
tags.delall('TCMP')
|
||||
for name, values in metadata.rawitems():
|
||||
values = [id3text(v, encoding) for v in values]
|
||||
name = id3text(name, encoding)
|
||||
|
||||
@@ -206,6 +206,16 @@ class CommonTests:
|
||||
for tag in self.unsupported_tags:
|
||||
self.assertTrue(tag not in loaded_metadata, '%s: %r != None' % (tag, loaded_metadata[tag]))
|
||||
|
||||
@skipUnlessTestfile
|
||||
def test_preserve_unchanged_tags(self):
|
||||
metadata = Metadata()
|
||||
for (key, value) in self.tags.items():
|
||||
metadata[key] = value
|
||||
save_metadata(self.filename, metadata)
|
||||
loaded_metadata = save_and_load_metadata(self.filename, Metadata())
|
||||
for (key, value) in self.tags.items():
|
||||
self.assertEqual(loaded_metadata[key], value, '%s: %r != %r' % (key, loaded_metadata[key], value))
|
||||
|
||||
@skipUnlessTestfile
|
||||
def test_delete_simple_tags(self):
|
||||
metadata = Metadata()
|
||||
@@ -480,20 +490,9 @@ class CommonTests:
|
||||
self.assertFalse('TXXX:Work' in raw_metadata)
|
||||
self.assertTrue('TXXX:WORK' in raw_metadata)
|
||||
|
||||
@skipUnlessTestfile
|
||||
def test_preserve_performance_tags(self):
|
||||
metadata = Metadata()
|
||||
metadata['engineer'] = 'Foo'
|
||||
metadata['performer:drums'] = 'Foo'
|
||||
save_and_load_metadata(self.filename, metadata)
|
||||
new_metadata = save_and_load_metadata(self.filename, Metadata())
|
||||
self.assertEqual('Foo', new_metadata['engineer'])
|
||||
self.assertEqual('Foo', new_metadata['performer:drums'])
|
||||
|
||||
@skipUnlessTestfile
|
||||
def test_preserve_performance_tags_v23(self):
|
||||
def test_preserve_unchanged_tags_v23(self):
|
||||
config.setting['write_id3v23'] = True
|
||||
self.test_preserve_performance_tags()
|
||||
self.test_preserve_unchanged_tags()
|
||||
|
||||
|
||||
class FLACTest(CommonTests.FormatsTest):
|
||||
|
||||
Reference in New Issue
Block a user