From 4fcbaa8919921d426bc4ad9f02eafb1a35835b6c Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 26 Nov 2011 20:13:13 +0530 Subject: [PATCH] Fix #896585 (extra articles for dutch language) --- resources/default_tweaks.py | 4 +++- src/calibre/gui2/duplicates.py | 11 +++++++++++ src/calibre/library/database2.py | 17 +++++++++++++++-- 3 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 src/calibre/gui2/duplicates.py diff --git a/resources/default_tweaks.py b/resources/default_tweaks.py index ecd3888bf7..224038b0f9 100644 --- a/resources/default_tweaks.py +++ b/resources/default_tweaks.py @@ -232,7 +232,9 @@ per_language_title_sort_articles = { 'deu' : (r'Der\s+', r'Die\s+', r'Das\s+', r'Den\s+', r'Ein\s+', r'Eine\s+', r'Einen\s+', ), # Dutch - 'nld' : (r'De\s+', r'Het\s+', r'Een\s+', ), + 'nld' : (r'De\s+', r'Het\s+', r'Een\s+', r"'n\s+", r"'s\s+", r'Ene\s+', + r'Ener\s+', r'Enes\s+', r'Den\s+', r'Der\s+', r'Des\s+', + r"'t\s+"), # Swedish 'swe' : (r'En\s+', r'Ett\s+', r'Det\s+', r'Den\s+', r'De\s+', ), # Turkish diff --git a/src/calibre/gui2/duplicates.py b/src/calibre/gui2/duplicates.py new file mode 100644 index 0000000000..cc6da1e995 --- /dev/null +++ b/src/calibre/gui2/duplicates.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2011, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + + + diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index a917aa09b2..3782149512 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -13,7 +13,7 @@ import threading, random from itertools import repeat from math import ceil -from calibre import prints +from calibre import prints, force_unicode from calibre.ebooks.metadata import (title_sort, author_to_author_sort, string_to_authors, authors_to_string, get_title_sort_pat) from calibre.ebooks.metadata.opf2 import metadata_to_opf @@ -33,7 +33,7 @@ from calibre import isbytestring from calibre.utils.filenames import ascii_filename from calibre.utils.date import utcnow, now as nowf, utcfromtimestamp from calibre.utils.config import prefs, tweaks, from_json, to_json -from calibre.utils.icu import sort_key, strcmp +from calibre.utils.icu import sort_key, strcmp, lower from calibre.utils.search_query_parser import saved_searches, set_saved_searches from calibre.ebooks import BOOK_EXTENSIONS, check_ebook_format from calibre.utils.magick.draw import save_cover_data_to @@ -1003,6 +1003,19 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): return bool(self.conn.get('SELECT id FROM books where title=?', (title,), all=False)) return False + def books_with_same_title(self, mi, all_matches=True): + title = mi.title + ans = set() + if title: + title = lower(force_unicode(title)) + for book_id in self.all_ids(): + x = self.title(book_id, index_is_id=True) + if lower(x) == title: + ans.add(book_id) + if not all_matches: + break + return ans + def find_identical_books(self, mi): fuzzy_title_patterns = [(re.compile(pat, re.IGNORECASE) if isinstance(pat, basestring) else pat, repl) for pat, repl in