X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/c2e8051452fa55db096553cbe5ae622fc363d481..9574b970bdd6e28fc6178b736e8e17dfca15fd4e:/src/catalogue/models/bookmedia.py?ds=sidebyside diff --git a/src/catalogue/models/bookmedia.py b/src/catalogue/models/bookmedia.py index d1f2bf04d..010512ad2 100644 --- a/src/catalogue/models/bookmedia.py +++ b/src/catalogue/models/bookmedia.py @@ -13,7 +13,13 @@ from catalogue.fields import OverwriteStorage def _file_upload_to(i, _n): - return 'book/%(ext)s/%(name)s.%(ext)s' % {'ext': i.ext(), 'name': slugify(i.name)} + name = i.book.slug + if i.index: + name += f'_{i.index:03d}' + if i.part_name: + name += f'_' + slugify(i.part_name) + ext = i.ext() + return f'book/{ext}/{name}.{ext}' class BookMedia(models.Model): @@ -37,10 +43,10 @@ class BookMedia(models.Model): source_sha1 = models.CharField(null=True, blank=True, max_length=40, editable=False) def __str__(self): - return "%s (%s)" % (self.name, self.file.name.split("/")[-1]) + return self.file.name.split("/")[-1] class Meta: - ordering = ('type', 'name') + ordering = ('type', 'index') verbose_name = _('book media') verbose_name_plural = _('book media') app_label = 'catalogue' @@ -90,12 +96,13 @@ class BookMedia(models.Model): import mutagen from mutagen import id3 - artist_name = director_name = project = funded_by = '' + artist_name = director_name = project = funded_by = license = '' if self.type == 'mp3': try: audio = id3.ID3(self.file.path) artist_name = ', '.join(', '.join(tag.text) for tag in audio.getall('TPE1')) director_name = ', '.join(', '.join(tag.text) for tag in audio.getall('TPE3')) + license = ', '.join(tag.url for tag in audio.getall('WCOP')) project = ", ".join([ t.data.decode('utf-8') for t in audio.getall('PRIV') if t.owner == 'wolnelektury.pl?project']) @@ -109,6 +116,7 @@ class BookMedia(models.Model): audio = mutagen.File(self.file.path) artist_name = ', '.join(audio.get('artist', [])) director_name = ', '.join(audio.get('conductor', [])) + license = ', '.join(audio.get('license', [])) project = ", ".join(audio.get('project', [])) funded_by = ", ".join(audio.get('funded_by', [])) except (MutagenError, AttributeError): @@ -116,7 +124,7 @@ class BookMedia(models.Model): else: return {} return {'artist_name': artist_name, 'director_name': director_name, - 'project': project, 'funded_by': funded_by} + 'project': project, 'funded_by': funded_by, 'license': license} def ext(self): return self.formats[self.type].ext