mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 02:34:06 -04:00
Fix detection of identifier URL when template contains regex special chars
This commit is contained in:
parent
21994332d6
commit
09a5a1cb1b
@ -1714,12 +1714,13 @@ class IdentifiersEdit(QLineEdit, ToMetadataMixin):
|
|||||||
rules = msprefs['id_link_rules']
|
rules = msprefs['id_link_rules']
|
||||||
if rules:
|
if rules:
|
||||||
formatter = EvalFormatter()
|
formatter = EvalFormatter()
|
||||||
vals = {'id' : '(?P<new_id>.+)'}
|
vals = {'id' : '__ID_REGEX_PLACEHOLDER__'}
|
||||||
for key in rules.keys():
|
for key in rules.keys():
|
||||||
rule = rules[key]
|
rule = rules[key]
|
||||||
for name, template in rule:
|
for name, template in rule:
|
||||||
try:
|
try:
|
||||||
url_pattern = formatter.safe_format(template, vals, '', vals)
|
url_pattern = formatter.safe_format(template, vals, '', vals)
|
||||||
|
url_pattern = re.escape(url_pattern).replace('__ID_REGEX_PLACEHOLDER__', '(?P<new_id>.+)')
|
||||||
if url_pattern.startswith('http:') or url_pattern.startswith('https:'):
|
if url_pattern.startswith('http:') or url_pattern.startswith('https:'):
|
||||||
url_pattern = '(?:http|https):' + url_pattern.partition(':')[2]
|
url_pattern = '(?:http|https):' + url_pattern.partition(':')[2]
|
||||||
new_id = re.compile(url_pattern)
|
new_id = re.compile(url_pattern)
|
||||||
@ -1731,7 +1732,7 @@ class IdentifiersEdit(QLineEdit, ToMetadataMixin):
|
|||||||
return True
|
return True
|
||||||
except Exception:
|
except Exception:
|
||||||
import traceback
|
import traceback
|
||||||
traceback.format_exc()
|
traceback.print_exc()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
from calibre.customize.ui import all_metadata_plugins
|
from calibre.customize.ui import all_metadata_plugins
|
||||||
|
Loading…
x
Reference in New Issue
Block a user