Overhaul TOC generation and navigation

This commit is contained in:
BasioMeusPuga
2019-01-26 19:03:30 +05:30
parent 66746b4eaa
commit 739b84e9f4
11 changed files with 335 additions and 200 deletions

View File

@@ -83,11 +83,11 @@ class ParseCOMIC:
return None
def get_contents(self):
file_settings = {'images_only': True}
contents = [(f'Page {count + 1}', i) for count, i in enumerate(self.image_list)]
return contents, file_settings
image_number = len(self.image_list)
toc = [(1, f'Page {i + 1}', i + 1) for i in range(image_number)]
# Return toc, content, images_only
return toc, self.image_list, True
def is_image(filename):
valid_image_extensions = ['.png', '.jpg', '.bmp']

View File

@@ -63,6 +63,12 @@ class ParseEPUB:
self.book_ref.parse_toc()
self.book_ref.parse_chapters(temp_dir=self.extract_path)
file_settings = {
'images_only': False}
return self.book['book_list'], file_settings
toc = []
content = []
for count, i in enumerate(self.book['book_list']):
toc.append((1, i[0], count + 1))
content.append(i[1])
# Return toc, content, images_only
return toc, content, False

View File

@@ -60,6 +60,12 @@ class ParseFB2:
def get_contents(self):
os.makedirs(self.extract_path, exist_ok=True) # Manual creation is required here
self.book_ref.parse_chapters(temp_dir=self.extract_path)
file_settings = {
'images_only': False}
return self.book['book_list'], file_settings
toc = []
content = []
for count, i in enumerate(self.book['book_list']):
toc.append((1, i[0], count + 1))
content.append(i[1])
# Return toc, content, images_only
return toc, content, False

View File

@@ -73,24 +73,13 @@ class ParsePDF:
return tags # Fine if it returns None
def get_contents(self):
# Contents are to be returned as:
# Level, Title, Page Number
# Increasing the level number means the
# title is one level up in the tree
content = list(range(self.book.pageCount))
toc = self.book.getToC()
if not toc:
toc = [(1, f'Page {i + 1}', i + 1) for i in range(self.book.pageCount)]
# TODO
# Better parsing of TOC
# file_settings = {'images_only': True}
# contents = self.book.getToC()
# if not contents:
# contents = [
# (1, f'Page {i + 1}', i) for i in range(self.book.pageCount)]
# return contents, file_settings
file_settings = {'images_only': True}
contents = [(f'Page {i + 1}', i) for i in range(self.book.pageCount)]
return contents, file_settings
# Return toc, content, images_only
return toc, content, True
def render_pdf_page(page_data, for_cover=False):