book = models.ForeignKey('Book', related_name='media')
source_sha1 = models.CharField(null=True, blank=True, max_length=40, editable=False)
- def __unicode__(self):
+ def __str__(self):
return "%s (%s)" % (self.name, self.file.name.split("/")[-1])
class Meta:
remove_zip("%s_%s" % (self.book.slug, self.type))
extra_info = self.extra_info
- if isinstance(extra_info, basestring):
+ if isinstance(extra_info, str):
# Walkaround for weird jsonfield 'no-decode' optimization.
extra_info = json.loads(extra_info)
extra_info.update(self.read_meta())
artist_name = ', '.join(', '.join(tag.text) for tag in audio.getall('TPE1'))
director_name = ', '.join(', '.join(tag.text) for tag in audio.getall('TPE3'))
project = ", ".join([
- t.data for t in audio.getall('PRIV')
+ t.data.decode('utf-8') for t in audio.getall('PRIV')
if t.owner == 'wolnelektury.pl?project'])
funded_by = ", ".join([
- t.data for t in audio.getall('PRIV')
+ t.data.decode('utf-8') for t in audio.getall('PRIV')
if t.owner == 'wolnelektury.pl?funded_by'])
except MutagenError:
pass
if filetype == 'mp3':
try:
audio = id3.ID3(filepath)
- return [t.data for t in audio.getall('PRIV')
+ return [t.data.decode('utf-8') for t in audio.getall('PRIV')
if t.owner == 'wolnelektury.pl?flac_sha1'][0]
except (MutagenError, IndexError):
return None
return None
else:
return None
+
+ @property
+ def director(self):
+ return self.extra_info.get('director_name', None)
+
+ @property
+ def artist(self):
+ return self.extra_info.get('artist_name', None)
+
+ def file_url(self):
+ return self.file.url