我已经使用 python 下载种子一段时间了,但大约一周或更长时间以来,这些种子文件已无法在传输中打开。代码如下:
torrent = urllib2.urlopen(torrent URL, timeout = 30)
output = open('mytorrent.torrent', 'wb')
output.write(torrent.read())
以前这个功能可以正常工作,但现在无法在传输中加载。我尝试了另一个客户端“tixati”,它抛出了错误“解析元文件错误”。如果我通过浏览器下载 torrent 文件,它会在两个客户端中正常打开。我尝试过将文件选项更改为,output = open('mytorrent.torrent', 'w')
但结果是一样的。
有人有什么想法吗?
答案1
urllib2
完全按照指示操作,不会自动解压内容流。幸运的是,那一点不太难。
此外,如果您始终使用同一个服务器,则可以跳过 gzip 编码检查。
from io import BytesIO
import gzip
torrent = urllib2.urlopen(torrentURL, timeout=30)
buffer = BytesIO(torrent.read())
gz = gzip.GzipFile(fileobj=buffer)
output = open('mytorrent.torrent', 'wb')
output.write(gz.read())
我已经加入io.BytesIO
以保持与 Python 3 的兼容。