From 8a4ceded697200e95ebc9eeadfa9e816c319d96b Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Thu, 13 Sep 2018 14:46:28 +0200 Subject: [PATCH] Refactor: More DRY formats implementations --- picard/file.py | 7 ++++++- picard/formats/apev2.py | 12 ------------ picard/formats/id3.py | 17 +++-------------- picard/formats/vorbis.py | 20 -------------------- picard/formats/wav.py | 2 +- 5 files changed, 10 insertions(+), 48 deletions(-) diff --git a/picard/file.py b/picard/file.py index 699a0d700..75ed5a842 100644 --- a/picard/file.py +++ b/picard/file.py @@ -63,6 +63,8 @@ class File(QtCore.QObject, Item): metadata_images_changed = QtCore.pyqtSignal() + NAME = None + UNDEFINED = -1 PENDING = 0 NORMAL = 1 @@ -549,7 +551,10 @@ class File(QtCore.QObject, Item): metadata['~channels'] = file.info.channels if hasattr(file.info, 'bits_per_sample') and file.info.bits_per_sample: metadata['~bits_per_sample'] = file.info.bits_per_sample - metadata['~format'] = self.__class__.__name__.replace('File', '') + if self.NAME: + metadata['~format'] = self.NAME + else: + metadata['~format'] = self.__class__.__name__.replace('File', '') self._add_path_to_metadata(metadata) def _add_path_to_metadata(self, metadata): diff --git a/picard/formats/apev2.py b/picard/formats/apev2.py index f6fb0d49b..164dd6e30 100644 --- a/picard/formats/apev2.py +++ b/picard/formats/apev2.py @@ -253,10 +253,6 @@ class WavPackFile(APEv2File): NAME = "WavPack" _File = mutagen.wavpack.WavPack - def _info(self, metadata, file): - super()._info(metadata, file) - metadata['~format'] = self.NAME - def _save_and_rename(self, old_filename, metadata): """Includes an additional check for WavPack correction files""" wvc_filename = old_filename.replace(".wv", ".wvc") @@ -292,10 +288,6 @@ class MonkeysAudioFile(APEv2File): NAME = "Monkey's Audio" _File = mutagen.monkeysaudio.MonkeysAudio - def _info(self, metadata, file): - super()._info(metadata, file) - metadata['~format'] = self.NAME - class TAKFile(APEv2File): @@ -303,7 +295,3 @@ class TAKFile(APEv2File): EXTENSIONS = [".tak"] NAME = "Tom's lossless Audio Kompressor" _File = tak.TAK - - def _info(self, metadata, file): - super()._info(metadata, file) - metadata['~format'] = self.NAME diff --git a/picard/formats/id3.py b/picard/formats/id3.py index 953cff71a..061d4e352 100644 --- a/picard/formats/id3.py +++ b/picard/formats/id3.py @@ -598,7 +598,7 @@ class MP3File(ID3File): _File = mutagen.mp3.MP3 def _get_file(self, filename): - return mutagen.mp3.MP3(filename, ID3=compatid3.CompatID3) + return self._File(filename, ID3=compatid3.CompatID3) def _info(self, metadata, file): super()._info(metadata, file) @@ -616,11 +616,7 @@ class TrueAudioFile(ID3File): _File = mutagen.trueaudio.TrueAudio def _get_file(self, filename): - return mutagen.trueaudio.TrueAudio(filename, ID3=compatid3.CompatID3) - - def _info(self, metadata, file): - super()._info(metadata, file) - metadata['~format'] = self.NAME + return self._File(filename, ID3=compatid3.CompatID3) class DSFFile(ID3File): @@ -631,11 +627,7 @@ class DSFFile(ID3File): _File = mutagen.dsf.DSF def _get_file(self, filename): - return mutagen.dsf.DSF(filename, known_frames=compatid3.known_frames) - - def _info(self, metadata, file): - super()._info(metadata, file) - metadata['~format'] = self.NAME + return self._File(filename, known_frames=compatid3.known_frames) def _get_tags(self, filename): file = self._get_file(filename) @@ -667,6 +659,3 @@ class AiffFile(DSFFile): EXTENSIONS = [".aiff", ".aif", ".aifc"] NAME = "Audio Interchange File Format (AIFF)" _File = mutagen.aiff.AIFF - - def _get_file(self, filename): - return mutagen.aiff.AIFF(filename, known_frames=compatid3.known_frames) diff --git a/picard/formats/vorbis.py b/picard/formats/vorbis.py index 7fc49e889..4539cef4d 100644 --- a/picard/formats/vorbis.py +++ b/picard/formats/vorbis.py @@ -298,10 +298,6 @@ class OggFLACFile(VCommentFile): NAME = "Ogg FLAC" _File = mutagen.oggflac.OggFLAC - def _info(self, metadata, file): - super()._info(metadata, file) - metadata['~format'] = self.NAME - class OggSpeexFile(VCommentFile): @@ -310,10 +306,6 @@ class OggSpeexFile(VCommentFile): NAME = "Speex" _File = mutagen.oggspeex.OggSpeex - def _info(self, metadata, file): - super()._info(metadata, file) - metadata['~format'] = self.NAME - class OggTheoraFile(VCommentFile): @@ -322,10 +314,6 @@ class OggTheoraFile(VCommentFile): NAME = "Ogg Theora" _File = mutagen.oggtheora.OggTheora - def _info(self, metadata, file): - super()._info(metadata, file) - metadata['~format'] = self.NAME - class OggVorbisFile(VCommentFile): @@ -334,10 +322,6 @@ class OggVorbisFile(VCommentFile): NAME = "Ogg Vorbis" _File = mutagen.oggvorbis.OggVorbis - def _info(self, metadata, file): - super()._info(metadata, file) - metadata['~format'] = self.NAME - class OggOpusFile(VCommentFile): @@ -346,10 +330,6 @@ class OggOpusFile(VCommentFile): NAME = "Ogg Opus" _File = mutagen.oggopus.OggOpus - def _info(self, metadata, file): - super()._info(metadata, file) - metadata['~format'] = self.NAME - def OggAudioFile(filename): """Generic Ogg audio file.""" diff --git a/picard/formats/wav.py b/picard/formats/wav.py index 0ea7a3091..02d6989ee 100644 --- a/picard/formats/wav.py +++ b/picard/formats/wav.py @@ -37,7 +37,7 @@ class WAVFile(File): metadata['~bits_per_sample'] = f.getsampwidth() * 8 metadata['~sample_rate'] = f.getframerate() metadata.length = 1000 * f.getnframes() // f.getframerate() - metadata['~format'] = 'Microsoft WAVE' + metadata['~format'] = self.NAME self._add_path_to_metadata(metadata) return metadata