← XeFM English | 日本語 · crftwr/xefm on GitHub · craftware

.xft 形式

English | 日本語

.xft ファイルは 場所への参照のツリー です。ほかのグループや参照を収めるグループと、どこかにあるファイルやフォルダー(ローカルのパス、または ssh://… や s3://… のような URI)を指す参照からなります。XeFM はこれをアーカイブのようにブラウズします。どのように見えるかはツリーファイルを参照してください。

この形式は、重複ファイルの検出ツール、検索ツール、カタログ作成スクリプトなどのプログラムが書き出し、XeFM が読み込むためのものです。最初の生成元は similar-files(--format tree)です。このページはその仕様です。生成側はこの説明をもとに書き出せばよく、XeFM のコードは何も必要ありません。

ファイル

{
  "format": "xft",
  "version": 1,
  "title": "Similar videos in /Users/me/Movies",
  "generator": {"name": "similar-files", "version": "0.2.0"},
  "final": false,
  "complete": false,
  "generation": 7,
  "written": 1760340000.5,
  "progress": {"done": 120, "total": 400},
  "nodes": [
    {
      "name": "trip.mp4 (1)",
      "extra": {"method": "video", "threshold": 0.8, "members": 1},
      "children": [
        {"name": "trip.mp4", "target": "/Users/me/Movies/trip.mp4",
         "attrs": {"size": 734003200, "mtime": 1700000000.0},
         "extra": {"role": "anchor", "similarity": 1.0}},
        {"name": "trip-small.mp4", "target": "/Volumes/NAS/trip-small.mp4",
         "attrs": {"size": 120000000, "mtime": 1700100000.0},
         "extra": {"role": "member", "similarity": 0.93}}
      ]
    }
  ]
}

トップレベル

キー 必須 意味
format はい 常に "xft"。
version はい 1。読み込む側は、知らないバージョンを受け付けません。
nodes はい トップレベルのノード。
title いいえ そのツリーが何であるかを短い言葉で表したもの。
generator いいえ 生成したプログラムの {"name", "version"}。
final いいえ、既定値は true 生成側がまだファイルを書き直す可能性がある間は false。最後の書き出し以外はすべて false になります。
complete いいえ、既定値は final 最終版のファイルで、スキャンがキャンセルされた場合など、生成側がすべてを調べ終える前に止まったときは false。
generation いいえ 書き出しの回数を 1 から数えたもの。読み込む側は、新しいスナップショットと手元のものを区別できます。
written いいえ ファイルを書き出した時刻。エポックからの秒数。
progress いいえ まだ処理中の生成側の {"done", "total"}。不明なときは total が 0 です。

ノード

ノードは name と、children と target の 少なくとも一方 を持つオブジェクトです。

| キー | 意味 | |—|—| | name | 表示されるラベル。中の / や \ は _ として読まれます。名前は兄弟ノードの中で一意にしてください。読み込む側は、大文字と小文字を区別しないファイルシステムと同じように名前を比べ、重複した名前には順に ` [2]、 [3]、… を付けて一意にします。 | | children | ノードのリスト。子を持つノードは **グループ** で、フォルダーとして表示されます。 | | target | 絶対パスまたは URI。このノードが表す場所です。ターゲットを持つノードは **参照** です。 | | attrs | 生成側がターゲットについて記録したもの:size(バイト数)、mtime(エポックからの秒数)、is_dir。ターゲットは別のマシンにあるかもしれないので、読み込む側はターゲットを読みに行く代わりにこれらを表示します。どれも省略できます。 | | extra | 類似度や役割など、生成側独自のデータ。読み込む側は理解できるものを表示し、残りは無視してかまいません。 | | final | グループで、ファイル全体はまだ暫定でも、そのグループはもう変わらないときに true`。内容が同一のファイルのグループは、書き出された時点で確定します。 |

children と target の両方を持つノードは、場所でもあるグループです。フォルダーとして開き、ペイン同期のアクション(sync_current_to_other、sync_other_to_current)ではそのターゲットを表示します。

参照の line は、テキストファイル内の位置(検索のヒット)のために 予約 されています。まだ定義されていません。

暫定ファイル

final が false の間は、次にファイルが書き出されるときにどのグループも変わる可能性があります。メンバーが加わったり抜けたりし、最初の項目が変わることもあります。読み込む側は次のようにしてください。

生成側は、内容が同一のグループを一度だけ書き出し、"final": true を付けます。

バージョン管理

バージョン 1 には、省略可能な新しいキーを追加できます。読み込む側は知らないキーを無視します。バージョン 1 の読み込み側が誤ったものを表示してしまうような変更には、新しい version を割り当てます。