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

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

0x1、需求分析


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






转换后的文章样式(以Md2All为例):


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


还行,简洁够用。但,人总是很难满足于现状,三个诱因让我有了改变的念头:


  • 工具毕竟不是开源的,你用别人也用,样式烂大街,都是改改颜色,替换图片、审美疲劳;


  • 老弟给我安利的公号编辑插件,如新媒体管家(已凉),壹伴助手,秀米,135、小蚂蚁等;


作为漆黑中的萤火虫,怎甘平平无奇,于是花了点时间,来定制自己的文章排版~


在参(chao)考(xi)完多个公号后,整理了自己的公号排版规范,有需要的可以参考一波~


# 字号:正文(14、15),注释-标注来源-超链接-代码(12)
# 字间距:(1、1.5)
# 行间距:(1.5、1.75、2)
# 页边距:即双端缩进、两端对齐,页面左右留白,建议缩进尺寸为1.0
# 字体颜色:标题 #000000;正文 #4C4C4C;标注 #888888;其他 #B2B2B2
# 正文也可以尝试:#545454;#3f3f3f;#7f7f7f;#2f2f2f
# 备注性文字:#a5a5a5
# Tips:除去字体颜色,公号排版颜色不宜超过三种,颜色一旦多起来,风格就很难定,2-3种尤佳;
# 比如我的三种颜色:蕾姆蓝#5A78EA;拉姆粉#FF4081;艾米莉亚:#C65BDA
# 符号系统:建立自己的符号系统,用作内容分割,比如用//////////作为正文大段落的分隔,- 作为段落小结的分隔,有时还可以使用一些表情符号来增加趣味性:http://cn.piliapp.com/symbol/
# 不管怎么排,要有自己固定的设置,如:段落和图片间空2行、图片大小控制在一屏版面的1/3面积内、一个段落不超过3行字、每当一屏版面文字太满时,拆解段落做分段或做一些highlight制造空间感等。
# 总而言之,尽量利用 简单的基础设置 去优化阅读体验,让整体排版看起来简洁但有序、不密集、不沉重、不压抑。
# 采用固定格式的公号封面图!!! 
# 固定版式形成强烈的个人特色,制作新的封面图只需置换文字和图片,好看又方便。


具体效果可以看下:mp.weixin.qq.com/s/why-ikTbb…


大概的样式,其实就下面这几种:


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


而每次写完文章,想发布到公号,我需要这样:


复制文章内容()
无格式粘贴到公号文章编辑处()
for(其中一行:所有内容) {
    when(其中一行) {
        is 一级标题 → 应用一级标题样式
        is 二级标题 → 应用一级标题样式
        is 正文 → 应用正文样式
        ...
    }
}


机器重复,费事费力费神,特别是表格复制粘贴,令人绝望,文章内容多的时候,得花上半把小时,热情也被消磨殆尽... 迫切需一种工具,帮我跳出这样的困境,不能全自动,也要尽可能减少我花在排版上的时间。


0x2、工具设计


转换工具的核心:→ 解析Markdown文件对特定类型元素进行渲染生成HTML文件


这里的渲染,其实没那么高深,以 Md2All工具为例,输入:# 一级标题


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


点击复制,然后随便贴到一个IDE,保存为.html后缀,格式化一下:


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


因为微信公众号文章不支持CSS和JS(不过支持SVG),所以只能在HTML标签里写内联样式。 所以,这里的渲染其实只是:当解析到特定类型元素时,替换成对应的带内联样式的HTML代码


所以,想写这样的工具,要点就是:


  • ① 解析Markdown,能对不同类型的元素做区分;
  • ② 各种带有样式的HTML代码;


先是解析Markdown的问题,秉着有轮子就不自己造的精神,直接搜关键字Python MarkDown解析,在众多的库中选择了mistune


而样式HTML的获取,就简单多了,善用Chrome开发者工具的Elements即可,比如:


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


看上的样式,直接偷


当然,获取到的样式可能还需要微调下,接着到工具开发环节~


0x3、我啪的就站起来了,很快嗷


上面也说了,使用浑元功法(mistune),来解析Markdown,简要介绍下此库:



直接用pip命令安装一波:


pip install mistune==2.0.0a4


用法也很简单,写个简单的Demo体验体验:


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


默认渲染样式显然不能满足我们的需求,需要自定义渲染器,定义一个渲染器 mistune.HTMLRenderer 的子类,重写相应的函数即可。同样写个简单例子,以#、##的解析为例:


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


运行输出结果如下:


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


接着塞到文章编辑器里验证下,微信不支持粘贴源码,借助开发者工具,定位到正文元素,右键选中:


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


粘贴一波:


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


回到编辑器看下效果:


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


可以,跟预期一致,大概玩法就这样,接着就是具体逻辑的细化及优化了。更多渲染器中可供重写的函数可以参见下述链接:mistune.readthedocs.io/en/latest/a…


0x4、松果弹抖闪电鞭


接着是记录开发此工具的细节,有兴趣想自定义的可以借鉴一波,不感兴趣的直接跳过用成品亦可,后续会慢慢更新一些主题,也欢迎投稿~


① 一鞭 → 样式采集示例


因为用的壹伴助手插件,复制元素的时候带了点没用的东西:


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


有些洁癖,写个正则清洗一下:


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


清洗完:


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


强迫症作祟,格式化下代码,这里用的lxml,你也可以用BeautifulSoup或者其他:


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


看下效果:


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


可以,舒适感up↑,后续采集到的样式,先放这个池子里清洗一下,再用,也可添加新的过滤规则。


样式搞到手了,接着就该想想怎么存了,总不能像Demo那里一样,复制一堆字符串吧。繁冗不说,复用性也差,这里引入模板的概念,将每个样式保存成单个html,用到传参渲染,此处使用jinja2模板库


pip命令安装一波:


pip install Jinja2


接着把文本部分,替换成一个变量text:


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


再接着使用jinja2获取模板并渲染:


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


输出结果如下:


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


可以,很强,关于Jinja2的具体用法可参见:




创建模板,使用模板渲染的流程就这样,接下来演示下每种样式的具体获取过程。


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

热门文章

最新文章