Skip to content

fix:修复图片和双链有时会冲突的问题 - #50

Open
ckyFi9zero wants to merge 1 commit into
xigua222:mainfrom
ckyFi9zero:fix-WikiLinks-Image
Open

fix:修复图片和双链有时会冲突的问题#50
ckyFi9zero wants to merge 1 commit into
xigua222:mainfrom
ckyFi9zero:fix-WikiLinks-Image

Conversation

@ckyFi9zero

Copy link
Copy Markdown

修改内容

通过判断引用目标的图片扩展名,区分 Obsidian 中的文档引用和图片引用,避免将图片或非文档嵌入语法错误地按文档链接处理。

主要修复了以下两个问题:

Bug 1: 文档嵌入语法被错误转换为 Markdown 图片语法

问题场景

Obsidian 原始内容:

这是一段文字 ![[我的文档]] 继续文字

旧版本处理流程:

  1. 正则 /\[\[([^\]|]+)(?:\|([^\]]+))?\]\]/g 只匹配 [[...]],不会捕获前面的 !
  2. 提取到 title = "我的文档"originalText = "[[我的文档]]"
  3. 上传后替换:[[我的文档]][我的文档](飞书URL)
  4. 最终结果变成:![[我的文档]]![我的文档](飞书URL)

问题影响

![文档](URL) 会被识别为 Markdown 图片语法,导致飞书尝试将文档链接当作图片加载,最终显示“图片加载失败”。

image

Bug 2: 图片引用因模糊匹配触发无关文档误上传

问题场景

文件库结构:

图.md       ← 文档
架构图.png  ← 图片

Obsidian 原始内容:

查看截图 ![[架构图.png]] 了解详情

旧版本处理流程:

  1. 正则匹配到 [[架构图.png]]
  2. 提取到 title = "架构图.png"
  3. 没有检查文件扩展名,继续按文档处理
  4. 调用 findFileByTitle("架构图.png")
  5. 精确匹配失败,因为不存在名为 架构图.png 的文档
  6. 路径匹配失败
  7. 进入模糊匹配逻辑:
// 双向包含匹配
return baseName.includes(titleLower) || titleLower.includes(baseName);
  1. "架构图.png".includes("图") 返回 true
  2. 错误匹配到 图.md
  3. 最终导致 图.md 被误上传,而真正的图片 架构图.png 没有被正确处理

修复方式

在处理 WikiLink 前增加图片扩展名判断:

  • 如果引用目标是图片文件,则不再按文档链接上传处理
  • 避免图片引用触发文档的模糊匹配逻辑
  • 避免 ![[文档]] 被错误转换成 Markdown 图片语法

测试场景

已验证以下场景:

  • ![[我的文档]] 不会被错误转换为 ![我的文档](飞书URL)
  • ![[架构图.png]] 不会触发文档模糊匹配
  • 当同时存在 图.md架构图.png 时,不会错误匹配并上传 图.md

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant