diff --git a/spa/management/commands/waveforms.py b/spa/management/commands/waveforms.py index 983cc4f..69458ab 100644 --- a/spa/management/commands/waveforms.py +++ b/spa/management/commands/waveforms.py @@ -1,26 +1,36 @@ import os -from dss import settings -from core.utils.waveform import generate_waveform + from django.core.management.base import NoArgsCommand + +from dss import settings + from spa.models.Mix import Mix +from core.tasks import create_waveform_task + class Command(NoArgsCommand): help = "Generate all outstanding waveforms" - def _generateWaveform(self, guid): - output_file = 'waveforms/%s.png' % guid - local_file = '%s/%s' % (settings.CACHE_ROOT, guid) - if os.path.isfile(local_file): - self._check_file(local_file, output_file) - def _check_file(self, local_file, output_file): - if os.path.isfile(os.path.join(settings.MEDIA_ROOT, local_file)): - file = os.path.join(settings.MEDIA_ROOT, output_file) - if not os.path.isfile(file): - print "Found missing waveform" - generate_waveform(local_file, file) + def _generateWaveform(self, mix): + fileName, extension = os.path.splitext(mix.local_file.name) + if extension == "" or extension == ".": + extension = ".mp3" + in_file = '%s/%s%s' % (settings.CACHE_ROOT, mix.uid, extension) + try: + if os.path.isfile(in_file): + create_waveform_task.delay(in_file=in_file, mix_uid=mix.uid) + else: + print "File %s not fou nd" % in_file + + except Exception, ex: + print "Error generating waveform: %s" % ex.message def handle(self, *args, **options): - pass + print "Scanning for missing waveforms" + unprocessed = Mix.objects.filter(waveform_generated=False) + for mix in unprocessed: + print "Generating waveform for mix %d" % mix.id + self._generateWaveform(mix) def handle_noargs(self, **options): print "Scanning for missing waveforms"