Web Analytics Made Easy -
StatCounter

めモらンだム・ヤード

自分用のアプリ設定やスクリプト類の備忘録・覚え書き(Memorandum) / 作った物のライセンスはCC BY-NC-SAで。 / 内容が古いまま、間違ったまま、書いている途中、途中で放置など、手入れはあまり行き届いていない庭 / 対象の仕様変更で動かなくなったもの多々。WorkFlowy向けは全滅したので削除 / 製作物のインストール及び使用は各自の責任で。使用によって、利用者および第三者に損害が発生したとしても、当方は一切責任を負いかねます

TextBundle / TextPack を Obsidian に migrate (iOS/iPadOSショートカット) (2022-04-12)

2022-04-12

テキストファイルとイメージファイルが一つになっていると扱いが楽。

リッチテキストでは

macのテキストエディットで画像を貼り付けて保存すると、RTF (Rich Text Format) からRTFD (Rich Text Format Directory) に保存形式が変わる。

Markdownでは

Markdownにも似たようなものがあり、TextBundleと呼ぶらしい。

Markdownテキストと参照されているすべての画像を1つのファイルにバンドルすることで、利便性を取り戻します。
(機械翻訳)

また、それの圧縮版の方はTextPackと呼ぶらしい。

仕様を見ると、パッケージの中に

  • text.* : 実際のプレーンテキストの内容。(*は任意のファイル拡張子。text.mdとかtext.markdownとか)
  • info.json : バンドルに関するすべてのメタデータ
  • assets/ : プレーンテキストファイルから参照されるすべてのアセットファイルが格納されたフォルダ。

というファイルとフォルダが含まれている。

text.markdown

# Textbundle Example

This is a simple example of a textbundle package. The following paragraph contains an example of a referenced image using the embedding code `![](assets/textbundle.png)`.

![](assets/textbundle.png)
info.json

{
  "version": 2,
  "type": "net.daringfireball.markdown",
  "transient": true,
  "creatorURL": "file:///Applications/MyApp",
  "creatorIdentifier": "com.example.myapp",
  "sourceURL": "file:///Users/johndoe/Documents/mytext.markdown",
  "com.example.myapp": {
    "version": 9,
    "customKey": "aCustomValue"
  }
}
assetsフォルダ


textbundle.pngファイル




iOS/iPadOSショートカット

TaioやUlysses、MindNode、Highlightsが出力する拡張子が.textbundleや.textpackのファイルからテキストファイルやイメージファイルを取り出し、指摘したフォルダに保存するiOS/iPadOSショートカット。

TextBundlePack2OBSD: https://www.icloud.com/shortcuts/bdf8cd35e9c646d5a6e5f342a0ad98da


やっていること
  • ファイル取得

    • 選択したファイルがTextPackだったら解凍し、その中にTextBundleが入っていたり、そもそも選択したファイルがTextBundleファイルだったら、そこからtext.*ファイルやinfo.jsonファイル、assetsフォルダを取り出す。
  • タイトル候補を探す

    • info.jsonファイルの中にsourceURLというキー(必須ではない)があったら、その値からテキストファイルのファイル名を取り出し拡張子を".md"に変更する。
    • info.jsonファイルにsourceURLというキーが無かったら、text.*ファイルの1行目から順に探して、ファイル名に使えない文字は削除してタイトル候補として取り出す。
    • それでも見つからなかった場合は取り合えずfoobar.mdというファイル名にしておく。
  • 添付ファイルの処理

    • assetsフォルダから中のファイルの名前を取り出し、その先頭にyyyyMMddHHmmss形式の日時とミリ秒3桁を追加する。text.*ファイルに書かれているそのファイルへの画像リンクもそれに合わせて書き換える。(保存先assetsフォルダの同名画像ファイルを上書き保存しないため。メモ削除時も、画像ファイルを名前順にソートすれば不要になった添付ファイルも削除しやすい)
    • Highlightsアプリで文字列だけハイライトして画像は出力しなかった場合は、"assets"フォルダ自体が存在しない。
  • 出力先フォルダの選択させる

    • Obsidianのvaultフォルダ内のどこかを選ばせる。
  • text.*の保存

    • ファイル名を入力させる。初期値は、探し出したタイトル候補名を念のためにURLデコードしたもの。そして出力先フォルダに保存する。(念のために同名ファイル既存の場合は末尾に連番を付けて保存)
  • assetsフォルダ内のファイルの保存

    • 2つ上で選ばせたフォルダ内にassetsフォルダを作る(既に存在する場合は結果的に何もしない)。その中にTextBundle/TextPackのassetsフォルダ内のファイルをリネームしたものを保存する。
©︎ 2022 Sorashima