fnp
/
wolnelektury.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add audio bulk-download
[wolnelektury.git]
/
src
/
catalogue
/
views.py
diff --git
a/src/catalogue/views.py
b/src/catalogue/views.py
index
4873106
..
8d32e64
100644
(file)
--- a/
src/catalogue/views.py
+++ b/
src/catalogue/views.py
@@
-526,6
+526,7
@@
def stream_zip(request, media_format=None, slug=None):
for bm in book.media.filter(type=media_format).order_by('index'):
yield (
bm.file.path,
for bm in book.media.filter(type=media_format).order_by('index'):
yield (
bm.file.path,
+ bm.get_extra_info_json().get('license'),
names + (slugify(bm.part_name),) if bm.part_name else names
)
for child in book.get_children():
names + (slugify(bm.part_name),) if bm.part_name else names
)
for child in book.get_children():
@@
-533,13
+534,30
@@
def stream_zip(request, media_format=None, slug=None):
zs = ZipStream()
zs = ZipStream()
- for i, (file_path, names) in enumerate(iterate_audiobooks(book, ())):
+ audiobook_list = list(iterate_audiobooks(book, ()))
+
+ licenses = set()
+ for i, (file_path, lic, names) in enumerate(audiobook_list):
index = i + 1
part_name = '_'.join(names)
index = i + 1
part_name = '_'.join(names)
+ if part_name:
+ part_name = '_' + part_name
ext = file_path.rsplit('.', 1)[-1]
ext = file_path.rsplit('.', 1)[-1]
- zip_name = f'{book.slug}_{index:03d}_{part_name}'[:240] + '.' + ext
+ if len(audiobook_list) > 1:
+ zip_name = f'{book.slug}_{index:03d}{part_name}'[:240] + '.' + ext
+ else:
+ zip_name = book.slug[:240] + '.' + ext
zs.add_path(file_path, zip_name)
zs.add_path(file_path, zip_name)
+ lic_name = constants.LICENSES.get(lic, {}).get('locative')
+ if lic_name:
+ licenses.add(lic_name)
+
+ readme = render_to_string('catalogue/audiobook_zip_readme.txt', {
+ 'licenses': licenses,
+ })
+ zs.add(readme, 'informacje.txt')
+
response = StreamingHttpResponse(zs, content_type='application/zip')
response['Content-Disposition'] = f'attachment; filename={slug}_{media_format}.zip'
return response
response = StreamingHttpResponse(zs, content_type='application/zip')
response['Content-Disposition'] = f'attachment; filename={slug}_{media_format}.zip'
return response