diff --git a/picard/album.py b/picard/album.py index 7d0fc159a..4430440f7 100644 --- a/picard/album.py +++ b/picard/album.py @@ -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" diff --git a/picard/formats/id3.py b/picard/formats/id3.py index ebb5e05f8..108056f64 100644 --- a/picard/formats/id3.py +++ b/picard/formats/id3.py @@ -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) diff --git a/test/test_formats.py b/test/test_formats.py index a42e3cca9..9fae60654 100644 --- a/test/test_formats.py +++ b/test/test_formats.py @@ -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):