From 910b7fbd55b53eda0ec1756066ebda932a1deebc Mon Sep 17 00:00:00 2001 From: Sambhav Kothari Date: Sun, 25 Dec 2016 20:56:01 +0530 Subject: [PATCH] Add support for more complex deletions --- picard/formats/asf.py | 14 +++++++------- picard/formats/vorbis.py | 6 ++++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/picard/formats/asf.py b/picard/formats/asf.py index abd7e0e58..2c87e89d1 100644 --- a/picard/formats/asf.py +++ b/picard/formats/asf.py @@ -192,8 +192,8 @@ class ASFFile(File): cover = [] for image in metadata.images_to_be_saved_to_tags: tag_data = pack_image(image.mimetype, image.data, - image_type_as_id3_num(image.maintype), - image.comment) + image_type_as_id3_num(image.maintype), + image.comment) cover.append(ASFByteArrayAttribute(tag_data)) if cover: file.tags['WM/Picture'] = cover @@ -213,11 +213,9 @@ class ASFFile(File): for tag in metadata.deleted_tags: real_name = self._get_tag_name(tag) if real_name and real_name in file.tags: - if tag == 'totaldiscs': - try: - file.tags[real_name] = map(unicode, metadata['discnumber']) - except: - pass + if tag in ('totaldiscs', 'totaltracks'): + metadata_name = tag[5:-1] + file.tags[real_name] = map(unicode, metadata[metadata_name]) else: del file.tags[real_name] @@ -232,5 +230,7 @@ class ASFFile(File): return 'lyrics' elif name == 'totaldiscs': return self.__TRANS['discnumber'] + elif name == 'totaltracks': + return self.__TRANS['tracknumber'] else: return self.__TRANS[name] diff --git a/picard/formats/vorbis.py b/picard/formats/vorbis.py index d91e1ba00..6993ac212 100644 --- a/picard/formats/vorbis.py +++ b/picard/formats/vorbis.py @@ -220,6 +220,8 @@ class VCommentFile(File): if re.search(tag_type, item): file.tags.get(real_name).remove(item) else: + if tag in ('totaldiscs', 'totaltracks'): + del file.tags[tag] del file.tags[real_name] kwargs = {} @@ -244,6 +246,10 @@ class VCommentFile(File): return name.split(':', 1)[0] elif name == 'musicip_fingerprint': return 'fingerprint' + elif name == 'totaltracks': + return 'tracktotal' + elif name == 'totaldiscs': + return 'disctotal' elif name in self.__rtranslate: return self.__rtranslate[name] else: