diff --git a/src/calibre/gui2/add.py b/src/calibre/gui2/add.py index 2aee3ce1fa..e812485eba 100644 --- a/src/calibre/gui2/add.py +++ b/src/calibre/gui2/add.py @@ -20,6 +20,7 @@ from calibre.constants import DEBUG, iswindows, isosx, filesystem_encoding from calibre.customize.ui import run_plugins_on_postimport, run_plugins_on_postadd from calibre.db.adding import find_books_in_directory, compile_rule from calibre.db.utils import find_identical_books +from calibre.ebooks.metadata import authors_to_sort_string from calibre.ebooks.metadata.book.base import Metadata from calibre.ebooks.metadata.opf2 import OPF from calibre.gui2 import error_dialog, warning_dialog, gprefs @@ -64,6 +65,10 @@ class Adder(QObject): if not validate_source(source, parent): return QObject.__init__(self, parent) + self.author_map_rules = None + if gprefs.get('author_map_on_add_rules'): + from calibre.ebooks.metadata.author_mapper import compile_rules as acr + self.author_map_rules = acr(gprefs['author_map_on_add_rules']) self.single_book_per_directory = single_book_per_directory self.ignore_opf = False self.list_of_archives = list_of_archives @@ -331,6 +336,15 @@ class Adder(QObject): if gprefs.get('tag_map_on_add_rules'): from calibre.ebooks.metadata.tag_mapper import map_tags mi.tags = map_tags(mi.tags, gprefs['tag_map_on_add_rules']) + if self.author_map_rules: + from calibre.ebooks.metadata.author_mapper import map_authors + new_authors = map_authors(mi.authors, self.author_map_rules) + if new_authors != mi.authors: + mi.authors = new_authors + if self.db is None: + mi.author_sort = authors_to_sort_string(mi.authors) + else: + mi.author_sort = self.db.author_sort_from_authors(mi.authors) self.pd.msg = mi.title diff --git a/src/calibre/gui2/auto_add.py b/src/calibre/gui2/auto_add.py index 9b1069ec2b..3d8fbaf0e0 100644 --- a/src/calibre/gui2/auto_add.py +++ b/src/calibre/gui2/auto_add.py @@ -254,6 +254,12 @@ class AutoAdder(QObject): if gprefs.get('tag_map_on_add_rules'): from calibre.ebooks.metadata.tag_mapper import map_tags mi.tags = map_tags(mi.tags, gprefs['tag_map_on_add_rules']) + if gprefs.get('author_map_on_add_rules'): + from calibre.ebooks.metadata.author_mapper import map_authors, compile_rules + new_authors = map_authors(mi.authors, compile_rules(gprefs['author_map_on_add_rules'])) + if new_authors != mi.authors: + mi.authors = new_authors + mi.author_sort = gui.current_db.new_api.author_sort_from_authors(mi.authors) mi = [mi] dups, ids = m.add_books(paths, [os.path.splitext(fname)[1][1:].upper()], mi,