mirror of
https://github.com/ankitects/anki.git
synced 2025-09-23 16:26:40 -04:00
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:
parent
b6972a22e8
commit
e0d05e49d6
1 changed files with 23 additions and 15 deletions
|
@ -615,37 +615,45 @@ to a cloze type first, via Edit>Change Note Type."""))
|
||||||
|
|
||||||
removeTags = ["script", "iframe", "object", "style"]
|
removeTags = ["script", "iframe", "object", "style"]
|
||||||
|
|
||||||
def _pastePreFilter(self, html):
|
def _pastePreFilter(self, html, internal):
|
||||||
with warnings.catch_warnings() as w:
|
with warnings.catch_warnings() as w:
|
||||||
warnings.simplefilter('ignore', UserWarning)
|
warnings.simplefilter('ignore', UserWarning)
|
||||||
doc = BeautifulSoup(html, "html.parser")
|
doc = BeautifulSoup(html, "html.parser")
|
||||||
|
|
||||||
for tag in self.removeTags:
|
if not internal:
|
||||||
for node in doc(tag):
|
for tag in self.removeTags:
|
||||||
node.decompose()
|
for node in doc(tag):
|
||||||
|
node.decompose()
|
||||||
|
|
||||||
# convert p tags to divs
|
# convert p tags to divs
|
||||||
for node in doc("p"):
|
for node in doc("p"):
|
||||||
node.name = "div"
|
node.name = "div"
|
||||||
|
|
||||||
for tag in doc("img"):
|
for tag in doc("img"):
|
||||||
try:
|
try:
|
||||||
if self.isURL(tag['src']):
|
src = tag['src']
|
||||||
# convert remote image links to local ones
|
|
||||||
fname = self.urlToFile(tag['src'])
|
|
||||||
if fname:
|
|
||||||
tag['src'] = fname
|
|
||||||
except KeyError:
|
except KeyError:
|
||||||
# for some bizarre reason, mnemosyne removes src elements
|
# for some bizarre reason, mnemosyne removes src elements
|
||||||
# from missing media
|
# 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)
|
html = str(doc)
|
||||||
return html
|
return html
|
||||||
|
|
||||||
def doPaste(self, html, internal):
|
def doPaste(self, html, internal):
|
||||||
if not internal:
|
html = self._pastePreFilter(html, internal)
|
||||||
html = self._pastePreFilter(html)
|
|
||||||
extended = self.mw.app.queryKeyboardModifiers() & Qt.ShiftModifier
|
extended = self.mw.app.queryKeyboardModifiers() & Qt.ShiftModifier
|
||||||
if extended:
|
if extended:
|
||||||
extended = "true"
|
extended = "true"
|
||||||
|
|
Loading…
Reference in a new issue