mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
Removed top-level catalog TOC (EPUB/AZW3), Sections now at top level instead of next level
This commit is contained in:
parent
0b6a6b1804
commit
38d2389683
@ -2822,8 +2822,10 @@ class CatalogBuilder(object):
|
|||||||
|
|
||||||
ncx = soup.find('ncx')
|
ncx = soup.find('ncx')
|
||||||
navMapTag = Tag(soup, 'navMap')
|
navMapTag = Tag(soup, 'navMap')
|
||||||
navPointTag = Tag(soup, 'navPoint')
|
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
|
# Build a top-level navPoint for Kindle periodicals
|
||||||
|
navPointTag = Tag(soup, 'navPoint')
|
||||||
navPointTag['class'] = "periodical"
|
navPointTag['class'] = "periodical"
|
||||||
navPointTag['id'] = "title"
|
navPointTag['id'] = "title"
|
||||||
navPointTag['playOrder'] = self.play_order
|
navPointTag['playOrder'] = self.play_order
|
||||||
@ -2868,8 +2870,8 @@ class CatalogBuilder(object):
|
|||||||
cmiTag['id'] = "mastheadImage"
|
cmiTag['id'] = "mastheadImage"
|
||||||
cmiTag['src'] = "images/mastheadImage.gif"
|
cmiTag['src'] = "images/mastheadImage.gif"
|
||||||
navPointTag.insert(2,cmiTag)
|
navPointTag.insert(2,cmiTag)
|
||||||
|
|
||||||
navMapTag.insert(0,navPointTag)
|
navMapTag.insert(0,navPointTag)
|
||||||
|
|
||||||
ncx.insert(0,navMapTag)
|
ncx.insert(0,navMapTag)
|
||||||
self.ncx_soup = soup
|
self.ncx_soup = soup
|
||||||
|
|
||||||
@ -2895,7 +2897,10 @@ class CatalogBuilder(object):
|
|||||||
|
|
||||||
# --- Construct the 'Descriptions' section ---
|
# --- Construct the 'Descriptions' section ---
|
||||||
ncx_soup = self.ncx_soup
|
ncx_soup = self.ncx_soup
|
||||||
|
if self.generate_for_kindle_mobi:
|
||||||
body = ncx_soup.find("navPoint")
|
body = ncx_soup.find("navPoint")
|
||||||
|
else:
|
||||||
|
body = ncx_soup.find('navMap')
|
||||||
btc = len(body.contents)
|
btc = len(body.contents)
|
||||||
|
|
||||||
# Add the section navPoint
|
# Add the section navPoint
|
||||||
@ -3019,26 +3024,29 @@ class CatalogBuilder(object):
|
|||||||
current_series_list = self.format_ncx_text(current_series_list, dest="description")
|
current_series_list = self.format_ncx_text(current_series_list, dest="description")
|
||||||
series_by_letter.append(current_series_list)
|
series_by_letter.append(current_series_list)
|
||||||
|
|
||||||
soup = self.ncx_soup
|
ncx_soup = self.ncx_soup
|
||||||
output = "BySeries"
|
output = "BySeries"
|
||||||
body = soup.find("navPoint")
|
if self.generate_for_kindle_mobi:
|
||||||
|
body = ncx_soup.find("navPoint")
|
||||||
|
else:
|
||||||
|
body = ncx_soup.find('navMap')
|
||||||
btc = len(body.contents)
|
btc = len(body.contents)
|
||||||
|
|
||||||
# --- Construct the 'Books By Series' section ---
|
# --- Construct the 'Books By Series' section ---
|
||||||
navPointTag = Tag(soup, 'navPoint')
|
navPointTag = Tag(ncx_soup, 'navPoint')
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
navPointTag['class'] = "section"
|
navPointTag['class'] = "section"
|
||||||
navPointTag['id'] = "byseries-ID"
|
navPointTag['id'] = "byseries-ID"
|
||||||
navPointTag['playOrder'] = self.play_order
|
navPointTag['playOrder'] = self.play_order
|
||||||
self.play_order += 1
|
self.play_order += 1
|
||||||
navLabelTag = Tag(soup, 'navLabel')
|
navLabelTag = Tag(ncx_soup, 'navLabel')
|
||||||
textTag = Tag(soup, 'text')
|
textTag = Tag(ncx_soup, 'text')
|
||||||
textTag.insert(0, NavigableString(tocTitle))
|
textTag.insert(0, NavigableString(tocTitle))
|
||||||
navLabelTag.insert(0, textTag)
|
navLabelTag.insert(0, textTag)
|
||||||
nptc = 0
|
nptc = 0
|
||||||
navPointTag.insert(nptc, navLabelTag)
|
navPointTag.insert(nptc, navLabelTag)
|
||||||
nptc += 1
|
nptc += 1
|
||||||
contentTag = Tag(soup,"content")
|
contentTag = Tag(ncx_soup,"content")
|
||||||
contentTag['src'] = "content/%s.html#section_start" % (output)
|
contentTag['src'] = "content/%s.html#section_start" % (output)
|
||||||
navPointTag.insert(nptc, contentTag)
|
navPointTag.insert(nptc, contentTag)
|
||||||
nptc += 1
|
nptc += 1
|
||||||
@ -3082,14 +3090,14 @@ class CatalogBuilder(object):
|
|||||||
|
|
||||||
# Add *article* entries for each populated series title letter
|
# Add *article* entries for each populated series title letter
|
||||||
for (i,books) in enumerate(series_by_letter):
|
for (i,books) in enumerate(series_by_letter):
|
||||||
navPointByLetterTag = Tag(soup, 'navPoint')
|
navPointByLetterTag = Tag(ncx_soup, 'navPoint')
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
navPointByLetterTag['class'] = "article"
|
navPointByLetterTag['class'] = "article"
|
||||||
navPointByLetterTag['id'] = "%sSeries-ID" % (title_letters[i].upper())
|
navPointByLetterTag['id'] = "%sSeries-ID" % (title_letters[i].upper())
|
||||||
navPointTag['playOrder'] = self.play_order
|
navPointTag['playOrder'] = self.play_order
|
||||||
self.play_order += 1
|
self.play_order += 1
|
||||||
navLabelTag = Tag(soup, 'navLabel')
|
navLabelTag = Tag(ncx_soup, 'navLabel')
|
||||||
textTag = Tag(soup, 'text')
|
textTag = Tag(ncx_soup, 'text')
|
||||||
if len(title_letters[i])>1:
|
if len(title_letters[i])>1:
|
||||||
fmt_string = _(u"Series beginning with %s")
|
fmt_string = _(u"Series beginning with %s")
|
||||||
else:
|
else:
|
||||||
@ -3098,7 +3106,7 @@ class CatalogBuilder(object):
|
|||||||
(title_letters[i] if len(title_letters[i])>1 else title_letters[i])))
|
(title_letters[i] if len(title_letters[i])>1 else title_letters[i])))
|
||||||
navLabelTag.insert(0, textTag)
|
navLabelTag.insert(0, textTag)
|
||||||
navPointByLetterTag.insert(0,navLabelTag)
|
navPointByLetterTag.insert(0,navLabelTag)
|
||||||
contentTag = Tag(soup, 'content')
|
contentTag = Tag(ncx_soup, 'content')
|
||||||
#contentTag['src'] = "content/%s.html#%s_series" % (output, title_letters[i])
|
#contentTag['src'] = "content/%s.html#%s_series" % (output, title_letters[i])
|
||||||
if title_letters[i] == self.SYMBOLS:
|
if title_letters[i] == self.SYMBOLS:
|
||||||
contentTag['src'] = "content/%s.html#%s_series" % (output, self.SYMBOLS)
|
contentTag['src'] = "content/%s.html#%s_series" % (output, self.SYMBOLS)
|
||||||
@ -3108,7 +3116,7 @@ class CatalogBuilder(object):
|
|||||||
navPointByLetterTag.insert(1,contentTag)
|
navPointByLetterTag.insert(1,contentTag)
|
||||||
|
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
cmTag = Tag(soup, '%s' % 'calibre:meta')
|
cmTag = Tag(ncx_soup, '%s' % 'calibre:meta')
|
||||||
cmTag['name'] = "description"
|
cmTag['name'] = "description"
|
||||||
cmTag.insert(0, NavigableString(self.format_ncx_text(books, dest='description')))
|
cmTag.insert(0, NavigableString(self.format_ncx_text(books, dest='description')))
|
||||||
navPointByLetterTag.insert(2, cmTag)
|
navPointByLetterTag.insert(2, cmTag)
|
||||||
@ -3120,7 +3128,7 @@ class CatalogBuilder(object):
|
|||||||
body.insert(btc, navPointTag)
|
body.insert(btc, navPointTag)
|
||||||
btc += 1
|
btc += 1
|
||||||
|
|
||||||
self.ncx_soup = soup
|
self.ncx_soup = ncx_soup
|
||||||
|
|
||||||
def generate_ncx_by_title(self, tocTitle):
|
def generate_ncx_by_title(self, tocTitle):
|
||||||
""" Add Titles to the basic NCX file.
|
""" Add Titles to the basic NCX file.
|
||||||
@ -3144,26 +3152,29 @@ class CatalogBuilder(object):
|
|||||||
current_book_list = self.format_ncx_text(current_book_list, dest="description")
|
current_book_list = self.format_ncx_text(current_book_list, dest="description")
|
||||||
books_by_letter.append(current_book_list)
|
books_by_letter.append(current_book_list)
|
||||||
|
|
||||||
soup = self.ncx_soup
|
ncx_soup = self.ncx_soup
|
||||||
output = "ByAlphaTitle"
|
output = "ByAlphaTitle"
|
||||||
body = soup.find("navPoint")
|
if self.generate_for_kindle_mobi:
|
||||||
|
body = ncx_soup.find("navPoint")
|
||||||
|
else:
|
||||||
|
body = ncx_soup.find('navMap')
|
||||||
btc = len(body.contents)
|
btc = len(body.contents)
|
||||||
|
|
||||||
# --- Construct the 'Books By Title' section ---
|
# --- Construct the 'Books By Title' section ---
|
||||||
navPointTag = Tag(soup, 'navPoint')
|
navPointTag = Tag(ncx_soup, 'navPoint')
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
navPointTag['class'] = "section"
|
navPointTag['class'] = "section"
|
||||||
navPointTag['id'] = "byalphatitle-ID"
|
navPointTag['id'] = "byalphatitle-ID"
|
||||||
navPointTag['playOrder'] = self.play_order
|
navPointTag['playOrder'] = self.play_order
|
||||||
self.play_order += 1
|
self.play_order += 1
|
||||||
navLabelTag = Tag(soup, 'navLabel')
|
navLabelTag = Tag(ncx_soup, 'navLabel')
|
||||||
textTag = Tag(soup, 'text')
|
textTag = Tag(ncx_soup, 'text')
|
||||||
textTag.insert(0, NavigableString(tocTitle))
|
textTag.insert(0, NavigableString(tocTitle))
|
||||||
navLabelTag.insert(0, textTag)
|
navLabelTag.insert(0, textTag)
|
||||||
nptc = 0
|
nptc = 0
|
||||||
navPointTag.insert(nptc, navLabelTag)
|
navPointTag.insert(nptc, navLabelTag)
|
||||||
nptc += 1
|
nptc += 1
|
||||||
contentTag = Tag(soup,"content")
|
contentTag = Tag(ncx_soup,"content")
|
||||||
contentTag['src'] = "content/%s.html#section_start" % (output)
|
contentTag['src'] = "content/%s.html#section_start" % (output)
|
||||||
navPointTag.insert(nptc, contentTag)
|
navPointTag.insert(nptc, contentTag)
|
||||||
nptc += 1
|
nptc += 1
|
||||||
@ -3209,14 +3220,14 @@ class CatalogBuilder(object):
|
|||||||
|
|
||||||
# Add *article* entries for each populated title letter
|
# Add *article* entries for each populated title letter
|
||||||
for (i,books) in enumerate(books_by_letter):
|
for (i,books) in enumerate(books_by_letter):
|
||||||
navPointByLetterTag = Tag(soup, 'navPoint')
|
navPointByLetterTag = Tag(ncx_soup, 'navPoint')
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
navPointByLetterTag['class'] = "article"
|
navPointByLetterTag['class'] = "article"
|
||||||
navPointByLetterTag['id'] = "%sTitles-ID" % (title_letters[i].upper())
|
navPointByLetterTag['id'] = "%sTitles-ID" % (title_letters[i].upper())
|
||||||
navPointTag['playOrder'] = self.play_order
|
navPointTag['playOrder'] = self.play_order
|
||||||
self.play_order += 1
|
self.play_order += 1
|
||||||
navLabelTag = Tag(soup, 'navLabel')
|
navLabelTag = Tag(ncx_soup, 'navLabel')
|
||||||
textTag = Tag(soup, 'text')
|
textTag = Tag(ncx_soup, 'text')
|
||||||
if len(title_letters[i])>1:
|
if len(title_letters[i])>1:
|
||||||
fmt_string = _(u"Titles beginning with %s")
|
fmt_string = _(u"Titles beginning with %s")
|
||||||
else:
|
else:
|
||||||
@ -3225,7 +3236,7 @@ class CatalogBuilder(object):
|
|||||||
(title_letters[i] if len(title_letters[i])>1 else title_letters[i])))
|
(title_letters[i] if len(title_letters[i])>1 else title_letters[i])))
|
||||||
navLabelTag.insert(0, textTag)
|
navLabelTag.insert(0, textTag)
|
||||||
navPointByLetterTag.insert(0,navLabelTag)
|
navPointByLetterTag.insert(0,navLabelTag)
|
||||||
contentTag = Tag(soup, 'content')
|
contentTag = Tag(ncx_soup, 'content')
|
||||||
if title_letters[i] == self.SYMBOLS:
|
if title_letters[i] == self.SYMBOLS:
|
||||||
contentTag['src'] = "content/%s.html#%s_titles" % (output, self.SYMBOLS)
|
contentTag['src'] = "content/%s.html#%s_titles" % (output, self.SYMBOLS)
|
||||||
else:
|
else:
|
||||||
@ -3233,7 +3244,7 @@ class CatalogBuilder(object):
|
|||||||
navPointByLetterTag.insert(1,contentTag)
|
navPointByLetterTag.insert(1,contentTag)
|
||||||
|
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
cmTag = Tag(soup, '%s' % 'calibre:meta')
|
cmTag = Tag(ncx_soup, '%s' % 'calibre:meta')
|
||||||
cmTag['name'] = "description"
|
cmTag['name'] = "description"
|
||||||
cmTag.insert(0, NavigableString(self.format_ncx_text(books, dest='description')))
|
cmTag.insert(0, NavigableString(self.format_ncx_text(books, dest='description')))
|
||||||
navPointByLetterTag.insert(2, cmTag)
|
navPointByLetterTag.insert(2, cmTag)
|
||||||
@ -3245,7 +3256,7 @@ class CatalogBuilder(object):
|
|||||||
body.insert(btc, navPointTag)
|
body.insert(btc, navPointTag)
|
||||||
btc += 1
|
btc += 1
|
||||||
|
|
||||||
self.ncx_soup = soup
|
self.ncx_soup = ncx_soup
|
||||||
|
|
||||||
def generate_ncx_by_author(self, tocTitle):
|
def generate_ncx_by_author(self, tocTitle):
|
||||||
""" Add Authors to the basic NCX file.
|
""" Add Authors to the basic NCX file.
|
||||||
@ -3269,13 +3280,16 @@ class CatalogBuilder(object):
|
|||||||
current_author_list = self.format_ncx_text(current_author_list, dest="description")
|
current_author_list = self.format_ncx_text(current_author_list, dest="description")
|
||||||
master_author_list.append((current_author_list, current_letter))
|
master_author_list.append((current_author_list, current_letter))
|
||||||
|
|
||||||
soup = self.ncx_soup
|
ncx_soup = self.ncx_soup
|
||||||
HTML_file = "content/ByAlphaAuthor.html"
|
HTML_file = "content/ByAlphaAuthor.html"
|
||||||
body = soup.find("navPoint")
|
if self.generate_for_kindle_mobi:
|
||||||
|
body = ncx_soup.find("navPoint")
|
||||||
|
else:
|
||||||
|
body = ncx_soup.find('navMap')
|
||||||
btc = len(body.contents)
|
btc = len(body.contents)
|
||||||
|
|
||||||
# --- Construct the 'Books By Author' *section* ---
|
# --- Construct the 'Books By Author' *section* ---
|
||||||
navPointTag = Tag(soup, 'navPoint')
|
navPointTag = Tag(ncx_soup, 'navPoint')
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
navPointTag['class'] = "section"
|
navPointTag['class'] = "section"
|
||||||
file_ID = "%s" % tocTitle.lower()
|
file_ID = "%s" % tocTitle.lower()
|
||||||
@ -3283,14 +3297,14 @@ class CatalogBuilder(object):
|
|||||||
navPointTag['id'] = "%s-ID" % file_ID
|
navPointTag['id'] = "%s-ID" % file_ID
|
||||||
navPointTag['playOrder'] = self.play_order
|
navPointTag['playOrder'] = self.play_order
|
||||||
self.play_order += 1
|
self.play_order += 1
|
||||||
navLabelTag = Tag(soup, 'navLabel')
|
navLabelTag = Tag(ncx_soup, 'navLabel')
|
||||||
textTag = Tag(soup, 'text')
|
textTag = Tag(ncx_soup, 'text')
|
||||||
textTag.insert(0, NavigableString('%s' % tocTitle))
|
textTag.insert(0, NavigableString('%s' % tocTitle))
|
||||||
navLabelTag.insert(0, textTag)
|
navLabelTag.insert(0, textTag)
|
||||||
nptc = 0
|
nptc = 0
|
||||||
navPointTag.insert(nptc, navLabelTag)
|
navPointTag.insert(nptc, navLabelTag)
|
||||||
nptc += 1
|
nptc += 1
|
||||||
contentTag = Tag(soup,"content")
|
contentTag = Tag(ncx_soup,"content")
|
||||||
contentTag['src'] = "%s#section_start" % HTML_file
|
contentTag['src'] = "%s#section_start" % HTML_file
|
||||||
navPointTag.insert(nptc, contentTag)
|
navPointTag.insert(nptc, contentTag)
|
||||||
nptc += 1
|
nptc += 1
|
||||||
@ -3326,14 +3340,14 @@ class CatalogBuilder(object):
|
|||||||
# Add *article* entries for each populated author initial letter
|
# Add *article* entries for each populated author initial letter
|
||||||
# master_author_list{}: [0]:author list [1]:Initial letter
|
# master_author_list{}: [0]:author list [1]:Initial letter
|
||||||
for authors_by_letter in master_author_list:
|
for authors_by_letter in master_author_list:
|
||||||
navPointByLetterTag = Tag(soup, 'navPoint')
|
navPointByLetterTag = Tag(ncx_soup, 'navPoint')
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
navPointByLetterTag['class'] = "article"
|
navPointByLetterTag['class'] = "article"
|
||||||
navPointByLetterTag['id'] = "%sauthors-ID" % (authors_by_letter[1])
|
navPointByLetterTag['id'] = "%sauthors-ID" % (authors_by_letter[1])
|
||||||
navPointTag['playOrder'] = self.play_order
|
navPointTag['playOrder'] = self.play_order
|
||||||
self.play_order += 1
|
self.play_order += 1
|
||||||
navLabelTag = Tag(soup, 'navLabel')
|
navLabelTag = Tag(ncx_soup, 'navLabel')
|
||||||
textTag = Tag(soup, 'text')
|
textTag = Tag(ncx_soup, 'text')
|
||||||
if len(authors_by_letter[1])>1:
|
if len(authors_by_letter[1])>1:
|
||||||
fmt_string = _(u"Authors beginning with %s")
|
fmt_string = _(u"Authors beginning with %s")
|
||||||
else:
|
else:
|
||||||
@ -3341,7 +3355,7 @@ class CatalogBuilder(object):
|
|||||||
textTag.insert(0, NavigableString(fmt_string % (authors_by_letter[1])))
|
textTag.insert(0, NavigableString(fmt_string % (authors_by_letter[1])))
|
||||||
navLabelTag.insert(0, textTag)
|
navLabelTag.insert(0, textTag)
|
||||||
navPointByLetterTag.insert(0,navLabelTag)
|
navPointByLetterTag.insert(0,navLabelTag)
|
||||||
contentTag = Tag(soup, 'content')
|
contentTag = Tag(ncx_soup, 'content')
|
||||||
if authors_by_letter[1] == self.SYMBOLS:
|
if authors_by_letter[1] == self.SYMBOLS:
|
||||||
contentTag['src'] = "%s#%s_authors" % (HTML_file, authors_by_letter[1])
|
contentTag['src'] = "%s#%s_authors" % (HTML_file, authors_by_letter[1])
|
||||||
else:
|
else:
|
||||||
@ -3349,7 +3363,7 @@ class CatalogBuilder(object):
|
|||||||
navPointByLetterTag.insert(1,contentTag)
|
navPointByLetterTag.insert(1,contentTag)
|
||||||
|
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
cmTag = Tag(soup, '%s' % 'calibre:meta')
|
cmTag = Tag(ncx_soup, '%s' % 'calibre:meta')
|
||||||
cmTag['name'] = "description"
|
cmTag['name'] = "description"
|
||||||
cmTag.insert(0, NavigableString(authors_by_letter[0]))
|
cmTag.insert(0, NavigableString(authors_by_letter[0]))
|
||||||
navPointByLetterTag.insert(2, cmTag)
|
navPointByLetterTag.insert(2, cmTag)
|
||||||
@ -3361,7 +3375,7 @@ class CatalogBuilder(object):
|
|||||||
body.insert(btc, navPointTag)
|
body.insert(btc, navPointTag)
|
||||||
btc += 1
|
btc += 1
|
||||||
|
|
||||||
self.ncx_soup = soup
|
self.ncx_soup = ncx_soup
|
||||||
|
|
||||||
def generate_ncx_by_date_added(self, tocTitle):
|
def generate_ncx_by_date_added(self, tocTitle):
|
||||||
""" Add Recently Added to the basic NCX file.
|
""" Add Recently Added to the basic NCX file.
|
||||||
@ -3392,13 +3406,16 @@ class CatalogBuilder(object):
|
|||||||
current_titles_list = self.format_ncx_text(current_titles_list, dest='description')
|
current_titles_list = self.format_ncx_text(current_titles_list, dest='description')
|
||||||
master_date_range_list.append((current_titles_list, date_range, book_count))
|
master_date_range_list.append((current_titles_list, date_range, book_count))
|
||||||
|
|
||||||
soup = self.ncx_soup
|
ncx_soup = self.ncx_soup
|
||||||
HTML_file = "content/ByDateAdded.html"
|
HTML_file = "content/ByDateAdded.html"
|
||||||
body = soup.find("navPoint")
|
if self.generate_for_kindle_mobi:
|
||||||
|
body = ncx_soup.find("navPoint")
|
||||||
|
else:
|
||||||
|
body = ncx_soup.find('navMap')
|
||||||
btc = len(body.contents)
|
btc = len(body.contents)
|
||||||
|
|
||||||
# --- Construct the 'Recently Added' *section* ---
|
# --- Construct the 'Recently Added' *section* ---
|
||||||
navPointTag = Tag(soup, 'navPoint')
|
navPointTag = Tag(ncx_soup, 'navPoint')
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
navPointTag['class'] = "section"
|
navPointTag['class'] = "section"
|
||||||
file_ID = "%s" % tocTitle.lower()
|
file_ID = "%s" % tocTitle.lower()
|
||||||
@ -3406,14 +3423,14 @@ class CatalogBuilder(object):
|
|||||||
navPointTag['id'] = "%s-ID" % file_ID
|
navPointTag['id'] = "%s-ID" % file_ID
|
||||||
navPointTag['playOrder'] = self.play_order
|
navPointTag['playOrder'] = self.play_order
|
||||||
self.play_order += 1
|
self.play_order += 1
|
||||||
navLabelTag = Tag(soup, 'navLabel')
|
navLabelTag = Tag(ncx_soup, 'navLabel')
|
||||||
textTag = Tag(soup, 'text')
|
textTag = Tag(ncx_soup, 'text')
|
||||||
textTag.insert(0, NavigableString('%s' % tocTitle))
|
textTag.insert(0, NavigableString('%s' % tocTitle))
|
||||||
navLabelTag.insert(0, textTag)
|
navLabelTag.insert(0, textTag)
|
||||||
nptc = 0
|
nptc = 0
|
||||||
navPointTag.insert(nptc, navLabelTag)
|
navPointTag.insert(nptc, navLabelTag)
|
||||||
nptc += 1
|
nptc += 1
|
||||||
contentTag = Tag(soup,"content")
|
contentTag = Tag(ncx_soup,"content")
|
||||||
contentTag['src'] = "%s#section_start" % HTML_file
|
contentTag['src'] = "%s#section_start" % HTML_file
|
||||||
navPointTag.insert(nptc, contentTag)
|
navPointTag.insert(nptc, contentTag)
|
||||||
nptc += 1
|
nptc += 1
|
||||||
@ -3443,30 +3460,30 @@ class CatalogBuilder(object):
|
|||||||
# Add *article* entries for each populated date range
|
# Add *article* entries for each populated date range
|
||||||
# master_date_range_list{}: [0]:titles list [1]:datestr
|
# master_date_range_list{}: [0]:titles list [1]:datestr
|
||||||
for books_by_date_range in master_date_range_list:
|
for books_by_date_range in master_date_range_list:
|
||||||
navPointByDateRangeTag = Tag(soup, 'navPoint')
|
navPointByDateRangeTag = Tag(ncx_soup, 'navPoint')
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
navPointByDateRangeTag['class'] = "article"
|
navPointByDateRangeTag['class'] = "article"
|
||||||
navPointByDateRangeTag['id'] = "%s-ID" % books_by_date_range[1].replace(' ','')
|
navPointByDateRangeTag['id'] = "%s-ID" % books_by_date_range[1].replace(' ','')
|
||||||
navPointTag['playOrder'] = self.play_order
|
navPointTag['playOrder'] = self.play_order
|
||||||
self.play_order += 1
|
self.play_order += 1
|
||||||
navLabelTag = Tag(soup, 'navLabel')
|
navLabelTag = Tag(ncx_soup, 'navLabel')
|
||||||
textTag = Tag(soup, 'text')
|
textTag = Tag(ncx_soup, 'text')
|
||||||
textTag.insert(0, NavigableString(books_by_date_range[1]))
|
textTag.insert(0, NavigableString(books_by_date_range[1]))
|
||||||
navLabelTag.insert(0, textTag)
|
navLabelTag.insert(0, textTag)
|
||||||
navPointByDateRangeTag.insert(0,navLabelTag)
|
navPointByDateRangeTag.insert(0,navLabelTag)
|
||||||
contentTag = Tag(soup, 'content')
|
contentTag = Tag(ncx_soup, 'content')
|
||||||
contentTag['src'] = "%s#bda_%s" % (HTML_file,
|
contentTag['src'] = "%s#bda_%s" % (HTML_file,
|
||||||
books_by_date_range[1].replace(' ',''))
|
books_by_date_range[1].replace(' ',''))
|
||||||
|
|
||||||
navPointByDateRangeTag.insert(1,contentTag)
|
navPointByDateRangeTag.insert(1,contentTag)
|
||||||
|
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
cmTag = Tag(soup, '%s' % 'calibre:meta')
|
cmTag = Tag(ncx_soup, '%s' % 'calibre:meta')
|
||||||
cmTag['name'] = "description"
|
cmTag['name'] = "description"
|
||||||
cmTag.insert(0, NavigableString(books_by_date_range[0]))
|
cmTag.insert(0, NavigableString(books_by_date_range[0]))
|
||||||
navPointByDateRangeTag.insert(2, cmTag)
|
navPointByDateRangeTag.insert(2, cmTag)
|
||||||
|
|
||||||
cmTag = Tag(soup, '%s' % 'calibre:meta')
|
cmTag = Tag(ncx_soup, '%s' % 'calibre:meta')
|
||||||
cmTag['name'] = "author"
|
cmTag['name'] = "author"
|
||||||
navStr = '%d titles' % books_by_date_range[2] if books_by_date_range[2] > 1 else \
|
navStr = '%d titles' % books_by_date_range[2] if books_by_date_range[2] > 1 else \
|
||||||
'%d title' % books_by_date_range[2]
|
'%d title' % books_by_date_range[2]
|
||||||
@ -3503,30 +3520,30 @@ class CatalogBuilder(object):
|
|||||||
# master_months_list{}: [0]:titles list [1]:date
|
# master_months_list{}: [0]:titles list [1]:date
|
||||||
for books_by_month in master_month_list:
|
for books_by_month in master_month_list:
|
||||||
datestr = strftime(u'%B %Y', books_by_month[1].timetuple())
|
datestr = strftime(u'%B %Y', books_by_month[1].timetuple())
|
||||||
navPointByMonthTag = Tag(soup, 'navPoint')
|
navPointByMonthTag = Tag(ncx_soup, 'navPoint')
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
navPointByMonthTag['class'] = "article"
|
navPointByMonthTag['class'] = "article"
|
||||||
navPointByMonthTag['id'] = "bda_%s-%s-ID" % (books_by_month[1].year,books_by_month[1].month )
|
navPointByMonthTag['id'] = "bda_%s-%s-ID" % (books_by_month[1].year,books_by_month[1].month )
|
||||||
navPointTag['playOrder'] = self.play_order
|
navPointTag['playOrder'] = self.play_order
|
||||||
self.play_order += 1
|
self.play_order += 1
|
||||||
navLabelTag = Tag(soup, 'navLabel')
|
navLabelTag = Tag(ncx_soup, 'navLabel')
|
||||||
textTag = Tag(soup, 'text')
|
textTag = Tag(ncx_soup, 'text')
|
||||||
textTag.insert(0, NavigableString(datestr))
|
textTag.insert(0, NavigableString(datestr))
|
||||||
navLabelTag.insert(0, textTag)
|
navLabelTag.insert(0, textTag)
|
||||||
navPointByMonthTag.insert(0,navLabelTag)
|
navPointByMonthTag.insert(0,navLabelTag)
|
||||||
contentTag = Tag(soup, 'content')
|
contentTag = Tag(ncx_soup, 'content')
|
||||||
contentTag['src'] = "%s#bda_%s-%s" % (HTML_file,
|
contentTag['src'] = "%s#bda_%s-%s" % (HTML_file,
|
||||||
books_by_month[1].year,books_by_month[1].month)
|
books_by_month[1].year,books_by_month[1].month)
|
||||||
|
|
||||||
navPointByMonthTag.insert(1,contentTag)
|
navPointByMonthTag.insert(1,contentTag)
|
||||||
|
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
cmTag = Tag(soup, '%s' % 'calibre:meta')
|
cmTag = Tag(ncx_soup, '%s' % 'calibre:meta')
|
||||||
cmTag['name'] = "description"
|
cmTag['name'] = "description"
|
||||||
cmTag.insert(0, NavigableString(books_by_month[0]))
|
cmTag.insert(0, NavigableString(books_by_month[0]))
|
||||||
navPointByMonthTag.insert(2, cmTag)
|
navPointByMonthTag.insert(2, cmTag)
|
||||||
|
|
||||||
cmTag = Tag(soup, '%s' % 'calibre:meta')
|
cmTag = Tag(ncx_soup, '%s' % 'calibre:meta')
|
||||||
cmTag['name'] = "author"
|
cmTag['name'] = "author"
|
||||||
navStr = '%d titles' % books_by_month[2] if books_by_month[2] > 1 else \
|
navStr = '%d titles' % books_by_month[2] if books_by_month[2] > 1 else \
|
||||||
'%d title' % books_by_month[2]
|
'%d title' % books_by_month[2]
|
||||||
@ -3539,7 +3556,7 @@ class CatalogBuilder(object):
|
|||||||
# Add this section to the body
|
# Add this section to the body
|
||||||
body.insert(btc, navPointTag)
|
body.insert(btc, navPointTag)
|
||||||
btc += 1
|
btc += 1
|
||||||
self.ncx_soup = soup
|
self.ncx_soup = ncx_soup
|
||||||
|
|
||||||
def generate_ncx_by_date_read(self, tocTitle):
|
def generate_ncx_by_date_read(self, tocTitle):
|
||||||
""" Add By Date Read to the basic NCX file.
|
""" Add By Date Read to the basic NCX file.
|
||||||
@ -3573,13 +3590,16 @@ class CatalogBuilder(object):
|
|||||||
if not self.bookmarked_books_by_date_read:
|
if not self.bookmarked_books_by_date_read:
|
||||||
return
|
return
|
||||||
|
|
||||||
soup = self.ncx_soup
|
ncx_soup = self.ncx_soup
|
||||||
HTML_file = "content/ByDateRead.html"
|
HTML_file = "content/ByDateRead.html"
|
||||||
body = soup.find("navPoint")
|
if self.generate_for_kindle_mobi:
|
||||||
|
body = ncx_soup.find("navPoint")
|
||||||
|
else:
|
||||||
|
body = ncx_soup.find('navMap')
|
||||||
btc = len(body.contents)
|
btc = len(body.contents)
|
||||||
|
|
||||||
# --- Construct the 'Recently Read' *section* ---
|
# --- Construct the 'Recently Read' *section* ---
|
||||||
navPointTag = Tag(soup, 'navPoint')
|
navPointTag = Tag(ncx_soup, 'navPoint')
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
navPointTag['class'] = "section"
|
navPointTag['class'] = "section"
|
||||||
file_ID = "%s" % tocTitle.lower()
|
file_ID = "%s" % tocTitle.lower()
|
||||||
@ -3587,14 +3607,14 @@ class CatalogBuilder(object):
|
|||||||
navPointTag['id'] = "%s-ID" % file_ID
|
navPointTag['id'] = "%s-ID" % file_ID
|
||||||
navPointTag['playOrder'] = self.play_order
|
navPointTag['playOrder'] = self.play_order
|
||||||
self.play_order += 1
|
self.play_order += 1
|
||||||
navLabelTag = Tag(soup, 'navLabel')
|
navLabelTag = Tag(ncx_soup, 'navLabel')
|
||||||
textTag = Tag(soup, 'text')
|
textTag = Tag(ncx_soup, 'text')
|
||||||
textTag.insert(0, NavigableString('%s' % tocTitle))
|
textTag.insert(0, NavigableString('%s' % tocTitle))
|
||||||
navLabelTag.insert(0, textTag)
|
navLabelTag.insert(0, textTag)
|
||||||
nptc = 0
|
nptc = 0
|
||||||
navPointTag.insert(nptc, navLabelTag)
|
navPointTag.insert(nptc, navLabelTag)
|
||||||
nptc += 1
|
nptc += 1
|
||||||
contentTag = Tag(soup,"content")
|
contentTag = Tag(ncx_soup,"content")
|
||||||
contentTag['src'] = "%s#section_start" % HTML_file
|
contentTag['src'] = "%s#section_start" % HTML_file
|
||||||
navPointTag.insert(nptc, contentTag)
|
navPointTag.insert(nptc, contentTag)
|
||||||
nptc += 1
|
nptc += 1
|
||||||
@ -3650,7 +3670,7 @@ class CatalogBuilder(object):
|
|||||||
# master_day_list{}: [0]:titles list [1]:date
|
# master_day_list{}: [0]:titles list [1]:date
|
||||||
for books_by_day in master_day_list:
|
for books_by_day in master_day_list:
|
||||||
datestr = strftime(u'%A, %B %d', books_by_day[1].timetuple())
|
datestr = strftime(u'%A, %B %d', books_by_day[1].timetuple())
|
||||||
navPointByDayTag = Tag(soup, 'navPoint')
|
navPointByDayTag = Tag(ncx_soup, 'navPoint')
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
navPointByDayTag['class'] = "article"
|
navPointByDayTag['class'] = "article"
|
||||||
navPointByDayTag['id'] = "bdr_%s-%s-%sID" % (books_by_day[1].year,
|
navPointByDayTag['id'] = "bdr_%s-%s-%sID" % (books_by_day[1].year,
|
||||||
@ -3658,12 +3678,12 @@ class CatalogBuilder(object):
|
|||||||
books_by_day[1].day )
|
books_by_day[1].day )
|
||||||
navPointTag['playOrder'] = self.play_order
|
navPointTag['playOrder'] = self.play_order
|
||||||
self.play_order += 1
|
self.play_order += 1
|
||||||
navLabelTag = Tag(soup, 'navLabel')
|
navLabelTag = Tag(ncx_soup, 'navLabel')
|
||||||
textTag = Tag(soup, 'text')
|
textTag = Tag(ncx_soup, 'text')
|
||||||
textTag.insert(0, NavigableString(datestr))
|
textTag.insert(0, NavigableString(datestr))
|
||||||
navLabelTag.insert(0, textTag)
|
navLabelTag.insert(0, textTag)
|
||||||
navPointByDayTag.insert(0,navLabelTag)
|
navPointByDayTag.insert(0,navLabelTag)
|
||||||
contentTag = Tag(soup, 'content')
|
contentTag = Tag(ncx_soup, 'content')
|
||||||
contentTag['src'] = "%s#bdr_%s-%s-%s" % (HTML_file,
|
contentTag['src'] = "%s#bdr_%s-%s-%s" % (HTML_file,
|
||||||
books_by_day[1].year,
|
books_by_day[1].year,
|
||||||
books_by_day[1].month,
|
books_by_day[1].month,
|
||||||
@ -3672,12 +3692,12 @@ class CatalogBuilder(object):
|
|||||||
navPointByDayTag.insert(1,contentTag)
|
navPointByDayTag.insert(1,contentTag)
|
||||||
|
|
||||||
if self.generate_for_kindle_mobi:
|
if self.generate_for_kindle_mobi:
|
||||||
cmTag = Tag(soup, '%s' % 'calibre:meta')
|
cmTag = Tag(ncx_soup, '%s' % 'calibre:meta')
|
||||||
cmTag['name'] = "description"
|
cmTag['name'] = "description"
|
||||||
cmTag.insert(0, NavigableString(books_by_day[0]))
|
cmTag.insert(0, NavigableString(books_by_day[0]))
|
||||||
navPointByDayTag.insert(2, cmTag)
|
navPointByDayTag.insert(2, cmTag)
|
||||||
|
|
||||||
cmTag = Tag(soup, '%s' % 'calibre:meta')
|
cmTag = Tag(ncx_soup, '%s' % 'calibre:meta')
|
||||||
cmTag['name'] = "author"
|
cmTag['name'] = "author"
|
||||||
navStr = '%d titles' % books_by_day[2] if books_by_day[2] > 1 else \
|
navStr = '%d titles' % books_by_day[2] if books_by_day[2] > 1 else \
|
||||||
'%d title' % books_by_day[2]
|
'%d title' % books_by_day[2]
|
||||||
@ -3690,7 +3710,7 @@ class CatalogBuilder(object):
|
|||||||
# Add this section to the body
|
# Add this section to the body
|
||||||
body.insert(btc, navPointTag)
|
body.insert(btc, navPointTag)
|
||||||
btc += 1
|
btc += 1
|
||||||
self.ncx_soup = soup
|
self.ncx_soup = ncx_soup
|
||||||
|
|
||||||
def generate_ncx_by_genre(self, tocTitle):
|
def generate_ncx_by_genre(self, tocTitle):
|
||||||
""" Add Genres to the basic NCX file.
|
""" Add Genres to the basic NCX file.
|
||||||
@ -3715,7 +3735,10 @@ class CatalogBuilder(object):
|
|||||||
return
|
return
|
||||||
|
|
||||||
ncx_soup = self.ncx_soup
|
ncx_soup = self.ncx_soup
|
||||||
|
if self.generate_for_kindle_mobi:
|
||||||
body = ncx_soup.find("navPoint")
|
body = ncx_soup.find("navPoint")
|
||||||
|
else:
|
||||||
|
body = ncx_soup.find('navMap')
|
||||||
btc = len(body.contents)
|
btc = len(body.contents)
|
||||||
|
|
||||||
# --- Construct the 'Books By Genre' *section* ---
|
# --- Construct the 'Books By Genre' *section* ---
|
||||||
|
Loading…
x
Reference in New Issue
Block a user