Skip to content

Commit 7dc96f1

Browse files
authored
Added support for downloading external images in SVG for privacy plugin (#7650)
1 parent 1357cd2 commit 7dc96f1

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

material/plugins/privacy/plugin.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -313,12 +313,19 @@ def replace(match: Match):
313313
file = self._queue(url, config)
314314
el.set("src", resolve(file))
315315

316+
# Handle external image in SVG
317+
if el.tag == "image":
318+
url = urlparse(el.get("href"))
319+
if not self._is_excluded(url, initiator):
320+
file = self._queue(url, config)
321+
el.set("href", resolve(file))
322+
316323
# Return element as string
317324
return self._print(el)
318325

319326
# Find and replace all external asset URLs in current page
320327
return re.sub(
321-
r"<(?:(?:a|link)[^>]+href|(?:script|img)[^>]+src)=['\"]?http[^>]+>",
328+
r"<(?:(?:a|link|image)[^>]+href|(?:script|img)[^>]+src)=['\"]?http[^>]+>",
322329
replace, output, flags = re.I | re.M
323330
)
324331

src/plugins/privacy/plugin.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -313,12 +313,19 @@ def replace(match: Match):
313313
file = self._queue(url, config)
314314
el.set("src", resolve(file))
315315

316+
# Handle external image in SVG
317+
if el.tag == "image":
318+
url = urlparse(el.get("href"))
319+
if not self._is_excluded(url, initiator):
320+
file = self._queue(url, config)
321+
el.set("href", resolve(file))
322+
316323
# Return element as string
317324
return self._print(el)
318325

319326
# Find and replace all external asset URLs in current page
320327
return re.sub(
321-
r"<(?:(?:a|link)[^>]+href|(?:script|img)[^>]+src)=['\"]?http[^>]+>",
328+
r"<(?:(?:a|link|image)[^>]+href|(?:script|img)[^>]+src)=['\"]?http[^>]+>",
322329
replace, output, flags = re.I | re.M
323330
)
324331

0 commit comments

Comments
 (0)