From 694cce380b42fcefd5fa0af1fada6b18b698150d Mon Sep 17 00:00:00 2001 From: Thomas Scholtes Date: Wed, 5 Feb 2014 00:54:48 +0100 Subject: [PATCH] Mutagen does not add empty tags See for example https://github.com/nex3/mutagen/blob/master/mutagen/mp4.py#L521 https://github.com/nex3/mutagen/blob/master/mutagen/asf.py#L52 --- beets/mediafile.py | 27 ++++----------------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/beets/mediafile.py b/beets/mediafile.py index b6d8b97bd..c32c938a9 100644 --- a/beets/mediafile.py +++ b/beets/mediafile.py @@ -300,17 +300,10 @@ class StorageStyle(object): def fetch(self, mediafile): """Retrieve the first raw value of this tag from the mediafile.""" try: - entry = mediafile.mgfile[self.key] + return mediafile.mgfile[self.key][0] except KeyError: return None - try: - return entry[0] - except: - log.error('Mutagen exception when reading field: %s' % - traceback.format_exc) - return None - def get(self, mediafile): """Retrieve the unpacked value of this field from the mediafile.""" data = self.fetch(mediafile) @@ -445,13 +438,8 @@ class MP4StorageStyle(StorageStyle): # Possibly index the list. if self.as_type == bool: return entry - - try: + else: return entry[0] - except: - log.error('Mutagen exception when reading field: %s' % - traceback.format_exc) - return None def store(self, mediafile, value): if self.as_type != bool: @@ -480,15 +468,9 @@ class MP3StorageStyle(StorageStyle): def fetch(self, mediafile): try: - frame = mediafile.mgfile[self.key] + return mediafile.mgfile[self.key].text[0] except KeyError: return None - try: - return frame.text[0] - except: - log.error('Mutagen exception when reading field: %s' % - traceback.format_exc) - return None def store(self, mediafile, value): frame = mutagen.id3.Frames[self.key](encoding=3, text=[value]) @@ -543,10 +525,9 @@ class MP3UFIDStorageStyle(MP3StorageStyle): def fetch(self, mediafile): try: - frame = mediafile.mgfile[self.key] + return mediafile.mgfile[self.key].data except KeyError: return None - return frame.data def store(self, mediafile, value): frames = mediafile.mgfile.tags.getall(self.key)