From e6306b3824a9dc0833045a125c9f25ec2eeb7250 Mon Sep 17 00:00:00 2001 From: GRiker Date: Mon, 2 Jul 2012 10:22:22 -0600 Subject: [PATCH 1/2] Convert sort_title and sort_author to unaccented equivalent using ascii_text(). Titles or Authors with leading accented characters will be sorted with their unaccented equivalent characters. --- src/calibre/library/catalogs/epub_mobi_builder.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/calibre/library/catalogs/epub_mobi_builder.py b/src/calibre/library/catalogs/epub_mobi_builder.py index 1383379db2..fe0645897d 100644 --- a/src/calibre/library/catalogs/epub_mobi_builder.py +++ b/src/calibre/library/catalogs/epub_mobi_builder.py @@ -14,6 +14,7 @@ from calibre.ebooks.chardet import substitute_entites from calibre.ptempfile import PersistentTemporaryDirectory from calibre.utils.config import config_dir from calibre.utils.date import format_date, is_date_undefined, now as nowf +from calibre.utils.filenames import ascii_text from calibre.utils.icu import capitalize from calibre.utils.magick.draw import thumbnail from calibre.utils.zipfile import ZipFile @@ -689,7 +690,7 @@ Author '{0}': this_title['series'] = None this_title['series_index'] = 0.0 - this_title['title_sort'] = self.generateSortTitle(this_title['title']) + this_title['title_sort'] = self.generateSortTitle(ascii_text(this_title['title'])) if 'authors' in record: # from calibre.ebooks.metadata import authors_to_string # return authors_to_string(self.authors) @@ -704,6 +705,7 @@ Author '{0}': this_title['author_sort'] = record['author_sort'] else: this_title['author_sort'] = self.author_to_author_sort(this_title['author']) + this_title['author_sort'] = ascii_text(this_title['author_sort']) if record['publisher']: this_title['publisher'] = re.sub('&', '&', record['publisher']) @@ -780,7 +782,7 @@ Author '{0}': if len(titles): self.booksByTitle = sorted(titles, key=lambda x:(x['title_sort'].upper(), x['title_sort'].upper())) - if False and self.verbose: + if True and self.verbose: self.opts.log.info("fetchBooksByTitle(): %d books" % len(self.booksByTitle)) self.opts.log.info(" %-40s %-40s" % ('title', 'title_sort')) for title in self.booksByTitle: @@ -3768,7 +3770,7 @@ Author '{0}': else: word = '%10.0f' % (float(word)) translated.append(word) - return ' '.join(translated) + return ascii_text(' '.join(translated)) def generateThumbnail(self, title, image_dir, thumb_file): ''' From dd179f8fb33c6ccb8079e8883e8c79eef8324007 Mon Sep 17 00:00:00 2001 From: GRiker Date: Tue, 3 Jul 2012 04:55:59 -0600 Subject: [PATCH 2/2] removed unneeded debug info --- src/calibre/library/catalogs/epub_mobi_builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/library/catalogs/epub_mobi_builder.py b/src/calibre/library/catalogs/epub_mobi_builder.py index fe0645897d..6267651aff 100644 --- a/src/calibre/library/catalogs/epub_mobi_builder.py +++ b/src/calibre/library/catalogs/epub_mobi_builder.py @@ -782,7 +782,7 @@ Author '{0}': if len(titles): self.booksByTitle = sorted(titles, key=lambda x:(x['title_sort'].upper(), x['title_sort'].upper())) - if True and self.verbose: + if False and self.verbose: self.opts.log.info("fetchBooksByTitle(): %d books" % len(self.booksByTitle)) self.opts.log.info(" %-40s %-40s" % ('title', 'title_sort')) for title in self.booksByTitle: