English | 日本語
.xft ファイルは 場所への参照のツリー です。ほかのグループや参照を収めるグループと、どこかにあるファイルやフォルダー(ローカルのパス、または ssh://… や s3://… のような URI)を指す参照からなります。XeFM はこれをアーカイブのようにブラウズします。どのように見えるかはツリーファイルを参照してください。
この形式は、重複ファイルの検出ツール、検索ツール、カタログ作成スクリプトなどのプログラムが書き出し、XeFM が読み込むためのものです。最初の生成元は similar-files(--format tree)です。このページはその仕様です。生成側はこの説明をもとに書き出せばよく、XeFM のコードは何も必要ありません。
.xft です。os.replace)。こうすれば、読み込む側が書きかけのファイルを目にすることはありません。{
"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 の間は、次にファイルが書き出されるときにどのグループも変わる可能性があります。メンバーが加わったり抜けたりし、最初の項目が変わることもあります。読み込む側は次のようにしてください。
progress とともに、ツリーが暫定であることを示す。extra.role が "anchor" の参照、それがなければ最初の参照)で探す。生成側は、内容が同一のグループを一度だけ書き出し、"final": true を付けます。
バージョン 1 には、省略可能な新しいキーを追加できます。読み込む側は知らないキーを無視します。バージョン 1 の読み込み側が誤ったものを表示してしまうような変更には、新しい version を割り当てます。