脚本实现全局文本替换

可以在语雀阅读

正文

写了一个小脚本,用来实现全库的文本替换。在思源推出了更新块的 API 之后,实现这个功能已经非常简便了。

思源的大部分数据都是 markdown,如果不涉及到跨块操作,那么简单的文本替换就可以满足许多需求。各种块内的格式也是支持的,包括块引用。

举一个简单的例子,我想要将文章开头的 类型:文章 批量加上块引用,那么我可以考虑将其替换为 类型:((20220114165451-cs2hp0o \"文章\")).

执行命令:

python3 siyuan_replacer.py "类型:文章" "类型:((20220114165451-cs2hp0o \"文章\"))"

image.png

当然,更好的操作方法是在模板中添加好引用。但对于那些陈旧的数据,利用这个方法更新一下就可以维护数据的统一性。

image.png

每次执行都会在同目录产生一个备份文件,以每行 id:::markdown 的形式记录了被更新的块的数据。如果出了什么问题,可以利用这个备份来恢复数据。
不过在没出问题之前,我是不会写好恢复工具的、、、

请注意使用最新版的 siyuanhelper. 全局替换有潜在的数据风险,请做好防范工作。目前为了方便,只支持了段落块 type=p 的替换。

想要使用,请在 TinyScripts 仓库中找到 siyuan_replacer.py 下载下来使用。安装 siyuanhelper 依赖即可。

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...