0

我正在使用此代码下载 .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 压缩的,需要解压缩然后另存为一个种子文件。我已经通过在终端中解压缩文件来确认这一点:gunzip mytorrent.torrent > test.torrent并在打开正常的 bittorrent 客户端中打开文件。

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

4

1 回答 1

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)
于 2013-06-03T12:03:36.370 回答