1
0
mirror of https://github.com/janeczku/calibre-web synced 2024-12-30 03:50:31 +00:00

Allow the web reader to use KEPUB files and print file sizes

This commit allows the web reader to read the KEPUB (Kobo EPUB) files,
and also shows the file sizes. This is especially useful if you have
giant EPUB files with built-in audiobooks and media overlays.
This commit is contained in:
Aleksei Besogonov 2024-12-08 23:30:05 -08:00
parent ed600a9aeb
commit 01215aaa68
No known key found for this signature in database
GPG Key ID: 4BBFA4A7A13B161F
4 changed files with 14 additions and 8 deletions

View File

@ -199,7 +199,7 @@ def check_send_to_ereader(entry):
# Check if a reader is existing for any of the book formats, if not, return empty list, otherwise return
# list with supported formats
def check_read_formats(entry):
extensions_reader = {'TXT', 'PDF', 'EPUB', 'CBZ', 'CBT', 'CBR', 'DJVU', 'DJV'}
extensions_reader = {'TXT', 'PDF', 'EPUB', 'KEPUB', 'CBZ', 'CBT', 'CBR', 'DJVU', 'DJV'}
book_formats = list()
if len(entry.data):
for ele in iter(entry.data):

View File

@ -88,7 +88,7 @@
<ul class="dropdown-menu" aria-labelledby="read-in-browser">
{% for format in entry.reader_list %}
<li><a target="_blank"
href="{{ url_for('web.read_book', book_id=entry.id, book_format=format) }}">{{ format }}</a>
href="{{ url_for('web.read_book', book_id=entry.id, book_format=format) }}">{{ format }} ({{ entry.reader_list_sizes[format]|filesizeformat }})</a>
</li>
{% endfor %}
</ul>
@ -97,7 +97,7 @@
href="{{ url_for('web.read_book', book_id=entry.id, book_format=entry.reader_list[0]) }}"
id="readbtn" class="btn btn-primary" role="button"><span
class="glyphicon glyphicon-book"></span> {{ _('Read in Browser') }}
- {{ entry.reader_list[0] }}</a>
- {{ entry.reader_list[0] }} ({{ entry.reader_list_sizes[entry.reader_list[0]]|filesizeformat }})</a>
{% endif %}
</div>
{% endif %}

View File

@ -126,8 +126,8 @@
window.calibre = {
filePath: "{{ url_for('static', filename='js/libs/') }}",
cssPath: "{{ url_for('static', filename='css/') }}",
bookmarkUrl: "{{ url_for('web.set_bookmark', book_id=bookid, book_format='EPUB') }}",
bookUrl: "{{ url_for('web.serve_book', book_id=bookid, book_format='epub', anyname='file.epub') }}",
bookmarkUrl: "{{ url_for('web.set_bookmark', book_id=bookid, book_format=book_format or 'EPUB') }}",
bookUrl: "{{ url_for('web.serve_book', book_id=bookid, book_format=book_format, anyname='file.epub') }}",
bookmark: "{{ bookmark.bookmark_key if bookmark != None }}",
useBookmarks: "{{ current_user.is_authenticated | tojson }}"
};

View File

@ -1581,9 +1581,10 @@ def read_book(book_id, book_format):
bookmark = ub.session.query(ub.Bookmark).filter(and_(ub.Bookmark.user_id == int(current_user.id),
ub.Bookmark.book_id == book_id,
ub.Bookmark.format == book_format.upper())).first()
if book_format.lower() == "epub":
log.debug("Start epub reader for %d", book_id)
return render_title_template('read.html', bookid=book_id, title=book.title, bookmark=bookmark)
if book_format.lower() == "epub" or book_format.lower() == "kepub":
log.debug("Start [k]epub reader for %d", book_id)
return render_title_template('read.html', bookid=book_id, title=book.title, bookmark=bookmark,
book_format=book_format)
elif book_format.lower() == "pdf":
log.debug("Start pdf reader for %d", book_id)
return render_title_template('readpdf.html', pdffile=book_id, title=book.title)
@ -1644,6 +1645,11 @@ def show_book(book_id):
entry.email_share_list = check_send_to_ereader(entry)
entry.reader_list = check_read_formats(entry)
entry.reader_list_sizes = dict()
for data in entry.data:
if data.format.lower() in entry.reader_list:
entry.reader_list_sizes[data.format.lower()] = data.uncompressed_size
entry.audio_entries = []
for media_format in entry.data:
if media_format.format.lower() in constants.EXTENSIONS_AUDIO: