From 09a5a1cb1b023fd4bfd870dd965a01a5609ba2e9 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 18 Jan 2023 08:14:47 +0530 Subject: [PATCH] Fix detection of identifier URL when template contains regex special chars --- src/calibre/gui2/metadata/basic_widgets.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/metadata/basic_widgets.py b/src/calibre/gui2/metadata/basic_widgets.py index 8e83ee72ad..10a616d3e8 100644 --- a/src/calibre/gui2/metadata/basic_widgets.py +++ b/src/calibre/gui2/metadata/basic_widgets.py @@ -1714,12 +1714,13 @@ class IdentifiersEdit(QLineEdit, ToMetadataMixin): rules = msprefs['id_link_rules'] if rules: formatter = EvalFormatter() - vals = {'id' : '(?P.+)'} + vals = {'id' : '__ID_REGEX_PLACEHOLDER__'} for key in rules.keys(): rule = rules[key] for name, template in rule: try: url_pattern = formatter.safe_format(template, vals, '', vals) + url_pattern = re.escape(url_pattern).replace('__ID_REGEX_PLACEHOLDER__', '(?P.+)') if url_pattern.startswith('http:') or url_pattern.startswith('https:'): url_pattern = '(?:http|https):' + url_pattern.partition(':')[2] new_id = re.compile(url_pattern) @@ -1731,7 +1732,7 @@ class IdentifiersEdit(QLineEdit, ToMetadataMixin): return True except Exception: import traceback - traceback.format_exc() + traceback.print_exc() continue from calibre.customize.ui import all_metadata_plugins