Fix audio thumbnailing once and for all.

This change adds a Python 3-specific audio thumbnailer that side-steps the
bundled Python 2-only `audioprocessing` module. Instead of an audio spectrogram,
Python 3 users will get a static image.

This also allows me to remove my ineffective customisations to
`audioprocessing`, returning it to the upstream version as should always be the
case for vendored code in "extlib".
This commit is contained in:
Ben Sturmfels
2020-04-01 16:52:05 +11:00
parent ad3a0aea83
commit 1038aea822
2 changed files with 25 additions and 29 deletions

View File

@@ -43,32 +43,7 @@ def get_sound_type(input_filename):
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
print "WARNING: audiolab is not installed so wav2png will not work"
import subprocess
class AudioProcessingException(Exception):