From 38d238968391c76b7584e4052f39ba3ddc5909f7 Mon Sep 17 00:00:00 2001 From: GRiker Date: Sat, 13 Oct 2012 09:09:01 -0600 Subject: [PATCH] Removed top-level catalog TOC (EPUB/AZW3), Sections now at top level instead of next level --- .../library/catalogs/epub_mobi_builder.py | 249 ++++++++++-------- 1 file changed, 136 insertions(+), 113 deletions(-) diff --git a/src/calibre/library/catalogs/epub_mobi_builder.py b/src/calibre/library/catalogs/epub_mobi_builder.py index 3d009b06cd..6b85988a66 100644 --- a/src/calibre/library/catalogs/epub_mobi_builder.py +++ b/src/calibre/library/catalogs/epub_mobi_builder.py @@ -2822,54 +2822,56 @@ class CatalogBuilder(object): ncx = soup.find('ncx') navMapTag = Tag(soup, 'navMap') - navPointTag = Tag(soup, 'navPoint') + if self.generate_for_kindle_mobi: + # Build a top-level navPoint for Kindle periodicals + navPointTag = Tag(soup, 'navPoint') navPointTag['class'] = "periodical" - navPointTag['id'] = "title" - navPointTag['playOrder'] = self.play_order - self.play_order += 1 - navLabelTag = Tag(soup, 'navLabel') - textTag = Tag(soup, 'text') - textTag.insert(0, NavigableString(self.opts.catalog_title)) - navLabelTag.insert(0, textTag) - navPointTag.insert(0, navLabelTag) + navPointTag['id'] = "title" + navPointTag['playOrder'] = self.play_order + self.play_order += 1 + navLabelTag = Tag(soup, 'navLabel') + textTag = Tag(soup, 'text') + textTag.insert(0, NavigableString(self.opts.catalog_title)) + navLabelTag.insert(0, textTag) + navPointTag.insert(0, navLabelTag) - if self.opts.generate_authors: - contentTag = Tag(soup, 'content') - contentTag['src'] = "content/ByAlphaAuthor.html" - navPointTag.insert(1, contentTag) - elif self.opts.generate_titles: - contentTag = Tag(soup, 'content') - contentTag['src'] = "content/ByAlphaTitle.html" - navPointTag.insert(1, contentTag) - elif self.opts.generate_series: - contentTag = Tag(soup, 'content') - contentTag['src'] = "content/BySeries.html" - navPointTag.insert(1, contentTag) - elif self.opts.generate_genres: - contentTag = Tag(soup, 'content') - #contentTag['src'] = "content/ByGenres.html" - contentTag['src'] = "%s" % self.genres[0]['file'] - navPointTag.insert(1, contentTag) - elif self.opts.generate_recently_added: - contentTag = Tag(soup, 'content') - contentTag['src'] = "content/ByDateAdded.html" - navPointTag.insert(1, contentTag) - else: - # Descriptions only - sort_descriptions_by = self.books_by_author if self.opts.sort_descriptions_by_author \ - else self.books_by_title - contentTag = Tag(soup, 'content') - contentTag['src'] = "content/book_%d.html" % int(sort_descriptions_by[0]['id']) - navPointTag.insert(1, contentTag) + if self.opts.generate_authors: + contentTag = Tag(soup, 'content') + contentTag['src'] = "content/ByAlphaAuthor.html" + navPointTag.insert(1, contentTag) + elif self.opts.generate_titles: + contentTag = Tag(soup, 'content') + contentTag['src'] = "content/ByAlphaTitle.html" + navPointTag.insert(1, contentTag) + elif self.opts.generate_series: + contentTag = Tag(soup, 'content') + contentTag['src'] = "content/BySeries.html" + navPointTag.insert(1, contentTag) + elif self.opts.generate_genres: + contentTag = Tag(soup, 'content') + #contentTag['src'] = "content/ByGenres.html" + contentTag['src'] = "%s" % self.genres[0]['file'] + navPointTag.insert(1, contentTag) + elif self.opts.generate_recently_added: + contentTag = Tag(soup, 'content') + contentTag['src'] = "content/ByDateAdded.html" + navPointTag.insert(1, contentTag) + else: + # Descriptions only + sort_descriptions_by = self.books_by_author if self.opts.sort_descriptions_by_author \ + else self.books_by_title + contentTag = Tag(soup, 'content') + contentTag['src'] = "content/book_%d.html" % int(sort_descriptions_by[0]['id']) + navPointTag.insert(1, contentTag) - if self.generate_for_kindle_mobi: - cmiTag = Tag(soup, '%s' % 'calibre:meta-img') - cmiTag['id'] = "mastheadImage" - cmiTag['src'] = "images/mastheadImage.gif" - navPointTag.insert(2,cmiTag) + if self.generate_for_kindle_mobi: + cmiTag = Tag(soup, '%s' % 'calibre:meta-img') + cmiTag['id'] = "mastheadImage" + cmiTag['src'] = "images/mastheadImage.gif" + navPointTag.insert(2,cmiTag) + navMapTag.insert(0,navPointTag) - navMapTag.insert(0,navPointTag) ncx.insert(0,navMapTag) self.ncx_soup = soup @@ -2895,7 +2897,10 @@ class CatalogBuilder(object): # --- Construct the 'Descriptions' section --- ncx_soup = self.ncx_soup - body = ncx_soup.find("navPoint") + if self.generate_for_kindle_mobi: + body = ncx_soup.find("navPoint") + else: + body = ncx_soup.find('navMap') btc = len(body.contents) # Add the section navPoint @@ -3019,26 +3024,29 @@ class CatalogBuilder(object): current_series_list = self.format_ncx_text(current_series_list, dest="description") series_by_letter.append(current_series_list) - soup = self.ncx_soup + ncx_soup = self.ncx_soup 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) # --- Construct the 'Books By Series' section --- - navPointTag = Tag(soup, 'navPoint') + navPointTag = Tag(ncx_soup, 'navPoint') if self.generate_for_kindle_mobi: navPointTag['class'] = "section" navPointTag['id'] = "byseries-ID" navPointTag['playOrder'] = self.play_order self.play_order += 1 - navLabelTag = Tag(soup, 'navLabel') - textTag = Tag(soup, 'text') + navLabelTag = Tag(ncx_soup, 'navLabel') + textTag = Tag(ncx_soup, 'text') textTag.insert(0, NavigableString(tocTitle)) navLabelTag.insert(0, textTag) nptc = 0 navPointTag.insert(nptc, navLabelTag) nptc += 1 - contentTag = Tag(soup,"content") + contentTag = Tag(ncx_soup,"content") contentTag['src'] = "content/%s.html#section_start" % (output) navPointTag.insert(nptc, contentTag) nptc += 1 @@ -3082,14 +3090,14 @@ class CatalogBuilder(object): # Add *article* entries for each populated series title letter for (i,books) in enumerate(series_by_letter): - navPointByLetterTag = Tag(soup, 'navPoint') + navPointByLetterTag = Tag(ncx_soup, 'navPoint') if self.generate_for_kindle_mobi: navPointByLetterTag['class'] = "article" navPointByLetterTag['id'] = "%sSeries-ID" % (title_letters[i].upper()) navPointTag['playOrder'] = self.play_order self.play_order += 1 - navLabelTag = Tag(soup, 'navLabel') - textTag = Tag(soup, 'text') + navLabelTag = Tag(ncx_soup, 'navLabel') + textTag = Tag(ncx_soup, 'text') if len(title_letters[i])>1: fmt_string = _(u"Series beginning with %s") else: @@ -3098,7 +3106,7 @@ class CatalogBuilder(object): (title_letters[i] if len(title_letters[i])>1 else title_letters[i]))) navLabelTag.insert(0, textTag) navPointByLetterTag.insert(0,navLabelTag) - contentTag = Tag(soup, 'content') + contentTag = Tag(ncx_soup, 'content') #contentTag['src'] = "content/%s.html#%s_series" % (output, title_letters[i]) if title_letters[i] == self.SYMBOLS: contentTag['src'] = "content/%s.html#%s_series" % (output, self.SYMBOLS) @@ -3108,7 +3116,7 @@ class CatalogBuilder(object): navPointByLetterTag.insert(1,contentTag) if self.generate_for_kindle_mobi: - cmTag = Tag(soup, '%s' % 'calibre:meta') + cmTag = Tag(ncx_soup, '%s' % 'calibre:meta') cmTag['name'] = "description" cmTag.insert(0, NavigableString(self.format_ncx_text(books, dest='description'))) navPointByLetterTag.insert(2, cmTag) @@ -3120,7 +3128,7 @@ class CatalogBuilder(object): body.insert(btc, navPointTag) btc += 1 - self.ncx_soup = soup + self.ncx_soup = ncx_soup def generate_ncx_by_title(self, tocTitle): """ 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") books_by_letter.append(current_book_list) - soup = self.ncx_soup + ncx_soup = self.ncx_soup 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) # --- Construct the 'Books By Title' section --- - navPointTag = Tag(soup, 'navPoint') + navPointTag = Tag(ncx_soup, 'navPoint') if self.generate_for_kindle_mobi: navPointTag['class'] = "section" navPointTag['id'] = "byalphatitle-ID" navPointTag['playOrder'] = self.play_order self.play_order += 1 - navLabelTag = Tag(soup, 'navLabel') - textTag = Tag(soup, 'text') + navLabelTag = Tag(ncx_soup, 'navLabel') + textTag = Tag(ncx_soup, 'text') textTag.insert(0, NavigableString(tocTitle)) navLabelTag.insert(0, textTag) nptc = 0 navPointTag.insert(nptc, navLabelTag) nptc += 1 - contentTag = Tag(soup,"content") + contentTag = Tag(ncx_soup,"content") contentTag['src'] = "content/%s.html#section_start" % (output) navPointTag.insert(nptc, contentTag) nptc += 1 @@ -3209,14 +3220,14 @@ class CatalogBuilder(object): # Add *article* entries for each populated title letter for (i,books) in enumerate(books_by_letter): - navPointByLetterTag = Tag(soup, 'navPoint') + navPointByLetterTag = Tag(ncx_soup, 'navPoint') if self.generate_for_kindle_mobi: navPointByLetterTag['class'] = "article" navPointByLetterTag['id'] = "%sTitles-ID" % (title_letters[i].upper()) navPointTag['playOrder'] = self.play_order self.play_order += 1 - navLabelTag = Tag(soup, 'navLabel') - textTag = Tag(soup, 'text') + navLabelTag = Tag(ncx_soup, 'navLabel') + textTag = Tag(ncx_soup, 'text') if len(title_letters[i])>1: fmt_string = _(u"Titles beginning with %s") else: @@ -3225,7 +3236,7 @@ class CatalogBuilder(object): (title_letters[i] if len(title_letters[i])>1 else title_letters[i]))) navLabelTag.insert(0, textTag) navPointByLetterTag.insert(0,navLabelTag) - contentTag = Tag(soup, 'content') + contentTag = Tag(ncx_soup, 'content') if title_letters[i] == self.SYMBOLS: contentTag['src'] = "content/%s.html#%s_titles" % (output, self.SYMBOLS) else: @@ -3233,7 +3244,7 @@ class CatalogBuilder(object): navPointByLetterTag.insert(1,contentTag) if self.generate_for_kindle_mobi: - cmTag = Tag(soup, '%s' % 'calibre:meta') + cmTag = Tag(ncx_soup, '%s' % 'calibre:meta') cmTag['name'] = "description" cmTag.insert(0, NavigableString(self.format_ncx_text(books, dest='description'))) navPointByLetterTag.insert(2, cmTag) @@ -3245,7 +3256,7 @@ class CatalogBuilder(object): body.insert(btc, navPointTag) btc += 1 - self.ncx_soup = soup + self.ncx_soup = ncx_soup def generate_ncx_by_author(self, tocTitle): """ 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") master_author_list.append((current_author_list, current_letter)) - soup = self.ncx_soup + ncx_soup = self.ncx_soup 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) # --- Construct the 'Books By Author' *section* --- - navPointTag = Tag(soup, 'navPoint') + navPointTag = Tag(ncx_soup, 'navPoint') if self.generate_for_kindle_mobi: navPointTag['class'] = "section" file_ID = "%s" % tocTitle.lower() @@ -3283,14 +3297,14 @@ class CatalogBuilder(object): navPointTag['id'] = "%s-ID" % file_ID navPointTag['playOrder'] = self.play_order self.play_order += 1 - navLabelTag = Tag(soup, 'navLabel') - textTag = Tag(soup, 'text') + navLabelTag = Tag(ncx_soup, 'navLabel') + textTag = Tag(ncx_soup, 'text') textTag.insert(0, NavigableString('%s' % tocTitle)) navLabelTag.insert(0, textTag) nptc = 0 navPointTag.insert(nptc, navLabelTag) nptc += 1 - contentTag = Tag(soup,"content") + contentTag = Tag(ncx_soup,"content") contentTag['src'] = "%s#section_start" % HTML_file navPointTag.insert(nptc, contentTag) nptc += 1 @@ -3326,14 +3340,14 @@ class CatalogBuilder(object): # Add *article* entries for each populated author initial letter # master_author_list{}: [0]:author list [1]:Initial letter for authors_by_letter in master_author_list: - navPointByLetterTag = Tag(soup, 'navPoint') + navPointByLetterTag = Tag(ncx_soup, 'navPoint') if self.generate_for_kindle_mobi: navPointByLetterTag['class'] = "article" navPointByLetterTag['id'] = "%sauthors-ID" % (authors_by_letter[1]) navPointTag['playOrder'] = self.play_order self.play_order += 1 - navLabelTag = Tag(soup, 'navLabel') - textTag = Tag(soup, 'text') + navLabelTag = Tag(ncx_soup, 'navLabel') + textTag = Tag(ncx_soup, 'text') if len(authors_by_letter[1])>1: fmt_string = _(u"Authors beginning with %s") else: @@ -3341,7 +3355,7 @@ class CatalogBuilder(object): textTag.insert(0, NavigableString(fmt_string % (authors_by_letter[1]))) navLabelTag.insert(0, textTag) navPointByLetterTag.insert(0,navLabelTag) - contentTag = Tag(soup, 'content') + contentTag = Tag(ncx_soup, 'content') if authors_by_letter[1] == self.SYMBOLS: contentTag['src'] = "%s#%s_authors" % (HTML_file, authors_by_letter[1]) else: @@ -3349,7 +3363,7 @@ class CatalogBuilder(object): navPointByLetterTag.insert(1,contentTag) if self.generate_for_kindle_mobi: - cmTag = Tag(soup, '%s' % 'calibre:meta') + cmTag = Tag(ncx_soup, '%s' % 'calibre:meta') cmTag['name'] = "description" cmTag.insert(0, NavigableString(authors_by_letter[0])) navPointByLetterTag.insert(2, cmTag) @@ -3361,7 +3375,7 @@ class CatalogBuilder(object): body.insert(btc, navPointTag) btc += 1 - self.ncx_soup = soup + self.ncx_soup = ncx_soup def generate_ncx_by_date_added(self, tocTitle): """ 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') 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" - 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) # --- Construct the 'Recently Added' *section* --- - navPointTag = Tag(soup, 'navPoint') + navPointTag = Tag(ncx_soup, 'navPoint') if self.generate_for_kindle_mobi: navPointTag['class'] = "section" file_ID = "%s" % tocTitle.lower() @@ -3406,14 +3423,14 @@ class CatalogBuilder(object): navPointTag['id'] = "%s-ID" % file_ID navPointTag['playOrder'] = self.play_order self.play_order += 1 - navLabelTag = Tag(soup, 'navLabel') - textTag = Tag(soup, 'text') + navLabelTag = Tag(ncx_soup, 'navLabel') + textTag = Tag(ncx_soup, 'text') textTag.insert(0, NavigableString('%s' % tocTitle)) navLabelTag.insert(0, textTag) nptc = 0 navPointTag.insert(nptc, navLabelTag) nptc += 1 - contentTag = Tag(soup,"content") + contentTag = Tag(ncx_soup,"content") contentTag['src'] = "%s#section_start" % HTML_file navPointTag.insert(nptc, contentTag) nptc += 1 @@ -3443,30 +3460,30 @@ class CatalogBuilder(object): # Add *article* entries for each populated date range # master_date_range_list{}: [0]:titles list [1]:datestr 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: navPointByDateRangeTag['class'] = "article" navPointByDateRangeTag['id'] = "%s-ID" % books_by_date_range[1].replace(' ','') navPointTag['playOrder'] = self.play_order self.play_order += 1 - navLabelTag = Tag(soup, 'navLabel') - textTag = Tag(soup, 'text') + navLabelTag = Tag(ncx_soup, 'navLabel') + textTag = Tag(ncx_soup, 'text') textTag.insert(0, NavigableString(books_by_date_range[1])) navLabelTag.insert(0, textTag) navPointByDateRangeTag.insert(0,navLabelTag) - contentTag = Tag(soup, 'content') + contentTag = Tag(ncx_soup, 'content') contentTag['src'] = "%s#bda_%s" % (HTML_file, books_by_date_range[1].replace(' ','')) navPointByDateRangeTag.insert(1,contentTag) if self.generate_for_kindle_mobi: - cmTag = Tag(soup, '%s' % 'calibre:meta') + cmTag = Tag(ncx_soup, '%s' % 'calibre:meta') cmTag['name'] = "description" cmTag.insert(0, NavigableString(books_by_date_range[0])) navPointByDateRangeTag.insert(2, cmTag) - cmTag = Tag(soup, '%s' % 'calibre:meta') + cmTag = Tag(ncx_soup, '%s' % 'calibre:meta') cmTag['name'] = "author" navStr = '%d titles' % books_by_date_range[2] if books_by_date_range[2] > 1 else \ '%d title' % books_by_date_range[2] @@ -3503,30 +3520,30 @@ class CatalogBuilder(object): # master_months_list{}: [0]:titles list [1]:date for books_by_month in master_month_list: 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: navPointByMonthTag['class'] = "article" navPointByMonthTag['id'] = "bda_%s-%s-ID" % (books_by_month[1].year,books_by_month[1].month ) navPointTag['playOrder'] = self.play_order self.play_order += 1 - navLabelTag = Tag(soup, 'navLabel') - textTag = Tag(soup, 'text') + navLabelTag = Tag(ncx_soup, 'navLabel') + textTag = Tag(ncx_soup, 'text') textTag.insert(0, NavigableString(datestr)) navLabelTag.insert(0, textTag) navPointByMonthTag.insert(0,navLabelTag) - contentTag = Tag(soup, 'content') + contentTag = Tag(ncx_soup, 'content') contentTag['src'] = "%s#bda_%s-%s" % (HTML_file, books_by_month[1].year,books_by_month[1].month) navPointByMonthTag.insert(1,contentTag) if self.generate_for_kindle_mobi: - cmTag = Tag(soup, '%s' % 'calibre:meta') + cmTag = Tag(ncx_soup, '%s' % 'calibre:meta') cmTag['name'] = "description" cmTag.insert(0, NavigableString(books_by_month[0])) navPointByMonthTag.insert(2, cmTag) - cmTag = Tag(soup, '%s' % 'calibre:meta') + cmTag = Tag(ncx_soup, '%s' % 'calibre:meta') cmTag['name'] = "author" navStr = '%d titles' % books_by_month[2] if books_by_month[2] > 1 else \ '%d title' % books_by_month[2] @@ -3539,7 +3556,7 @@ class CatalogBuilder(object): # Add this section to the body body.insert(btc, navPointTag) btc += 1 - self.ncx_soup = soup + self.ncx_soup = ncx_soup def generate_ncx_by_date_read(self, tocTitle): """ Add By Date Read to the basic NCX file. @@ -3573,13 +3590,16 @@ class CatalogBuilder(object): if not self.bookmarked_books_by_date_read: return - soup = self.ncx_soup + ncx_soup = self.ncx_soup 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) # --- Construct the 'Recently Read' *section* --- - navPointTag = Tag(soup, 'navPoint') + navPointTag = Tag(ncx_soup, 'navPoint') if self.generate_for_kindle_mobi: navPointTag['class'] = "section" file_ID = "%s" % tocTitle.lower() @@ -3587,14 +3607,14 @@ class CatalogBuilder(object): navPointTag['id'] = "%s-ID" % file_ID navPointTag['playOrder'] = self.play_order self.play_order += 1 - navLabelTag = Tag(soup, 'navLabel') - textTag = Tag(soup, 'text') + navLabelTag = Tag(ncx_soup, 'navLabel') + textTag = Tag(ncx_soup, 'text') textTag.insert(0, NavigableString('%s' % tocTitle)) navLabelTag.insert(0, textTag) nptc = 0 navPointTag.insert(nptc, navLabelTag) nptc += 1 - contentTag = Tag(soup,"content") + contentTag = Tag(ncx_soup,"content") contentTag['src'] = "%s#section_start" % HTML_file navPointTag.insert(nptc, contentTag) nptc += 1 @@ -3650,7 +3670,7 @@ class CatalogBuilder(object): # master_day_list{}: [0]:titles list [1]:date for books_by_day in master_day_list: 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: navPointByDayTag['class'] = "article" navPointByDayTag['id'] = "bdr_%s-%s-%sID" % (books_by_day[1].year, @@ -3658,12 +3678,12 @@ class CatalogBuilder(object): books_by_day[1].day ) navPointTag['playOrder'] = self.play_order self.play_order += 1 - navLabelTag = Tag(soup, 'navLabel') - textTag = Tag(soup, 'text') + navLabelTag = Tag(ncx_soup, 'navLabel') + textTag = Tag(ncx_soup, 'text') textTag.insert(0, NavigableString(datestr)) navLabelTag.insert(0, textTag) navPointByDayTag.insert(0,navLabelTag) - contentTag = Tag(soup, 'content') + contentTag = Tag(ncx_soup, 'content') contentTag['src'] = "%s#bdr_%s-%s-%s" % (HTML_file, books_by_day[1].year, books_by_day[1].month, @@ -3672,12 +3692,12 @@ class CatalogBuilder(object): navPointByDayTag.insert(1,contentTag) if self.generate_for_kindle_mobi: - cmTag = Tag(soup, '%s' % 'calibre:meta') + cmTag = Tag(ncx_soup, '%s' % 'calibre:meta') cmTag['name'] = "description" cmTag.insert(0, NavigableString(books_by_day[0])) navPointByDayTag.insert(2, cmTag) - cmTag = Tag(soup, '%s' % 'calibre:meta') + cmTag = Tag(ncx_soup, '%s' % 'calibre:meta') cmTag['name'] = "author" navStr = '%d titles' % books_by_day[2] if books_by_day[2] > 1 else \ '%d title' % books_by_day[2] @@ -3690,7 +3710,7 @@ class CatalogBuilder(object): # Add this section to the body body.insert(btc, navPointTag) btc += 1 - self.ncx_soup = soup + self.ncx_soup = ncx_soup def generate_ncx_by_genre(self, tocTitle): """ Add Genres to the basic NCX file. @@ -3715,7 +3735,10 @@ class CatalogBuilder(object): return ncx_soup = self.ncx_soup - body = ncx_soup.find("navPoint") + if self.generate_for_kindle_mobi: + body = ncx_soup.find("navPoint") + else: + body = ncx_soup.find('navMap') btc = len(body.contents) # --- Construct the 'Books By Genre' *section* ---