fix broken image links when pasting between fields

https://anki.tenderapp.com/discussions/beta-testing/853-anki-210-beta-21#comment_43959510
This commit is contained in:
Damien Elmes 2017-11-11 11:51:30 +10:00
parent b6972a22e8
commit e0d05e49d6

View file

@ -615,11 +615,12 @@ to a cloze type first, via Edit>Change Note Type."""))
removeTags = ["script", "iframe", "object", "style"]
def _pastePreFilter(self, html):
def _pastePreFilter(self, html, internal):
with warnings.catch_warnings() as w:
warnings.simplefilter('ignore', UserWarning)
doc = BeautifulSoup(html, "html.parser")
if not internal:
for tag in self.removeTags:
for node in doc(tag):
node.decompose()
@ -630,22 +631,29 @@ to a cloze type first, via Edit>Change Note Type."""))
for tag in doc("img"):
try:
if self.isURL(tag['src']):
# convert remote image links to local ones
fname = self.urlToFile(tag['src'])
if fname:
tag['src'] = fname
src = tag['src']
except KeyError:
# for some bizarre reason, mnemosyne removes src elements
# from missing media
pass
continue
# in internal pastes, rewrite mediasrv references to relative
if internal:
m = re.match("http://127.0.0.1:\d+/(.*)$", src)
if m:
tag['src'] = m.group(1)
else:
# in external pastes, download remote media
if self.isURL(src):
fname = self.urlToFile(src)
if fname:
tag['src'] = fname
html = str(doc)
return html
def doPaste(self, html, internal):
if not internal:
html = self._pastePreFilter(html)
html = self._pastePreFilter(html, internal)
extended = self.mw.app.queryKeyboardModifiers() & Qt.ShiftModifier
if extended:
extended = "true"