﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	resolution	keywords	cc	parents
5467	Python 3: Audio upload fails due to missing scikits.audiolab	Ben Sturmfels		"As noted in #813, there's no Python 3 version of `scikits.audiolab`; a required dependency for the current audio plugin to work. Uploading without scikits.audiolab gives the below backtrace.

While we can't easily solve the missing Python 3 dependency, there's no need for the upload to fail entirely, since `scikits.audiolab` is (I think) only used for generating the spectrogram thumbnail and background image.

{{{
2016-08-12 20:37:27,956 ERROR   [waitress] Exception when serving /submit/
Traceback (most recent call last):
  File ""/home/ben/work/ws/mediagoblin/local/lib/python3.4/site-packages/waitress-1.0a2-py3.4.egg/waitress/channel.py"", line 338, in service
    task.service()
  File ""/home/ben/work/ws/mediagoblin/local/lib/python3.4/site-packages/waitress-1.0a2-py3.4.egg/waitress/task.py"", line 169, in service
    self.execute()
  File ""/home/ben/work/ws/mediagoblin/local/lib/python3.4/site-packages/waitress-1.0a2-py3.4.egg/waitress/task.py"", line 399, in execute
    app_iter = self.channel.server.application(env, start_response)
  File ""/home/ben/work/ws/mediagoblin/mediagoblin/app.py"", line 342, in __call__
    return self.call_backend(environ, start_response)
  File ""/home/ben/work/ws/mediagoblin/local/lib/python3.4/site-packages/Werkzeug-0.11.10-py3.4.egg/werkzeug/wsgi.py"", line 599, in __call__
    return self.app(environ, start_response)
  File ""/home/ben/work/ws/mediagoblin/mediagoblin/app.py"", line 276, in call_backend
    return self._finish_call_backend(request, environ, start_response)
  File ""/home/ben/work/ws/mediagoblin/mediagoblin/app.py"", line 318, in _finish_call_backend
    response = controller(request)
  File ""/home/ben/work/ws/mediagoblin/mediagoblin/decorators.py"", line 47, in wrapper
    return controller(request, *args, **kwargs)
  File ""/home/ben/work/ws/mediagoblin/mediagoblin/decorators.py"", line 74, in new_controller_func
    return controller(request, *args, **kwargs)
  File ""/home/ben/work/ws/mediagoblin/mediagoblin/decorators.py"", line 47, in wrapper
    return controller(request, *args, **kwargs)
  File ""/home/ben/work/ws/mediagoblin/mediagoblin/decorators.py"", line 74, in new_controller_func
    return controller(request, *args, **kwargs)
  File ""/home/ben/work/ws/mediagoblin/mediagoblin/decorators.py"", line 103, in wrapper
    return controller(request, *args, **kwargs)
  File ""/home/ben/work/ws/mediagoblin/mediagoblin/submit/views.py"", line 79, in submit_start
    urlgen=request.urlgen)
  File ""/home/ben/work/ws/mediagoblin/mediagoblin/submit/lib.py"", line 210, in submit_media
    run_process_media(entry, feed_url)
  File ""/home/ben/work/ws/mediagoblin/mediagoblin/submit/lib.py"", line 259, in run_process_media
    task_id=entry.queued_task_id)
  File ""/home/ben/work/ws/mediagoblin/local/lib/python3.4/site-packages/celery-4.0.0rc3-py3.4.egg/celery/app/task.py"", line 508, in apply_async
    link=link, link_error=link_error, **options)
  File ""/home/ben/work/ws/mediagoblin/local/lib/python3.4/site-packages/celery-4.0.0rc3-py3.4.egg/celery/app/task.py"", line 715, in apply
    ret = tracer(task_id, args, kwargs, request)
  File ""/home/ben/work/ws/mediagoblin/local/lib/python3.4/site-packages/celery-4.0.0rc3-py3.4.egg/celery/app/trace.py"", line 372, in trace_task
    I, R, state, retval = on_error(task_request, exc, uuid)
  File ""/home/ben/work/ws/mediagoblin/local/lib/python3.4/site-packages/celery-4.0.0rc3-py3.4.egg/celery/app/trace.py"", line 358, in trace_task
    R = retval = fun(*args, **kwargs)
  File ""/home/ben/work/ws/mediagoblin/mediagoblin/processing/task.py"", line 101, in run
    processor.process(**reprocess_info)
  File ""/home/ben/work/ws/mediagoblin/mediagoblin/media_types/audio/processing.py"", line 260, in process
    self.create_spectrogram(max_width=medium_width, fft_size=fft_size)
  File ""/home/ben/work/ws/mediagoblin/mediagoblin/media_types/audio/processing.py"", line 158, in create_spectrogram
    fft_size=fft_size)
  File ""/home/ben/work/ws/mediagoblin/mediagoblin/media_types/audio/transcoders.py"", line 63, in spectrogram
    numpy.hanning)
  File ""/home/ben/work/ws/mediagoblin/mediagoblin/media_types/audio/audioprocessing.py"", line 109, in __init__
    max_level = get_max_level(input_filename)
  File ""/home/ben/work/ws/mediagoblin/mediagoblin/media_types/audio/audioprocessing.py"", line 79, in get_max_level
    audio_file = audiolab.Sndfile(filename, 'r')
NameError: name 'audiolab' is not defined

}}}
"	defect	closed	major		programming	fixed	python3, small		
