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()