apollorip/bencode-torrent

该软件包已被废弃且不再维护。作者建议使用orpheusnet/bencode-torrent软件包。

PHP库,用于解码和编码BitTorrent BEncoded数据,为Gazelle构建

v1.2.0 2021-08-22 14:43 UTC

This package is not auto-updated.

Last update: 2022-02-01 13:12:45 UTC


README

Test Packagist Packagist PHP Version Support

PHP库,用于编码和解码BitTorrent BEncode数据,主要关注在Gazelle中的使用。

使用方法

composer require orpheusnet/bencode-torrent

use OrpheusNET\BencodeTorrent;
$bencode = new Bencode();
$bencode->decodeFile('path/to/file.torrent');

描述

BEncode是BitTorrent用来存储和传输非结构化数据的编码方式。它支持

  • 字节字符串
  • 整数
  • 列表
  • 字典(关联数组,键按字母顺序排序)

有关这些类型支持的更多信息,请参阅BitTorrentSpecification#Bencoding

除此之外,预期种子文件是包含最小键 announce(字节字符串)和 info(字典)的BEncode字典。在 info 字典中,我们预期有 piece length(整数)和 pieces(字节字符串)。如果种子只有一个文件,我们预期有 name(字节字符串)和 length(整数),而对于多文件种子,我们将有 name(字节字符串)和 files(列表),其中每个元素都是一个字典,包含键 length(整数)和 path(字符串列表)。

因此,此库在加载数据时会进行一些检查,以确保存在这些必需的字段,否则会抛出异常。有关这些字段的更多信息,请参阅BitTorrentSpecification#Metainfo_File_Structure

最后,此库主要用于在Gazelle中使用,因此库中包含一些实用函数,用于完成以下操作

  • 确保种子文件标记为'私有'
  • 在种子上设置'来源'(以确保唯一的info散列)
  • 清除不必要的字段,这些字段也揭示了关于用户的信息(如公告列表创建者
  • 生成Gazelle期望的字符串文件列表以进行显示

此代码基于WCD的Gazelle中两个分开的BEncode库的代码(bencodetorrent.class.phptorrent.class.php),但去除了现在不再必要的32位模拟器,并将其作为一个统一的库,用于上传和下载种子文件。