From 57c01c81608e3ec611092dc8e8947b4f8cd1e1b2 Mon Sep 17 00:00:00 2001 From: Fergal Moran Date: Wed, 15 May 2013 21:34:52 +0100 Subject: [PATCH] Hopefully stabilised uploads. --- core/utils/waveform.py | 2 +- dss/localsettings.initial.py | 2 +- spa/ajax.py | 10 ++++++++++ spa/models/mix.py | 3 +++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/core/utils/waveform.py b/core/utils/waveform.py index e2cae8c..fbda0f3 100644 --- a/core/utils/waveform.py +++ b/core/utils/waveform.py @@ -14,7 +14,7 @@ def generate_waveform(input_file, output_file): print "Finished decode" if os.path.exists(working_file): print "Starting waveform generation" - ret = subprocess.call(["/usr/local/bin/wav2png", "-w", "800", "-h", "120", "-o", output_file, working_file], stderr=subprocess.PIPE, stdout=subprocess.PIPE) + ret = subprocess.call([settings.DSS_WAVE_PATH, "-w", "800", "-h", "120", "-o", output_file, working_file], stderr=subprocess.PIPE, stdout=subprocess.PIPE) if os.path.isfile(output_file): os.remove(working_file) print "Generated waveform" diff --git a/dss/localsettings.initial.py b/dss/localsettings.initial.py index 5af8700..d63a811 100644 --- a/dss/localsettings.initial.py +++ b/dss/localsettings.initial.py @@ -5,7 +5,7 @@ DEBUG = True if os.name == 'posix': DSS_TEMP_PATH = "/tmp/" DSS_LAME_PATH = "lame" - DSS_WAVE_PATH = "waveformgen" + DSS_WAVE_PATH = "wav2png" else: DSS_TEMP_PATH = "d:\\temp\\" DSS_LAME_PATH = "D:\\Apps\\lame\\lame.exe" diff --git a/spa/ajax.py b/spa/ajax.py index 6a519d9..cdae570 100644 --- a/spa/ajax.py +++ b/spa/ajax.py @@ -4,6 +4,7 @@ import logging from django.conf.urls import url from django.contrib.auth.decorators import login_required from django.contrib.auth.models import User +from django.core.exceptions import ObjectDoesNotExist from django.db.models import get_model from django.http import HttpResponse from annoying.decorators import render_to @@ -20,6 +21,7 @@ from spa.models.comment import Comment from spa.models.mixlike import MixLike from core.serialisers import json from core.tasks import create_waveform_task +from core.utils.audio.mp3 import mp3_length logger = logging.getLogger(__name__) @@ -278,6 +280,14 @@ def upload_mix_file_handler(request): for chunk in f.chunks(): destination.write(chunk) try: + #update mix with duration + try: + mix = Mix.objects.get(uid=uid) + mix.duration = mp3_length(mix.get_absolute_path()) + mix.save() + except ObjectDoesNotExist: + pass + create_waveform_task.delay(in_file=in_file, mix_uid=uid) except Exception, ex: logger.exception("Error starting waveform generation task: %s" % ex.message) diff --git a/spa/models/mix.py b/spa/models/mix.py index 7643e3b..2599721 100644 --- a/spa/models/mix.py +++ b/spa/models/mix.py @@ -9,6 +9,7 @@ from django.db import models from django.db.models import Count from core.utils import url +from core.utils.audio.mp3 import mp3_length from core.utils.url import unique_slugify from spa.models.genre import Genre from spa.models.mixplay import MixPlay @@ -17,6 +18,7 @@ from dss import settings, localsettings from spa.models.userprofile import UserProfile from spa.models._basemodel import _BaseModel from core.utils.file import generate_save_file_name +from core.utils.audio.mp3 import mp3_length def mix_file_name(instance, filename): @@ -66,6 +68,7 @@ class Mix(_BaseModel): #Check for the unlikely event that the waveform has been generated if os.path.isfile(self.get_waveform_path()): self.waveform_generated = True + self.duration = mp3_length(self.get_absolute_path()) self.clean_image('mix_image', Mix) super(Mix, self).save(force_insert, force_update, using)