From e4164d71d2b899294f4bb1158557619cc7278122 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 22 Dec 2009 19:44:34 -0700 Subject: [PATCH] Add option to swap author first name and last name when reading metadata from a file name --- src/calibre/ebooks/metadata/meta.py | 9 +++++++++ src/calibre/gui2/dialogs/config/add_save.py | 2 ++ src/calibre/gui2/dialogs/config/add_save.ui | 18 ++++++++++++++---- src/calibre/utils/config.py | 2 ++ 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/calibre/ebooks/metadata/meta.py b/src/calibre/ebooks/metadata/meta.py index 09b273e935..479b513ea5 100644 --- a/src/calibre/ebooks/metadata/meta.py +++ b/src/calibre/ebooks/metadata/meta.py @@ -132,6 +132,15 @@ def metadata_from_filename(name, pat=None): au = match.group('author') aus = string_to_authors(au) mi.authors = aus + if prefs['swap_author_names'] and mi.authors: + def swap(a): + parts = a.split() + if len(parts) > 1: + t = parts[-1] + parts = parts[:-1] + parts.insert(0, t) + return ' '.join(parts) + mi.authors = [swap(x) for x in mi.authors] except (IndexError, ValueError): pass try: diff --git a/src/calibre/gui2/dialogs/config/add_save.py b/src/calibre/gui2/dialogs/config/add_save.py index 377007831f..54d948044b 100644 --- a/src/calibre/gui2/dialogs/config/add_save.py +++ b/src/calibre/gui2/dialogs/config/add_save.py @@ -56,6 +56,7 @@ class AddSave(QTabWidget, Ui_TabWidget): self.opt_read_metadata_from_filename.setChecked(not prefs['read_file_metadata']) self.filename_pattern = FilenamePattern(self) self.metadata_box.layout().insertWidget(0, self.filename_pattern) + self.opt_swap_author_names.setChecked(prefs['swap_author_names']) def validate(self): tmpl = preprocess_template(self.opt_template.text()) @@ -87,6 +88,7 @@ class AddSave(QTabWidget, Ui_TabWidget): prefs['read_file_metadata'] = not bool(self.opt_read_metadata_from_filename.isChecked()) pattern = self.filename_pattern.commit() prefs['filename_pattern'] = pattern + prefs['swap_author_names'] = bool(self.opt_swap_author_names.isChecked()) return True diff --git a/src/calibre/gui2/dialogs/config/add_save.ui b/src/calibre/gui2/dialogs/config/add_save.ui index 513be73e54..806f77dade 100644 --- a/src/calibre/gui2/dialogs/config/add_save.ui +++ b/src/calibre/gui2/dialogs/config/add_save.ui @@ -20,8 +20,8 @@ &Adding books - - + + Here you can control how calibre will read metadata from the files you add to it. calibre can either read metadata from the contents of the file, or from the filename. @@ -31,14 +31,24 @@ - + Read metadata only from &file name - + + + + Swap the firstname and lastname of the author. This affects only metadata read from file names. + + + &Swap author firstname and lastname + + + + &Configure metadata from file name diff --git a/src/calibre/utils/config.py b/src/calibre/utils/config.py index 9281165d5f..697cfbe388 100644 --- a/src/calibre/utils/config.py +++ b/src/calibre/utils/config.py @@ -649,6 +649,8 @@ def _prefs(): help=_('Read metadata from files')) c.add_opt('worker_process_priority', default='normal', help=_('The priority of worker processes')) + c.add_opt('swap_author_names', default=False, + help=_('Swap author first and last names when reading metadata')) c.add_opt('migrated', default=False, help='For Internal use. Don\'t modify.') return c