import requests
import hashlib
import os
import bencodepy
# 定义要下载的URL列表
urls = [
'https://example.com/file1.txt',
'https://example.com/file2.txt',
'https://example.com/file3.txt'
]
# 创建Torrent字典
torrent_dict = {
'announce': 'http://tracker.example.com:8080/announce', # 指定Tracker服务器的URL
'info': {
'name': 'My Torrent', # 设置Torrent文件的名称
'files': [], # 存储文件信息的列表
}
}
# 下载文件并添加到Torrent字典
for url in urls:
response = requests.get(url)
file_data = response.content
file_name = url.split('/')[-1]
with open(file_name, "wb") as file:
file.write(file_data)
# 计算文件的SHA1哈希值并添加到Torrent字典中
file_hash = hashlib.sha1(file_data).digest()
torrent_dict['info']['files'].append({
'length': len(file_data),
'path': [file_name],
'sha1': file_hash
})
# 生成Torrent文件的二进制数据
torrent_data = bencodepy.encode(torrent_dict)
# 保存Torrent文件
torrent_path = 'output.torrent'
with open(torrent_path, 'wb') as torrent_file:
torrent_file.write(torrent_data)
# 删除临时下载的文件
for url in urls:
file_name = url.split('/')[-1]
os.remove(file_name)
print(f'Torrent 文件已保存为: {torrent_path}')
在上述代码中,使用bencodepy库来生成Torrent文件的二进制数据。通过循环遍历URL列表,使用requests库下载文件的内容,并将其写入临时文件中。然后,我们计算文件的SHA1哈希值,并将文件信息添加到Torrent字典中。
请确保已经安装了bencodepy库和requests库(如果没有安装可以执行pip install bencodepy requests进行安装)。
运行代码后,将生成指定路径的Torrent文件,并且其中包含了所有的URL所对应的文件信息。对于不同的Python环境和库版本,可能需要进行适当的调整以符合实际情况。如果问题仍然存在,请尝试更新或重新安装相关库。