Remove spectrograms from Python 2 also [#5594].
authorBen Sturmfels <ben@sturm.com.au>
Tue, 28 Apr 2020 04:39:53 +0000 (14:39 +1000)
committerBen Sturmfels <ben@sturm.com.au>
Tue, 28 Apr 2020 08:19:57 +0000 (18:19 +1000)
For 0.10.0 we're removing specrograms entirely for reliability. This change only
disables spectrograms and updates install docs and Dockerfiles. We still need
to strip out all the spectrogram code and extlib/freesound/.

Dockerfile-debian-python2-sqlite
Dockerfile-debian-python3-sqlite
docs/source/siteadmin/media-types.rst
mediagoblin/media_types/audio/transcoders.py

index 6c53e9a816aad34429e103f9aa08ac0e554ba175..b055a434c7f737bf96fb19e58ba254c13afb32e1 100644 (file)
@@ -33,10 +33,7 @@ gstreamer1.0-plugins-bad \
 gstreamer1.0-plugins-base \
 gstreamer1.0-plugins-good \
 gstreamer1.0-plugins-ugly \
-libsndfile1-dev \
-python-gst-1.0 \
-python-numpy \
-python-scipy
+python-gst-1.0
 
 RUN apt-get install -y \
 gir1.2-gst-plugins-base-1.0 \
@@ -61,8 +58,6 @@ RUN ./bootstrap.sh
 RUN VIRTUALENV_FLAGS='--system-site-packages' ./configure --without-python3
 RUN make
 
-RUN ./bin/pip install scikits.audiolab
-
 RUN echo '[[mediagoblin.media_types.audio]]' >> mediagoblin.ini
 RUN echo '[[mediagoblin.media_types.video]]' >> mediagoblin.ini
 
index edbe4c814a758b5ccdc74bfad05fe72b256f1177..ea0639f8108949928a186a8ecb52829048226e37 100644 (file)
@@ -81,10 +81,7 @@ gstreamer1.0-plugins-bad \
 gstreamer1.0-plugins-base \
 gstreamer1.0-plugins-good \
 gstreamer1.0-plugins-ugly \
-libsndfile1-dev \
-python3-gst-1.0 \
-python3-numpy \
-python3-scipy
+python3-gst-1.0
 
 # Install video dependencies.
 RUN apt-get install -y \
@@ -142,9 +139,6 @@ RUN ./bootstrap.sh
 RUN VIRTUALENV_FLAGS='--system-site-packages' ./configure
 RUN make
 
-# Only supported on Python 2.
-# RUN ./bin/pip install scikits.audiolab
-
 # Only safe if being run on a clean git checkout. Otherwise you may have already
 # customised mediagoblin.ini to already install these.
 RUN echo '[[mediagoblin.media_types.audio]]' >> mediagoblin.ini
index 2e21c340eb3c6d11b292e27a5435566696eeb977..10656cd62c4fba9b3547fc6da3dac60cd0674b9a 100644 (file)
@@ -119,27 +119,16 @@ Audio
 =====
 
 To enable audio, install the GStreamer and python-gstreamer bindings (as well
-as whatever GStreamer plugins you want, good/bad/ugly), SciPy and NumPy are
-also needed for the audio spectrograms.
+as whatever GStreamer plugins you want, good/bad/ugly).
 To install these on Debianoid systems, run::
 
     sudo apt-get install python3-gst-1.0 gstreamer1.0-plugins-{base,bad,good,ugly} \
-    gstreamer1.0-libav python3-numpy python3-scipy libsndfile1-dev libasound2-dev
+    gstreamer1.0-libav
 
 .. note::
-    scikits.audiolab will display a warning every time it's imported if you do
-    not compile it with alsa support. Alsa support is not necessary for the GNU
-    MediaGoblin application.
-
-If you're running Python 2, install ``scikits.audiolab`` for the spectrograms::
-
-.. code-block:: bash
-
-    ./bin/pip install numpy==1.9.1
-    ./bin/pip install scikits.audiolab==0.10.2
-
-For Python 3 ``scikits.audiolab`` has no package yet. Instead of the cool
-specrogram image a static icon is used until we found a replacement. (#5467)
+   MediaGoblin previously generated spectrograms for uploaded audio. This
+   feature has been removed due to incompatibility with Python 3. We may
+   consider re-adding this feature in the future.
 
 Add ``[[mediagoblin.media_types.audio]]`` under the ``[plugins]`` section in your
 ``mediagoblin.ini`` and restart MediaGoblin.
index 445ede5103c2c3289259d331038daaa161cb07bb..a67f44291e013af8b46c8a8fcfd0f75d172471f3 100644 (file)
@@ -43,15 +43,14 @@ gi.require_version('Gst', '1.0')
 from gi.repository import GObject, Gst
 Gst.init(None)
 
-import numpy
-import six
-
 
+# TODO: Now unused - remove.
 class Python2AudioThumbnailer(object):
     def __init__(self):
         _log.info('Initializing {0}'.format(self.__class__.__name__))
 
     def spectrogram(self, src, dst, **kw):
+        import numpy
         # This third-party bundled module is Python 2-only.
         from mediagoblin.media_types.audio import audioprocessing
 
@@ -113,8 +112,8 @@ class Python2AudioThumbnailer(object):
         th.save(dst)
 
 
-class Python3AudioThumbnailer(Python2AudioThumbnailer):
-    """Dummy thumbnailer for Python 3.
+class DummyAudioThumbnailer(Python2AudioThumbnailer):
+    """A thumbnailer that just outputs a stock image.
 
     The Python package used for audio spectrograms, "scikits.audiolab", does not
     support Python 3 and is a constant source of problems for people installing
@@ -133,7 +132,9 @@ class Python3AudioThumbnailer(Python2AudioThumbnailer):
         img.save(dst)
 
 
-AudioThumbnailer = Python3AudioThumbnailer if six.PY3 else Python2AudioThumbnailer
+# Due to recurring problems with spectrograms under Python 2, and the fact we're
+# soon dropping Python 2 support, we're disabling spectrogram thumbnails. See #5594.
+AudioThumbnailer = DummyAudioThumbnailer
 
 
 class AudioTranscoder(object):