辛宝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 コンテンツを読み込み、画像リソースを見つける(ローカルの Obsidian 画像やリモートの CDN 画像があるかもしれないので注意)
  • 画像を IPFS にアップロードし、テキストを置換して Xlog にアップロードする

これらの 2 つの手順を侮るなかれ、私は多くの労力を費やしました。特に、私は初めて Obsidian プラグインを開発したので、非常に苦労しました。

画像の処理#

通常の Markdown とは異なり、Obsidian では画像リソースの表示方法が 2 つあります:

  • 通常の ![]() 画像の方法
  • 組み込みの ![[]] 表示方法

最初の方法は比較的簡単で、正規表現を使用して https? を抽出すれば良いです。

注意点として、従来の fetch/axios を使用すると CORS セキュリティ検証がトリガーされますが、obsidian.requestUrlを使用するとセキュリティポリシーを無視できます。これは落とし穴です。

難しいのは 2 番目の方法です。まず、正規表現を使用してパスをマッチさせ、適切な Obsidian API を使用して記事の実際のパスまたはバイナリデータを取得する必要があります。

この手順は最も面倒であり、ここでは詳しく説明しません。

この手順では、画像の関連パスを見つけたら、次のステップで Xlog にアップロードするための IPFS アドレスを取得できます。

IPFS へのアップロード#

この手順は、シリーズの最初の記事で知ったところです。画像を IPFS にアップロードするための API を呼び出すだけです。

IPFS アドレスを取得したら、元のテキストを上書きすれば完了です。

設定の読み込み:IPFS の処理を行うかどうか#

万が一、ユーザーが特定の状況で画像を IPFS にアップロードしたくない場合はどうすればよいでしょうか?新しい設定を導入して、画像を IPFS にアップロードするかどうかを選択できるようにします。

コードを少し変更して設定オプションに対応し、ボタンがオフの場合は元のコンテンツを直接アップロードし、オンの場合は画像を先にアップロードしてからテキストをアップロードします。

Obsidian の画像データの取得#

この部分は非常に難しいです。私の現在の方法には問題があり、特定の 1 階層のディレクトリにある画像が読み込めない場合があり、画像が無視されてしまいます。

この小さな落とし穴は後で対処する機会があるかもしれません。

展望#

ごきげんよう

image

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。