From 6ff8eac7847187656d2ef93bd0f3025c9c7d332e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Lalinsk=C3=BD?= Date: Fri, 12 Oct 2012 20:30:57 +0200 Subject: [PATCH] Add support for Opus files (needs dev version of Mutagen) http://tickets.musicbrainz.org/browse/PICARD-289 --- picard/formats/__init__.py | 4 ++++ picard/formats/vorbis.py | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/picard/formats/__init__.py b/picard/formats/__init__.py index 0a1ef0399..6ac9915f4 100644 --- a/picard/formats/__init__.py +++ b/picard/formats/__init__.py @@ -164,11 +164,15 @@ from picard.formats.vorbis import ( OggSpeexFile, OggVorbisFile, OggAudioFile, + OggOpusFile, + with_opus, ) register_format(FLACFile) register_format(OggFLACFile) register_format(OggSpeexFile) register_format(OggVorbisFile) +if with_opus: + register_format(OggOpusFile) register_format(OggAudioFile) try: diff --git a/picard/formats/vorbis.py b/picard/formats/vorbis.py index 88746d71d..c436a73b3 100644 --- a/picard/formats/vorbis.py +++ b/picard/formats/vorbis.py @@ -24,6 +24,12 @@ import mutagen.oggflac import mutagen.oggspeex import mutagen.oggtheora import mutagen.oggvorbis +try: + from mutagen.oggopus import OggOpus + with_opus = True +except ImportError: + OggOpus = None + with_opus = False from picard.file import File from picard.metadata import Metadata from picard.util import encode_filename, sanitize_date @@ -203,6 +209,15 @@ class OggVorbisFile(VCommentFile): super(OggVorbisFile, self)._info(metadata, file) metadata['~format'] = self.NAME +class OggOpusFile(VCommentFile): + """Ogg Opus file.""" + EXTENSIONS = [".opus"] + NAME = "Ogg Opus" + _File = OggOpus + def _info(self, metadata, file): + super(OggOpusFile, self)._info(metadata, file) + metadata['~format'] = self.NAME + def OggAudioFile(filename): """Generic Ogg audio file.""" options = [OggFLACFile, OggSpeexFile, OggVorbisFile]