Work around lack of scikits.audiolab support on Python 3.

This commit is contained in:
Ben Sturmfels 2019-09-12 19:58:32 +10:00
parent 8f18381bbc
commit 97dcfe3725
No known key found for this signature in database
GPG Key ID: 023C05E2C9C068F0
2 changed files with 29 additions and 1 deletions

View File

@ -131,10 +131,13 @@ To install these on Debianoid systems, run::
not compile it with alsa support. Alsa support is not necessary for the GNU
MediaGoblin application.
Then install ``scikits.audiolab`` for the spectrograms::
If you're running Python 2, install ``scikits.audiolab`` for the spectrograms::
./bin/pip install scikits.audiolab
Audio spectrograms are currently not available on Python 3, since scikits.audiolab
does not provide Python 3 support.
Add ``[[mediagoblin.media_types.audio]]`` under the ``[plugins]`` section in your
``mediagoblin.ini`` and restart MediaGoblin.

View File

@ -44,6 +44,31 @@ try:
import scikits.audiolab as audiolab
except ImportError:
print("WARNING: audiolab is not installed so wav2png will not work")
# Hack to prevent errors when uploading audio files. The issue is that
# scikits.audiolab does not support Python 3. By replacing it with a mock
# implementation here, we can accept audio files, but we won't get the nice
# waveform image.
import six
if six.PY3:
class MockSndfile(object):
def __init__(self, *args, **kwargs):
self.nframes = 0
self.channels = 1
self.samplerate = 44100
def read_frames(self, *args):
return []
def seek(self, *args):
return
def close(self):
return
import unittest.mock as mock
audiolab = mock.Mock()
audiolab.Sndfile = MockSndfile
import subprocess
class AudioProcessingException(Exception):