Note
このドキュメントは2026-02-27 03:28にPLaMo Translation Modelを使用して自動翻訳されました。
FEP-d8c8: BitTorrent Torrent objects
簡略化された表現形式
V1版
最小限の情報のみを含む形式
{
"id": "https://example.com/torrents/mytorrent123",
"infohash_v1": "1ad02871c78eb1c2934f46de0c7ffd9ef9ee4083"
}
詳細情報を含む形式
{
"id": "https://example.com/torrents/mytorrent123",
"infohash_v1": "1ad02871c78eb1c2934f46de0c7ffd9ef9ee4083",
"bencoded": "https://example.com/torrents/mytorrent123.torrent",
"magnet": "magnet:?xt=urn:btih:1ad02871c78eb1c2934f46de0c7ffd9ef9ee4083&tr=http%3A%2F%2Fexample.com%2Fannounce"
}
V2版
最小限の情報のみを含む形式
{
"id": "https://example.com/torrents/mytorrent123",
"infohash_v2": "d655cc657b0b56975c2596ef1c493055565daccaf2ae29cafdea22bd7cc80e6a"
}
詳細情報を含む形式
{
"id": "https://example.com/torrents/mytorrent123",
"infohash_v2": "d655cc657b0b56975c2596ef1c493055565daccaf2ae29cafdea22bd7cc80e6a",
"bencoded": "https://example.com/torrents/mytorrent123.torrent",
"magnet": "magnet:?xt=urn:btmh:d655cc657b0b56975c2596ef1c493055565daccaf2ae29cafdea22bd7cc80e6a&tr=http%3A%2F%2Fexample.com%2Fannounce"
}
ハイブリッド形式
最小限の情報を含む形式
{
"id": "https://example.com/torrents/mytorrent123",
"infohash_v1": "1ad02871c78eb1c2934f46de0c7ffd9ef9ee4083",
"infohash_v2": "d655cc657b0b56975c2596ef1c493055565daccaf2ae29cafdea22bd7cc80e6a"
}
詳細情報を含む形式
{
"id": "https://example.com/torrents/mytorrent123",
"infohash_v1": "1ad02871c78eb1c2934f46de0c7ffd9ef9ee4083",
"infohash_v2": "d655cc657b0b56975c2596ef1c493055565daccaf2ae29cafdea22bd7cc80e6a",
"bencoded": "https://example.com/torrents/mytorrent123.torrent",
"magnet": "magnet:?xt=urn:btih:1ad02871c78eb1c2934f46de0c7ffd9ef9ee4083&xt=urn:btmh:d655cc657b0b56975c2596ef1c493055565daccaf2ae29cafdea22bd7cc80e6a&tr=http%3A%2F%2Fexample.com%2Fannounce"
}
参考実装
このFEPには、PEP 751 に準拠したロックファイルを扱うPythonパッケージが付属しており、詳細は [./implementation] ディレクトリを参照してください。このパッケージは、Torrentオブジェクトをbencoded形式のtorrentファイルへ、またその逆に変換する機能を実装しています。
FEPディレクトリ内で python -m pip install . を実行してパッケージをインストール後、fepd8c8 --help コマンドで使用方法を確認してください。
usage: fepd8c8 [-h] [--encode] [--decode] [--with-context] -i INPUT [-o OUTPUT]
TorrentファイルをActivityStreams形式のTorrentオブジェクトへ変換するツールです。
オプション:
-h, --help このヘルプメッセージを表示して終了します
--encode .torrentファイルをJSON形式に変換します
--decode JSON形式のTorrentオブジェクトを.torrentファイルに復元します
--with-context JSON出力時にJSON-LDコンテキストを含めます
-i, --input INPUT 入力する.torrentファイルまたはJSONファイルへのパス
-o, --output OUTPUT 出力先のファイルパス。指定しない場合は標準出力に表示されます
さらに、torrent-models パッケージは、このFEPで規定された形式に従ってエクスポート機能を実装する予定です(実装が完了した時点で、このFEPにもそのバージョン情報を反映します)。
文字列エンコーディングについて
バイナリデータの表現にはbase64と16進数の2種類が指定されています。この選択は、スペース効率と、ビットトレントクライアントやトラッカーで一般的に使用されている表記法との整合性を考慮したものです。具体的には、bittorrentクライアントやトラッカーではinfohashなどのハッシュ値は通常16進数文字列として扱われますが、piecesやpiece layersといったはるかに大きな文字列に対してはbase64の方が効率的なエンコーディング方式となります。
ビットトレント仕様における文字列処理は曖昧な部分が多く、本FEPでもその曖昧さを継承しています。
対象外事項
このFEPは、ActivityPub/ActivityStreamsクライアント環境での.torrentファイル表現方法のみを規定しています。以下の項目は対象外となります:
- ファイルやディレクトリからTorrentオブジェクトを生成する方法
- 消費側インスタンスにおけるTorrentオブジェクトの処理方法
- ビットトレント仕様のその他の部分(例:ActivityPubインスタンスをトラッカーとして使用する方式については、別途策定予定のFEPで扱います)
- ビットトレント仕様自体の改良点:本FEPは既存の
.torrentファイルと1:1に対応する表現を目指していますが、RDFやJSON-LDが将来的な拡張を可能にする性質を持つことも、このFEP制定の動機となっています。
参考文献
- Christine Lemmer-Webber、Jessica Tallon、Erin Shepherd、Amy Guy、Evan Prodromou, [ActivityPub], 2018
- Bram Cohen, BEP 0003: The BitTorrent Protocol Specification
- Bram Cohen, BEP 0052: The BitTorrent Protocol Specification v2
著作権について
CC0 1.0 Universal(パブリックドメイン献呈)
本FEPの著者らは、法律で認められる範囲内において、本作品に関するすべての著作権および関連権利を放棄しています。
脚注
[^v1v2]: bittorrent v2はbittorrent v1と互換性のある拡張仕様であり、トレントファイルはv1専用、v2専用、あるいは両方の形式を含む「ハイブリッド」形式のいずれかとなります。