/ pliki .torrent pobrane przy użyciu Pythona urllib2 nie otwierają się w kliencie bittorrent - python, gzip, urllib2, bittorrent

pliki .torrent pobrane za pomocą Pythona urllib2 nie mogą zostać otwarte w kliencie bittorrent - python, gzip, urllib2, bittorrent

Używam tego kodu do pobierania plików .torrent:

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

Wynikowy plik mytorrent.torrent nie otwiera się w żadnym kliencie bittorrent i generuje błąd "nie można przeanalizować pliku meta" .Problemem jest oczywiście to, że chociaż torrent URL (np. http://torcache.com/torrent-file-1.torrent) kończy się sufiksem ".torrent", jest skompresowany przy użyciu gzip i musi zostać zdekompresowany, a następnie zapisany jako plik torrent. Potwierdziłem to przez rozpakowanie pliku w terminalu:gunzip mytorrent.torrent > test.torrent i otwarcie pliku w kliencie bittorrent, który otwiera się dobrze.

Jak zmodyfikować Pythona, aby wyszukać kodowanie pliku i dowiedzieć się, jak plik jest skompresowany i użyć odpowiedniego narzędzia, aby go rozpakować i zapisać jako plik .torrent?

Odpowiedzi:

1 dla odpowiedzi № 1

gzip "ed dane muszą zostać rozpakowane. Możesz to zatrzymać, jeśli będziesz szukał nagłówka kodowania treści.

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)