From 0d128d40d5df5e560e5243fa476ec4bc9a14b40e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= Date: Wed, 29 Aug 2018 16:57:05 +0200 Subject: [PATCH] Add support for Opus files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This adds support for reading metadata from Opus files. The metadata config is copied from OggVorbis with just the 'track' field name changed. Also make sure get_audio_file_data() in music/utils.py doesn't crash if no bitrate information is set, since mutagen doesn't add a bitrate to Opus info objects. Fixes #244. Signed-off-by: Toke Høiland-Jørgensen --- api/funkwhale_api/music/metadata.py | 16 ++++++++++++++++ api/funkwhale_api/music/utils.py | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/api/funkwhale_api/music/metadata.py b/api/funkwhale_api/music/metadata.py index 9aa08820a..4c754ae05 100644 --- a/api/funkwhale_api/music/metadata.py +++ b/api/funkwhale_api/music/metadata.py @@ -114,6 +114,22 @@ VALIDATION = { } CONF = { + "OggOpus": { + "getter": lambda f, k: f[k][0], + "fields": { + "track_number": { + "field": "TRACKNUMBER", + "to_application": convert_track_number, + }, + "title": {}, + "artist": {}, + "album": {}, + "date": {"field": "date", "to_application": get_date}, + "musicbrainz_albumid": {}, + "musicbrainz_artistid": {}, + "musicbrainz_recordingid": {"field": "musicbrainz_trackid"}, + }, + }, "OggVorbis": { "getter": lambda f, k: f[k][0], "fields": { diff --git a/api/funkwhale_api/music/utils.py b/api/funkwhale_api/music/utils.py index 30f62f348..92187d69a 100644 --- a/api/funkwhale_api/music/utils.py +++ b/api/funkwhale_api/music/utils.py @@ -54,7 +54,7 @@ def get_audio_file_data(f): if not data: return d = {} - d["bitrate"] = data.info.bitrate + d["bitrate"] = getattr(data.info, "bitrate", 0) d["length"] = data.info.length return d