🐭喂汁,用Python写个专属Markdown转换工具(下)

简介: 一直使用 Markdown 语法编写文章,然后用Markdown转换工具转换下

④ 四鞭 → 图片、链接


这里有个坑要注意下,笔者再这里卡了好一段时间,手滑按了tab缩进:


网络异常,图片无法展示
|


渲染后的代码:


网络异常,图片无法展示
|


这里是被当成代码块处理了,改为没缩进,或一两个空格缩进就可以了。 同样,抠出样式模板:


网络异常,图片无法展示
|


重写函数渲染模板:


网络异常,图片无法展示
|


这里也有个坑,mistune中会把每一行都当做段落,然后把在这个上面又套一层样式,所以还需要修改下段落渲染函数:


网络异常,图片无法展示
|


传参校验:


网络异常,图片无法展示
|


效果如下:


网络异常,图片无法展示
|


⑤ 五鞭 → 代码高亮、引用、行内代码


代码块的渲染亦称代码高亮,看了网上大部分转换工具,使用的都是使用 highlight.js,样式多多:highlightjs.org/


这里是Python,直接调js渲染有些麻烦,这里使用 pygments代码高亮库 来替换,样式及预览可到下述链接挑选:pygments.org/demo/


pip命令安装一波库:


pip install Pygaments


使用方式也很简单:


网络异常,图片无法展示
|


参数简述:


  • noclasses=True:设置不生成css文件,即使用HTML内联样式;
  • style='perldoc':设置主题;
  • wrapcode=True:使用<code>包裹渲染后的代码;


复制到编辑器看下效果:


网络异常,图片无法展示
|


这里坑可多着呢,罗列下:


  • ① 代码超过屏幕,没有显示横向滚动条,需添加 overflow-x: auto;
  • ② 字体大了,设置12px为佳,要为每个span标签的style属性添加 font-size: 12px;
  • ③ 如下图,代码中的部分字符串没有用span包裹,大小不一,需外层套一个span包裹;


网络异常,图片无法展示
|


此处使用lxml操作节点元素增删及属性修改,具体代码如下:


网络异常,图片无法展示
|


传参校验:


网络异常,图片无法展示
|


字体大小和滚动条都出来了,看似没啥问题了,但如果你点击手机上预览:


网络异常,图片无法展示
|


卧槽,全乱了,有些代码挤在一行上了,归根到底还是换行符\n被微信吃了呗,看了下其他工具的做法:


添加 → white-space:nowrap,指定文本不换行,直到遇到<br>为止。


所以我们需要在合适的地方插入<br>标签,就在lxml解析前加吧:


网络异常,图片无法展示
|


看下手机上的效果:


网络异常,图片无法展示
|


换行倒是换行了,就是前面的缩进没了,看了下别的工具的做法:


前面加上缩进对应数量的&nbsp;


所以,还需要统计每行前面的空格,补上对应数量的&nbsp;


网络异常,图片无法展示
|


看下手机上的效果:


网络异常,图片无法展示
|


好家伙,可以了,也算是把代码块的坑都踩完了!


然后把引用的样式也补上吧:


网络异常,图片无法展示
|


传参校验:


网络异常,图片无法展示
|


最后,把行内代码的样式也补上


网络异常,图片无法展示
|


传参校验:


网络异常,图片无法展示
|


常用结点的解析渲染就讲解到这里,然后就是全文渲染的微调了,换行,各种解析冲突处理啊,限于篇幅,就不一一讲解了,可以参考仓库中的最新代码。


0x5、传统功夫以点到为止


正文的渲染就这样,另外一般公号喜欢每一篇都加上一个特定的头部和尾部,这个简单,直接偷两个样式保存成html模板,正文渲染完后,拼接即可,写下简单示例吧:


网络异常,图片无法展示
|


点击预览,手机看下效果:


网络异常,图片无法展示
|


效果还是很赞的,踩N多坑+写文,总耗时三天,终于把这个工具的雏形做出来了;

尽管它还不完整,不是很人性化,目前只有一个主题,还有各种未知的BUG,鸡动,久违的成就感;


仓库地址github.com/coder-pig/h…


相关文章
|
2月前
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
98 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
4天前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
35 7
|
3月前
|
测试技术 数据库 Python
Python装饰器实战:打造高效性能计时工具
在数据分析中,处理大规模数据时,分析代码性能至关重要。本文介绍如何使用Python装饰器实现性能计时工具,在不改变现有代码的基础上,方便快速地测试函数执行时间。该方法具有侵入性小、复用性强、灵活度高等优点,有助于快速发现性能瓶颈并优化代码。通过设置循环次数参数,可以更准确地评估函数的平均执行时间,提升开发效率。
142 61
Python装饰器实战:打造高效性能计时工具
|
2月前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
83 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
2月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
84 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
3月前
|
数据可视化 算法 数据挖掘
Python时间序列分析工具Aeon使用指南
**Aeon** 是一个遵循 scikit-learn API 风格的开源 Python 库,专注于时间序列处理。它提供了分类、回归、聚类、预测建模和数据预处理等功能模块,支持多种算法和自定义距离度量。Aeon 活跃开发并持续更新至2024年,与 pandas 1.4.0 版本兼容,内置可视化工具,适合数据探索和基础分析任务。尽管在高级功能和性能优化方面有提升空间,但其简洁的 API 和完整的基础功能使其成为时间序列分析的有效工具。
135 37
Python时间序列分析工具Aeon使用指南
|
3月前
|
机器学习/深度学习 人工智能 文字识别
Zerox:AI驱动的万能OCR工具,精准识别复杂布局并输出Markdown格式,支持PDF、DOCX、图片等多种文件格式
Zerox 是一款开源的本地化高精度OCR工具,基于GPT-4o-mini模型,支持PDF、DOCX、图片等多种格式文件,能够零样本识别复杂布局文档,输出Markdown格式结果。
289 4
Zerox:AI驱动的万能OCR工具,精准识别复杂布局并输出Markdown格式,支持PDF、DOCX、图片等多种文件格式
|
3月前
|
人工智能 文字识别 自然语言处理
Vision Parse:开源的 PDF 转 Markdown 工具,结合视觉语言模型和 OCR,识别文本和表格并保持原格式
Vision Parse 是一款开源的 PDF 转 Markdown 工具,基于视觉语言模型,能够智能识别和提取 PDF 中的文本和表格,并保持原有格式和结构。
472 19
Vision Parse:开源的 PDF 转 Markdown 工具,结合视觉语言模型和 OCR,识别文本和表格并保持原格式
|
4月前
|
人工智能 文字识别 数据挖掘
MarkItDown:微软开源的多格式转Markdown工具,支持将PDF、Word、图像和音频等文件转换为Markdown格式
MarkItDown 是微软开源的多功能文档转换工具,支持将 PDF、PPT、Word、Excel、图像、音频等多种格式的文件转换为 Markdown 格式,具备 OCR 文字识别、语音转文字和元数据提取等功能。
689 9
MarkItDown:微软开源的多格式转Markdown工具,支持将PDF、Word、图像和音频等文件转换为Markdown格式
|
3月前
|
存储 算法 Serverless
剖析文件共享工具背后的Python哈希表算法奥秘
在数字化时代,文件共享工具不可或缺。哈希表算法通过将文件名或哈希值映射到存储位置,实现快速检索与高效管理。Python中的哈希表可用于创建简易文件索引,支持快速插入和查找文件路径。哈希表不仅提升了文件定位速度,还优化了存储管理和多节点数据一致性,确保文件共享工具高效运行,满足多用户并发需求,推动文件共享领域向更高效、便捷的方向发展。