只是想重命名一张图片,为什么这么难?
我们需要魔改 obsidian-image-auto-upload-plugin
插件,因为它不支持基于 oss 返回的结果自动重命名图片的描述,这很不友好。
我开始用 AI 修改。
很快。
我感觉我改的是对的,但改了半天,总是不符合预期。
原来最新版是 master(5.0.0),但是我安装的插件版本是 4.1.0。
根据 obsidian 插件的规定,打了 tag 的才会被安装。(之前开发的经验)
所以滚回 4.1.0,继续修改。
我感觉我改的还是对的,但改了半天,又不符合预期。
图片不见了!
经过大量的调试,我断定不是我们这个插件的问题。
而且有证据,它们的插件里支持图片描述里填写数字以修改图片的大小。
于是我开始继续用 AI 魔改 oz-image-in-editor-obsidian
这个插件。
结果我感觉我改的还是对的,但改了半天,又双叒叕不符合预期!
我终于明白了!
是 obsidian 的问题!
我把这些插件都 disable,obisidian 自己就会基于图片的纯数字描述进行图片的缩放。
例如:
所以我索性直接把 oz-image-in-editor-obsidian
这个插件卸载了。
专心思考避免纯数字图片描述的问题。
尽管还有一种办法,就是基于插件魔改 obsidian 的 default 行为,让它检测到一个类似时间戳的图片描述时,不要认为是表达图片的宽度。
但从工程上来说,比较麻烦。
而且也不太符合工程师的 taste,因为要给某类数字开后门(要么对大小做限制,要么对语义做限制)。
思考有没有更好的办法。
我发现 picgo 是有插件市场的。
但是搜索功能无效。
盲猜是要更新。
果然是。
而且正好就是对插件搜索的一些修复。
但更新后的搜索也是无效的。最后是本地导入才能让插件生效的。
搜索可以用了。
那么我们只需要在重命名的时候,自动加个前缀就行了,比如 picgo
。
所以我们就试着安装一个插件。
我们安装了 picgo-plugin-super-prefix
插件,六年前的。
一开始不是在插件市场安装的,而是直接本地安装然后编译发现有问题。
在使用 windsurf + claude 对项目做了一些 ts 的修复后,发现这个插件不太行。
首先它是在 picgo 不开启文件重命名的情况下才会触发,自动给文件加上前缀。
而我现在的需求是,开启 picgo 的文件重命名功能,并且在 prompt 我输入新的文件名的时候,默认有个前缀。
因此这个插件满足不了我的需求。
本来都快要失望了,结果发现另一款插件 picgo-plugin-rename-file
可以满足我,尽管是五年前的。
在 picgo 里搜索是叫 rename-file。
然后我会选择配置成 {hash}
以获得文件的唯一值。
# 官网介绍:https://github.com/liuwave/picgo-plugin-rename-file?tab=readme-ov-file#picgo-plugin-rename-file
命名规则:
- {y} 年,4位
- {m} 月,2位
- {d} 日期,2位
- {h} 小时,2位
- {i} 分钟,2位
- {s} 秒,2位
- {ms} 毫秒,3位(**v1.0.4**)
- {timestamp} 时间戳(秒),10位(**v1.0.4**)
- {hash},文件的md5值,32位
- {origin},文件原名(会去掉后缀)
- {rand:<count>}, 随机数,<count>表示个数,默认为6个,示例:{rand:32}、{rand}
- {localFolder:<count>}, <count>表示层级 ,默认为1,示例:{localFolder:6}、{localFolder}
我本来尝试使用 {y}/{m}/{d}/{h}:{i}:{s}
的命名风格,结果到 obsidian 本地后,图片是读取不出来的,因为做了转义,和阿里云 oss 里的路径不匹配。
这个理论上应该也可以解决,但现在实在没兴趣了,打不过就直接绕过。
至此,我们终于实现了:
- 当我们在 obsidian 里粘贴一张图片时,触发图片上传
- 上传之前弹窗重命名文件,基于
picgo-plugin-rename-file
以及其配置默认为 hash 值(否则为时间戳+后缀,导致基于我们魔改的obsidian-image-auto-upload-plugin
插件会变成纯数字的时间戳,最终在 obsidian 里被理解成一个巨宽的图片导致显示空白 - 我可以手动修改这个 hash 值为一个更有意义的命名用于文章的输出(想到了一个绝佳的 idea 1,应该基于图片的内容自动化重命名,这个 picgo 插件应该可以试着做一下!)
- 基于我们魔改的
obsidian-image-auto-upload-plugin
插件会自动从返回的 oss 链接中提取文件名,并作为我们最终的图片描述(想到了一个绝佳的 idea 2,应该基于文章的上下文,以及这个图片的文件名再度自动化重命名,这个 obsidian 插件应该可以试着做一下!)
也不禁感叹,大家给 picgo 写的插件都是五六年前的事了。
picgo 真地坚挺了好久,已经都 25k star 了。
想来它们也是很早拥抱 electron 的一代开源产品了。
真挺好用的,尽管我总有魔改它的冲动。
比如重命名的时候,可否把文件名和文件类型分开捏🤔
以及 gallery 是否可以做的更酷炫些!
等等……
程序员想法就是多……
”且往往没有价值“。
23333
本次沉淀:
- obsidian 插件 renmu123/obsidian-image-auto-upload-plugin: auto upload image with picgo
- picgo 插件 liuwave/picgo-plugin-rename-file: A PicGo plugin for elegant file name prefix
本次 todo:
- 写(或魔改)一个 obsidian 插件,用于基于上下文重命名图片描述(优先级:高)
- 写(或魔改)一个 picgo 插件,用于基于图像内容重名民图片描述(优先级:低)
本次认识:
- obsidian、picgo 还是很强大的,灵活性很高,但插件水平良莠不齐
- AI (尤其是 windsurf+claude)改插件的能力真地一流,万花丛中过,个个不放过
- 看似再小的一件小事,其实真要去做,发现真地困难重重,不禁又想起乔帮主的醒世名句:Doers are the major thinker