From ba566bebbc9d89088ca6812360b29149f1e93314 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Tue, 16 Jun 2026 14:16:25 +0200 Subject: [PATCH] switch download audiobooks views --- .../catalogue/audiobook_zip_readme.txt | 21 ++++++++----------- src/catalogue/urls.py | 5 ++--- src/catalogue/views.py | 13 +++++++++++- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/src/catalogue/templates/catalogue/audiobook_zip_readme.txt b/src/catalogue/templates/catalogue/audiobook_zip_readme.txt index eaa63a536..a674f316c 100644 --- a/src/catalogue/templates/catalogue/audiobook_zip_readme.txt +++ b/src/catalogue/templates/catalogue/audiobook_zip_readme.txt @@ -1,7 +1,8 @@ -Ten audiobook pochodzi z darmowej biblioteki internetowej Wolne Lektury. Znajdziesz w niej tysiące ebooków i audiobooków. -Wolne Lektury to projekt prowadzony przez fundację Wolne Lektury. Jesteśmy organizacją pozarządową. Działamy dzięki wsparciu darczyńców takich jak Ty. -Wspólnie możemy udostępnić kolejne książki. Wspieraj Wolne Lektury stałą comiesięczną kwotą. Dzięki temu wcześniej uzyskasz dostęp do wyjątkowych publikacji! Możesz też wesprzeć nas jednorazowo. -Wejdź na https://wolnelektury.pl/pomagam/ i dorzuć się do nowych nagrań. +Ten audiobook pochodzi z darmowej biblioteki internetowej Wolne Lektury. Znajdziesz w niej tysiące książek i audiobooków. + +Wolne Lektury nie mają stałego finansowania. +Aby stabilnie działać, potrzebujemy wsparcia darczyńców takich jak Ty. +Wejdź na https://wolnelektury.pl/pomagam/ by wesprzeć naszą działalność. Audiobooki Wolnych Lektur są udostępniane na wolnych licencjach, co oznacza, że możesz je swobodnie wykorzystywać, udostępniać i publikować pod warunkiem zachowania warunków licencji i zgodnie z Zasadami wykorzystania Wolnych Lektur: https://wolnelektury.pl/info/zasady-wykorzystania/ @@ -9,9 +10,7 @@ Audiobooki Wolnych Lektur są udostępniane na wolnych licencjach, co oznacza, {% endif %}{% if meta.cover_by %}Okładka na podstawie: {{ meta.cover_by|safe }}{% if meta.cover_source %}, {{ meta.cover_source }}{% endif %}. -{% endif %}Przekaż 1,5%, by wszystkie dzieciaki w Polsce miały dostęp do darmowych książek KRS 0000070056: https://wolnelektury.pl/info/wesprzyj-nas/ - -Zostań Przyjacielem Wolnych Lektur: https://wolnelektury.pl/pomagam/ +{% endif %}Przekaż 1,5% na Wolne Lektury: KRS 0000070056, https://wolnelektury.pl/info/wesprzyj-nas/ Słuchaj nas na YouTube: https://wolnelektury.pl/re/WolneLekturyYT/ @@ -19,12 +18,10 @@ Wolne Lektury ul. Marszałkowska 84/92 lok. 125 00-514 Warszawa tel./fax: +48 22 621 30 17 -e-mail:fundacja@wolnelektury.pl -www.fundacja.wolnelektury.pl +e-mail: fundacja@wolnelektury.pl +https://fundacja.wolnelektury.pl Organizacja Pożytku Publicznego Sąd Rejestrowy dla M.St. Warszawy w Warszawie, XII Wydział Gospodarczy -KRS 0000070056, NIP 952-18-77-087 - -Zapraszamy do wysłuchania audiobooków Wolnych Lektur: https://wolnelektury.pl/katalog/audiobooki/ +KRS 0000070056, NIP 952-18-77-087 diff --git a/src/catalogue/urls.py b/src/catalogue/urls.py index 724a7831f..37b298dca 100644 --- a/src/catalogue/urls.py +++ b/src/catalogue/urls.py @@ -50,9 +50,8 @@ urlpatterns = [ path('zip/pdf.zip', views.download_zip, {'file_format': 'pdf', 'slug': None}, 'download_zip_pdf'), path('zip/epub.zip', views.download_zip, {'file_format': 'epub', 'slug': None}, 'download_zip_epub'), path('zip/mobi.zip', views.download_zip, {'file_format': 'mobi', 'slug': None}, 'download_zip_mobi'), - path('zip/mp3/.zip', views.download_zip, {'media_format': 'mp3'}, 'download_zip_mp3'), - path('zip/_mp3.zip', views.stream_zip, {'media_format': 'mp3'}), - path('zip/ogg/.zip', views.download_zip, {'media_format': 'ogg'}, 'download_zip_ogg'), + path('zip/_mp3.zip', views.stream_zip, {'media_format': 'mp3'}, 'download_zip_mp3'), + path('zip/_ogg.zip', views.stream_zip, {'media_format': 'ogg'}, 'download_zip_ogg'), # Public interface. Do not change this URLs. path('lektura/.html', views.book_text, name='book_text'), diff --git a/src/catalogue/views.py b/src/catalogue/views.py index 487310663..8bb86c282 100644 --- 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, + bm.get_extra_info_json().get('license'), names + (slugify(bm.part_name),) if bm.part_name else names ) for child in book.get_children(): @@ -533,13 +534,23 @@ def stream_zip(request, media_format=None, slug=None): zs = ZipStream() - for i, (file_path, names) in enumerate(iterate_audiobooks(book, ())): + licenses = set() + for i, (file_path, lic, names) in enumerate(iterate_audiobooks(book, ())): index = i + 1 part_name = '_'.join(names) ext = file_path.rsplit('.', 1)[-1] zip_name = f'{book.slug}_{index:03d}_{part_name}'[:240] + '.' + ext 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 -- 2.20.1