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 № 1gzip "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)