- Author:
- sbaechler
- Posted:
- September 22, 2011
- Language:
- Python
- Version:
- 1.3
- Score:
- 0 (after 0 ratings)
This code allows you to upload a mp3 to the Admin Frontend. The ID3 tags are automatically read out and filled in to the according fields.
This should work for other filetypes as well. As long as they have an id3 tag.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | from mutagen.easyid3 import EasyID3
from django.utils.translation import ugettext_lazy as _
from django.core.files.storage import default_storage
from django.core.files.base import ContentFile
class Song(models.Model):
file = models.FileField(_('File'), upload_to='medialibrary/songs', blank=True, null=True,
help_text=_('Upload an mp3 here and hit [Save and continue editing].<br />The song
infos are read out automatically.'))
artist = models.CharField(_('Artist'), max_length=50, blank=True)
album = models.CharField(_('Album'), max_length=50, blank=True)
title = models.CharField(_('Title'), max_length=50, blank=True)
def clean(self):
if self.file:
path = default_storage.save(os.path.join(settings.MEDIA_ROOT,'tmp','temp.mp3'),
ContentFile(self.file.file.read()))
id3 = EasyID3(os.path.join(settings.MEDIA_ROOT, path))
if not self.artist: self.artist = id3.get('artist', '')[0]
if not self.title: self.title = id3.get('title', '')[0]
if not self.album: self.album = id3.get('album', '')[0]
print id3.get('artist', '')
path = default_storage.delete(os.path.join(settings.MEDIA_ROOT,'tmp','temp.mp3'))
super(Song, self).clean()
|
More like this
- Serializer factory with Django Rest Framework by julio 5 months, 3 weeks ago
- Image compression before saving the new model / work with JPG, PNG by Schleidens 6 months, 2 weeks ago
- Help text hyperlinks by sa2812 7 months, 1 week ago
- Stuff by NixonDash 9 months, 2 weeks ago
- Add custom fields to the built-in Group model by jmoppel 11 months, 3 weeks ago
Comments
Nice snippet! How about albumart from mp3 to ImageField?
#
Please login first before commenting.