mirror of
https://github.com/fergalmoran/dss.api.git
synced 2025-12-27 19:58:47 +00:00
52 lines
1.9 KiB
Python
52 lines
1.9 KiB
Python
import os
|
|
from django.core.management.base import NoArgsCommand
|
|
from core.utils.waveform import generate_waveform
|
|
from dss import settings
|
|
from spa.models.mix import Mix
|
|
from . import helpers
|
|
|
|
class Command(NoArgsCommand):
|
|
|
|
def _convert_remote(self):
|
|
mixes = Mix.objects.exclude(waveform_version=2)
|
|
for mix in mixes:
|
|
# download audio file to temp path
|
|
print("Starting to process: %s" % mix.slug)
|
|
file_name = "/tmp/%s.mp3" % mix.uid
|
|
url = mix.get_stream_url()
|
|
print("Downloading: %s To: %s" % (url, file_name))
|
|
helpers.download_file(url, file_name)
|
|
if not os.path.isfile(file_name):
|
|
print("File failed to download")
|
|
else:
|
|
# process waveform
|
|
generate_waveform(file_name, )
|
|
# update mix.waveform_version to 2
|
|
|
|
# delete cached file
|
|
os.remove(file_name)
|
|
print("Done %s" % mix.slug)
|
|
|
|
def handle_noargs(self, **options):
|
|
try:
|
|
mixes = Mix.objects.exclude(waveform_version=2)
|
|
for mix in mixes:
|
|
from PIL import Image
|
|
import glob
|
|
|
|
output_file = '{0}/waveforms/{1}.{2}'.format(settings.MEDIA_ROOT, mix.uid, 'png')
|
|
if os.path.exists(output_file):
|
|
try:
|
|
print('Processing: %s' % mix.slug)
|
|
im = Image.open(output_file)
|
|
w, h = im.size
|
|
im.crop((0, 0, w, h / 2)).save(output_file)
|
|
except Exception:
|
|
print("Exception with image: %s" % output_file)
|
|
else:
|
|
print("Skipping: %s" % mix.slug)
|
|
mix.waveform_version = 2
|
|
mix.save()
|
|
pass
|
|
except Exception as ex:
|
|
print("Debug exception: %s" % ex) |