基于Python实现的复制、移动、离线化你的 Markdown 文档,清理 Markdown 引用路径中的垃圾文件

news2024/11/16 5:57:44

Markdown 工具箱

完整代码下载地址: Markdown 工具箱

🚩 简介

Markdown 工具箱,是我为 Markdown 笔记管理做的一个工具集。目前有以下几个功能:

  • 复制

    批量将 md 笔记(连带它的相对路径引用的图片、附件)复制或移动到另一指定的文件夹

  • 离线化

    批量将 md 笔记中的在线图片、附件、绝对路径引用的文件下载或移动到笔记的相对路径文件夹中,并将原始笔记中原来的绝对路径改为相对路径

  • 清理

    批量清理 Markdown 相对路径索引的文件夹中已不再被引用的图片

👍 安装和使用方式

已发布到 pypi 上,安装 python3 后,使用 pip install Markdown-Toolbox 即可安装,再使用 MarkdownToolboxMarkdown-Toolbox 命令就可以启动了。

你也可以将仓库克隆到本地,先使用 pip install -r requirements.txt 安装依赖后,使用 python __init__.py 启动。

有空的话我会打包 Win64 的 exe 版本到发行界面。

🔮 软件界面

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

📝 开发背景

为了方便地整理 md 文档

我不信任任何图床,但是 TextBundle 还没有普及,所以目前我在做 Markdown 笔记的时候,会把图片都放到 md 文档同目录下的 assets 文件夹,用相对路径引用图片。

但这就带来一个问题:一个目录下所有笔记的图片都在同一个 assets 目录下,如果我想要整理下笔记,将其中几份笔记移动到另一个文件夹,因为所有图片使用的是相对路径,我就需要将所有引用到的图片都一并复制过去。

而如果要从存有上百张、上千张图片的 assets 文件夹中找到要移动的文档所引用的所有图片,是非常困难的;而如果一股脑将整个 assets 文件夹复制过去,必然会造成磁盘空间浪费。

这就是 Markdown 的通病:

  • 图片用图床吧,网络会影响体验,图床也难保几十年地靠谱
  • 图片用本地绝对路径吧,分享文档到其它设备,就看不了图了
  • 图片用本地相对路径吧,多个文档共用一个图片目录的话,后期整理和分享也都不方便

不过我还是坚持 md 笔记使用本地相对路径的图片,为了方便整理文档,就写了这个工具,第一个功能是 复制,用于移动文档的同时自动移动文档中索引的相对路径的图片、附件。

为了离线网络文章的图片

通过一些(例如简悦)浏览器插件可以将网络上的文章保存为 md 格式,不过里面的图片仍然是在线链接,如果这些文章很棒,为了避免其中的图片链接失效,就需要将其下载下来。

另外,虽然将网页上的文章复制到 Typora 等编辑器也可以直接将图片下载下来,但也有以下不足:

  • 不能批量操作
  • 对有些为了防爬虫而要求 cookies 的网站的图片无法成功下载
  • 对有些为了防外链而对 Headers 有要求的网站的图片无法成功下载

还有在我将 mp4、mp3 等文件拖入 Typora 时,Typora 也不会将这些文件自动复制到 assets 目录。

所以做了 离线化 这个功能,方便批量地将所有文档中引用到的附件、图片放到相对路径中引用。

为了清理图片垃圾

在 Typora 中,例如我截了一张图,粘贴进去,这张图片就会被自动保存到相对路径的 assets 目录,但是,如果我将这个图片从文档中删掉,删掉的只是它的引用路径,实际图片文件仍然在 assets 目录中保存着,长久以往,assets 中必然会有许多没有被引用但是仍占据空间的垃圾文件,它们混杂在被正常引用的文件中,很难一一删掉。

所以我做了这个清理功能,原理是:

​ 对指定文件夹,得到这个文件夹下所有的 md 文档(不递归),从所有的文档中统计都有哪些正在被以相对路径引用的图片和附件,并找到这些图片和附件的所在文件夹,得到这些附件文件夹中所有的文件,再一一比对哪些文件没有被上述找到的 md 文档引用,统一移动到同级 未引用附件 文件夹中,在弹出对话框经用户确认后删除它们。

✨ 特性

  • Python3 用 Pyside2 写的,对于 Linux、MacOS、Windows 系统,只要装了 Python3 就能用。
  • 我是个编程渣渣,用不惯英文变量(不会起名,阅读理解的速度也慢),程序里的大部分变量都是中文
  • 没有精力做英文版本

完整代码下载地址: Markdown 工具箱

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1125779.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c#中使用stringbuilder的Append方法写sql语句

c#中使用stringbuilder的Append方法写sql语句 c#中使用stringbuilder的Append方法写sql语句_c#strsql.append_安静点DGC的博客-CSDN博客https://blog.csdn.net/qq_26925297/article/details/81586884 特此记录 anlog 2023年8月8日

PMP考试中有哪些疑点、难点?

目前PMP考试的内容只有最后5个月是按照旧考纲,后面的考试基本上都是按照新考纲进行。因此,备考的朋友们需要学习很多新的知识点和敏捷学习方法。所以现在是给今年想要备考的朋友们提供学习建议的时候了。 01、新版考纲将主要关注以下三个新领域&#xf…

一、XSS加解密编码解码工具

一、XSS加解密编码解码工具 解释:使用大佬开发的工具,地址:https://github.com/Leon406/ToolsFx/blob/dev/README-zh.md 在线下载地址: https://leon.lanzoui.com/b0d9av2kb(提取码:52pj)(建议下载jdk8-w…

每天一道算法题——动态规划

找到工作就不更新了~ 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: …

博客系统自动化测试

1、博客列表页面测试 测试内容 测试代码: TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class BlogListTest extends Autotest{public static ChromeDriver driver createDriver();// 准备工作TestBeforeAllstatic void ready() {driver.get(&q…

适用于 Mac 电脑的 10 款最佳数据恢复工具集

无论是个人照片还是重要的商业文档,对于那些依赖计算机获取重要文件的人来说,数据丢失都是一场噩梦。 值得庆幸的是,Mac用户可以使用各种数据恢复工具,可以帮助您恢复丢失或意外删除的文件。 在本文中,我们将采用适用于…

RAM(recognize anything)—— 论文详解

一、概述 1、是什么 RAM 论文全称 Recognize Anything: A Strong Image Tagging Model。区别于图像领域常见的分类、检测、分割,他是标记任务——即多标签分类任务(一张图片命中一个类别),区分于分类(一张图片命中一个…

Unity Meta Quest 一体机开发:前期准备和环境配置(2023 版,Oculus Integration v57)

​ 文章目录 📕教程说明📕思维导图概括📕开发者模式📕可下载的软件⭐Oculus 电脑客户端⭐SideQuest⭐Meta Quest Developer Hub⭐Unity Hub 📕安装 Unity 时需要添加的模块📕设置 Unity 的 Build Settings…

构建高性能应用的利器:Nginx反向代理及配置详解

一、Nginx概念解读 对于新事物的理解,最好的方式就是从概念入手,本文作为《Nginx专题》系列文章的第一篇,先从Nginx的名称开始来分解这个神秘的引擎。 Nginx,是engine X的缩写,发音也是engine x,2004年由…

安装dai li

https://xn–6nq44r2uh9rhj7f.com/#/knowledge 先gomai订阅, 在打开使用文档

【大数据】Kafka 实战教程(二)

Kafka 实战教程(二) 1.下载2.安装3.配置4.运行4.1 启动 Zookeeper4.2 启动 Kafka 5.第一个消息5.1 创建一个 Topic5.2 创建一个消息消费者5.3 创建一个消息生产者 1.下载 你可以在 Kafka 官网:http://kafka.apache.org/downloads&#xff0c…

绝对不可错过的6个搜索引擎网站,超级值得收藏

https://www.gobaidugle.com/ 一个全能的搜索引擎网站,支持设置多种搜索模式,可以根据需求选择双搜、三搜、单搜等方式。 如果是双搜的话你可以看到多种搜索结果,能够一键搜索到自己需要的内容,非常简单快捷。 2、懒盘搜索 htt…

物联网AI MicroPython传感器学习 之 GC7219点阵屏驱动模块

学物联网,来万物简单IoT物联网!! 一、产品简介 LED-8 * 32点阵屏显示板由 4 块单色 8x8 共阴红色点阵单元组成,通过 SPI 菊花链模式将多块显示屏连接后可以组成更大的分辨率显示屏幕,任意组合分辨率。可用于简单仪表显…

义乌再次位列第一档!2022年跨境电商综试区评估结果揭晓!

义乌跨境电商综试区捷报频传,在商务部公布的“2022年跨境电子商务综合试验区评估”结果中,中国(义乌)跨境电子商务综合试验区(以下简称:“跨境综试区”)评估结果为成效明显,综合排名…

Qt扫盲-QImage 理论总结

QImage 理论总结 一、概述二、读写图像文件三、图像信息四、像素操作1. 32位2. 8位 五、图像格式六、图像转换 一、概述 QImage类提供了一个独立于硬件的图像表示,允许直接访问像素数据,并且可以用作绘画设备。Qt提供了四个类来处理图像数据&#xff1a…

volatile-可见性案例详解

6.3 volatile特性 6.3.1 保证可见性 保证不同线程对某个变量完成操作后结果及时可见,即该共享变量一旦改变所有线程立即可见 不加volatile,没有可见性,程序无法停止 加了volatile,保证可见性,程序可以停止 public…

爱创科技携手洽洽食品,探索渠道数字化最优解!

坚果的下半场,是从吃到喝。 消费升级大潮下,健康养生理念逐渐深入人心。以“天然健康”为核心的食品新消费潮流正加速形成,一个个打着“美味与营养”黄金设定的品类风口正被不断创建,其中人气有增无减的当属植物基饮品。据相关报告…

数据结构详细笔记——树

文章目录 树的定义和基本术语结点、树的属性描述有序树与无序树树与森林 树的常考性质树的存储结构双亲表示法(顺序存储)孩子表示法(顺序链式存储)孩子兄弟表示法(链式存储) 树和森林的遍历树的遍历森林的遍…

JVM、JRE、JDK

JVM JVM(Java Virtual Machine)是Java虚拟机的缩写,他是Java编程语言运行时环境,负责执行Java字节码。另外作为JVM虚拟机,它在各种操作系统上提供统一的平台,这帮助Java应用程序可以独立于操作系统底层运行…

Python自动化测试selenium指定截图文件名方法

这篇文章主要介绍了Python自动化测试selenium指定截图文件名方法,Selenium 支持 Web 浏览器的自动化,它提供一套测试函数,用于支持 Web 自动化测试,下文基于python实现指定截图文件名方法,需要的小伙伴可以参考一下 前…