Obsidian Douban 插件图片上传 PicGo 功能修复
407 字
2 分钟
Obsidian Douban 插件图片上传 PicGo 功能修复
需求描述
- 豆瓣图片访问策略发生变化,访问 doubanio 图片链接时需要附带有效的 Referer 请求头,否则会被拒绝访问。
- 插件原有的 PicGo 上传链路依赖系统剪贴板,部分 webp 在写入剪贴板时无法被当前 Electron 运行时直接解析,最终导致上传失败。
功能设计
图片请求新增 Header Referer
图片请求时,使用豆瓣条目页地址作为 Referer ,并在原有请求头基础上清理不适用于图片请求的字段,保证图片能够正常下载。
高清图地址改为使用远端文件名生成
高清图地址生成时,不再使用本地附件文件名拼接,而是从原始图片 URL 中提取远端文件名,避免生成错误的高清图地址。
剪贴板写入新增显式等待
保留原有 PicGo 剪贴板上传流程,仅在上传前显式等待剪贴板写入完成,避免写入未完成时提前上传。
.then(async (buffer) => { if (!buffer || buffer.byteLength == 0) { throw new Error(i18nHelper.getMessage('130109')); } await ClipboardUtil.writeImage(buffer); return await this.uploadClipboardFile(context);})Webp 格式图片处理
仍优先使用原有方式写入剪贴板;仅当 webp 图片无法被 Electron 直接解析时,再通过 canvas 转为 png 后写入,保证对原有逻辑改动最小。
private static async createNativeImageFromWebp(data: ArrayBuffer) { const { nativeImage } = require('electron'); const imageElement = await this.loadImage(URL.createObjectURL(new Blob([data], {type: 'image/webp'}))); try { const canvas = document.createElement('canvas'); canvas.width = imageElement.naturalWidth || imageElement.width; canvas.height = imageElement.naturalHeight || imageElement.height; const context = canvas.getContext('2d'); if (!context) { throw new Error(i18nHelper.getMessage('130110')); } context.drawImage(imageElement, 0, 0); return nativeImage.createFromDataURL(canvas.toDataURL('image/png')); } finally { imageElement.src = ''; }}文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Obsidian Douban 插件图片上传 PicGo 功能修复
https://blog.elephantgris.space/posts/9ab89d31cf793aab/相关文章智能推荐
1
Obsidian Kanban Bases View 卡片排序功能开发
开发Kanban Bases View 的拖动顺序只能隐式保存,无法写入笔记或供其他视图复用;新增可选 Card order 属性,按序号排序并在同列、跨列拖动后回写连续序号。
2
Firefly 头像组件圆形旋转效果功能开发
开发侧边栏头像原为静态方形,缺少悬停反馈;通过正方形约束和圆形裁切统一外观,并为内部图片添加悬停旋转与移出归位动画。
3
Firefly Footer 组件页面置底布局功能开发
开发短页面的 Footer 会紧跟正文而无法贴近视口底部;通过逐层继承最小高度、调整响应式 Grid 行结构并恢复移动端 Grid 布局,使 Footer 在短页面置底、长页面随内容延伸。
4
Firefly 文章 slug 自动生成功能开发
开发文章 slug 依赖标题拼音,标题变化后链接容易失配;新增随机 slug 模式,在开发阶段自动补全缺失值,并在新建文章时生成并校验唯一 slug。
5
Codex TRACE 日志写盘问题修复
开发Codex 桌面端持续写入大量 TRACE 日志,造成 SQLite WAL 频繁写盘;通过 BEFORE INSERT 触发器忽略 TRACE,保留其他级别日志并支持回滚。
随机文章随机推荐


