From 9e5d168e8de3d4806cc92a2fefaef9bc23359002 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Sat, 21 Nov 2020 12:03:38 +0100 Subject: [PATCH] Support AIFF file format Fixes #1243 --- api/funkwhale_api/music/metadata.py | 5 ++++- api/funkwhale_api/music/utils.py | 4 ++++ api/tests/music/test.aiff | Bin 0 -> 17208 bytes api/tests/music/test_metadata.py | 28 +++++++++++++++++++++++++++ changes/changelog.d/1243.enhancement | 1 + front/src/store/ui.js | 2 +- 6 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 api/tests/music/test.aiff create mode 100644 changes/changelog.d/1243.enhancement diff --git a/api/funkwhale_api/music/metadata.py b/api/funkwhale_api/music/metadata.py index ea914b89a..ffce86943 100644 --- a/api/funkwhale_api/music/metadata.py +++ b/api/funkwhale_api/music/metadata.py @@ -253,7 +253,7 @@ CONF = { "comment": {"field": "comment"}, }, }, - "MP3": { + "ID3": { "getter": get_id3_tag, "clean_pictures": clean_id3_pictures, "fields": { @@ -331,6 +331,9 @@ CONF = { }, } +CONF["MP3"] = CONF["ID3"] +CONF["AIFF"] = CONF["ID3"] + ALL_FIELDS = [ "position", "disc_number", diff --git a/api/funkwhale_api/music/utils.py b/api/funkwhale_api/music/utils.py index 17b5b7292..b863f416d 100644 --- a/api/funkwhale_api/music/utils.py +++ b/api/funkwhale_api/music/utils.py @@ -59,6 +59,10 @@ AUDIO_EXTENSIONS_AND_MIMETYPE = [ ("m4a", "audio/x-m4a"), ("flac", "audio/x-flac"), ("flac", "audio/flac"), + ("aif", "audio/aiff"), + ("aif", "audio/x-aiff"), + ("aiff", "audio/aiff"), + ("aiff", "audio/x-aiff"), ] EXTENSION_TO_MIMETYPE = {ext: mt for ext, mt in AUDIO_EXTENSIONS_AND_MIMETYPE} diff --git a/api/tests/music/test.aiff b/api/tests/music/test.aiff new file mode 100644 index 0000000000000000000000000000000000000000..2bf66fdadcf4c65ff7255fdd17f5e03501619c1c GIT binary patch literal 17208 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 xVrJu!Fi1Giz&Ogl41@$meg?)|R`*a)h