gpt4 book ai didi

Python Markdown : How can I config Base URL for Media when markdown string into HTML

转载 作者:行者123 更新时间:2023-12-01 08:17:02 26 4
gpt4 key购买 nike

我有一个字符串:

# H1 tag
h1 content is here

![](/media/blog/1551266934_21_289.jpg)

如您所见,我有一张图像 ![](/media/blog/1551266934_21_289.jpg) (与 ![](mydomain.com/media/blog/1551266934_21_289.jpg) 相同)

当markdown时,它变成:<img src="/media/blog/1551266934_21_289.jpg"/>

但我想要的结果是使用不同的基本网址:

<img src="https://media.mydomain.com/media/blog/1551266934_21_289.jpg"/>

最佳答案

您可以使用Python-Markdown的Extension API并开发一个插件来更改所有图像的 src 属性。

在这种特定情况下,您可以通过子类化 ImageInlineProcessorReferenceInlineProcessor 来覆盖 image_linkimage_reference 内联处理器> 类(class)。但不需要改变解析器的行为。您只需修改所有img标签的src属性即可。使用 TreeProcessor 是最简单的.

from markdown.treeprocessors import Treeprocessor
from urllib.parse import urljoin

BASE = 'https://media.mydomain.com/'

class ImgBaseTreeprocessor(Treeprocessor):
def run(self, root):
# Loop through all img elements
for img in root.getiterator('img'):
# Join base to the src URL
img.set('src', urljoin(BASE, img.get('src'))

现在您需要通过 Extension 子类告诉 Markdown 类有关您的新 Treeprocessor 的信息:

from markdown.extensions import Extension

class ImgBase(Extension):
def extendMarkdown(self, md, md_globals):
# register the new treeprocessor with priority 15 (run after 'inline')
md.treeprocessors.register(ImgBaseTreeprocessor(md), 'imgbase', 15)

最后,您需要告诉 Markdown 使用您的新扩展:

from markdown import markdown

html = markdown(text, extensions=[ImgBase()])

您可以采取一些措施来改进扩展,这些操作留给读者作为练习:

  1. 添加 configuration setting到扩展程序来设置基本 URL,而不是对其进行硬编码。
  2. 在加入基础时进行一些错误检查,以确保现有网址尚不具备基础。
  3. 将其打包到 Python 包中以便分发并与其他人共享。

关于Python Markdown : How can I config Base URL for Media when markdown string into HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54920208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com