辛宝Otto

辛宝Otto 的玄酒清谈

北漂前端程序员儿 / 探索新事物 / Web Worker 主播之一/内向话痨
xiaoyuzhou
email

開發 Obsidian Sync To Xlog 插件之處理 obsidian 的圖片

image

本文記錄開發 obsidian-sync-to-xlog 插件過程的踩坑和思考。

背景#

上文我們提到我們先把 obsidian 的內容同步到 xlog 上,很快我們就能讀取 obsidian 的筆記內容到 xlog 上,有一個待處理的問題是圖片資源還是原始鏈接,不是 xlog 上的 ipfs 鏈接。

所以我們需要解決它,有一定的技術難度。

技術設計#

要完成 obsidian 圖片內容上傳到 ipfs 需要以下幾個步驟:

  • 讀取 md 內容,找出圖片資源,注意可能有 ob 本地圖片、遠程 CDN 圖片
  • 上傳圖片到 ipfs 然後替換文本後,上傳到 xlog

別小看這兩個步驟,我花費不少心血去處理,尤其是我第一次開發 obsidian 插件,吐血滿滿。

處理圖片#

和普通的 markdown 不同, obsidian 對展示圖片資源有兩種方式:

  • 原生的 ![]() 圖片方案
  • 內置的 ![[]] 展示方案

對於第一種比較簡單,編寫正則,提取 https? 正則就可以。

需要注意的是,使用傳統的 fetch/axios 會觸發 cros 安全驗證,使用 obsidian.requestUrl 可以無視安全策略,這都是坑。

難的是第二種,我們先使用正則匹配到路徑,找到合適的 obsidian api 讀取文章真實路徑或者二進制數據即可。

這一步驟最麻煩,先略過,專門說。

在這個步驟中,我們找到了圖片的相關路徑,就可以進行下一步上傳到 xlog 上,也就是獲得 ipfs 地址。

上傳得到 ipfs#

這一步驟,在系列文章第一篇時候得知,有一個接口可以上傳圖片得到 ipfs,這個調用即可。

得到 ipfs 地址之後重新覆蓋原文就可以。

讀取配置,是否處理 ipfs#

萬一用戶在某些情況下不想把圖片上傳到 ipfs 怎麼辦?這裡引入新的設置,是否上傳圖片到 ipfs 即可。

稍作代碼的修改適配設置選項,如果關閉按鈕,直接上傳原始內容,如果開啟,就先上傳圖片再上傳文本。

獲取 ob 的圖片數據#

這一部分非常考驗人,我目前的做法有點問題,就是某些在一級目錄的圖片有可能無法讀取,導致圖片會被忽略。

這個小坑後面有機會在處理吧,有點難。

展望#

祝你天天開心

image

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。