使用python urllib2下载的.torrent文件无法在bittorrent客户端中打开

时间:2013-06-03 11:34:46

标签: python gzip urllib2 bittorrent

我正在使用此代码下载.torrent文件:

torrent = urllib2.urlopen(torrent URL, timeout = 30)
output = open('mytorrent.torrent', 'wb')
output.write(torrent.read())

生成的mytorrent.torrent文件无法在任何bittorrent客户端中打开,并抛出“无法解析元文件”错误。问题显然是虽然torrent URL(例如http://torcache.com/torrent-file-1.torrent)以'.torrent'后缀结尾,但它是使用gzip压缩的,需要解压缩然后保存为torrent文件。我已通过解压缩终端中的文件gunzip mytorrent.torrent > test.torrent并打开bittorrent客户端中的文件来确认这一点,该文件打开正常。

如何修改python以查找文件编码并弄清楚文件是如何压缩的,并使用正确的工具解压缩并保存为.torrent文件?

1 个答案:

答案 0 :(得分:1)

必须解压缩gzip压缩数据。如果你注意内容编码标题,你可以检测到这一点。

import gzip, urllib2, StringIO

req = urllib2.Request(url)
opener = urllib2.build_opener()
response = opener.open(req)
data = response.read()
if response.info()['content-encoding'] == 'gzip':
    gzipper = gzip.GzipFile(StringIO(fileobj=data))
    plain = gzipper.read()
    data = plain
output.write(data)