使用 python urllib2 下载的种子无法在 bittorrent 客户端中打开

使用 python urllib2 下载的种子无法在 bittorrent 客户端中打开

我已经使用 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 的兼容。

相关内容