Files
dss.api/spa/management/commands/processmix.py
2016-09-23 00:21:02 +01:00

32 lines
1.2 KiB
Python

from django.core.management.base import NoArgsCommand, CommandError
from django.template.defaultfilters import slugify
from core.utils.audio import Mp3FileNotFoundException
from core.utils.audio.mp3 import mp3_length
from core.utils.url import unique_slugify
from spa.models import Mix
class Command(NoArgsCommand):
help = "Updates audio files with their durations"
def handle(self, *args, **options):
try:
candidates = Mix.objects.all()
for mix in candidates:
try:
if mix.duration is None:
print("Finding duration for: %s" % mix.title)
length = mp3_length(mix.get_absolute_path())
print("\tLength: %d" % length)
mix.duration = length
if mix.slug == 'Invalid':
print("Slugifying mix: %s" % mix.title)
mix.slug = unique_slugify(mix, mix.title)
print("\tNew title: %s" % mix.slug)
mix.save()
except Mp3FileNotFoundException as me:
mix.delete()
print(me.message)
except Exception as ex:
raise CommandError(ex.message)