Skip to content

Note

このドキュメントは2026-02-27 03:28PLaMo 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進数文字列として扱われますが、piecespiece 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専用、あるいは両方の形式を含む「ハイブリッド」形式のいずれかとなります。