3

ここで、Bram Cohen の元の BitTorrent の古いソースを見つけました。

http://bittorrent.cvs.sourceforge.net/viewvc/bittorrent/?hideattic=0

(ここで言う: BitTorrent のソース コードはどこにありますか?バージョン 3.x であると)

Mac(10.7)で実行しようとしていますが、Pythonのバージョンは2.7です

ソースをダウンロードしようとする場合は、btdownloadcurses.pyまたはbtdownloadheadless.pyを実行してみてください。

実行してみました:

$ ./btdownloadcurses.py --url http://sometorrenthost/somefile.torrent

わかりました、より具体的に説明します。これは私がしたことです:

$ ./btdownloadcurses.py --url http://torcache.net/torrent/848A6A0EC6C85507B8370E979B133214E5B5A6D4.torrent

そして、これは私が得たものです:

Traceback (most recent call last):
  File "./btdownloadcurses.py", line 243, in <module>
    run(mainerrlist, argv[1:])
  File "./btdownloadcurses.py", line 186, in run
    download(params, d.chooseFile, d.display, d.finished, d.error, mainkillflag, fieldw)
  File "/Users/joal21/Desktop/BitTorrent/BitTorrent/download.py", line 120, in download
    h = urlopen(config['url'])
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 127, in urlopen
    return _opener.open(url, data, timeout)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 410, in open
    response = meth(req, response)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 517, in http_response
    code, msg, hdrs = response.code, response.msg, response.info()
AttributeError: addinfourldecompress instance has no attribute 'msg'

それを検索したところAttributeError、次のようになりました。

http://mail.python.org/pipermail/python-bugs-list/2005-May/028824.html

2番目のコメントは私の問題に関係していると思います。しかし、そこから先に進む方法がわかりません。単に間違った URL を渡しただけですか? Pythonのバージョンと何か関係がありますか?または、BitTorrent ソースが古い。または、現在の .torrent ファイルに何か新しいものがありますか。私は何が欠けていますか?やっていません?

私の無知を許してください。私はここで本当に途方に暮れています。

4

1 に答える 1

1

Bram は、コードがオブジェクトに属性をurllib2追加していない.msg古いバージョンの Python に反対しました。具体的には、彼が開発した Python バージョンには、この変更が適用されていませんでした。.codeaddinfourl

回避策は、元のファイルにあるクラスの元のaddinfourlオブジェクトからこれらの属性を自分でコピーすることです。HTTPContentEncodingHandlerzurllib.py

class HTTPContentEncodingHandler(HTTPHandler):
    """Inherit and add gzip/deflate/etc support to HTTP gets."""
    def http_open(self, req):
        # add the Accept-Encoding header to the request
        # support gzip encoding (identity is assumed)
        req.add_header("Accept-Encoding","gzip")
        req.add_header('User-Agent', 'BitTorrent/' + version)
        if DEBUG: 
            print "Sending:" 
            print req.headers
            print "\n"
        fp = HTTPHandler.http_open(self,req)
        headers = fp.headers
        if DEBUG: 
             pprint.pprint(headers.dict)
        url = fp.url
        resp = addinfourldecompress(fp, headers, url)
        resp.code = fp.code
        resp.msg = fp.msg
        return resp
于 2013-07-15T13:13:36.030 に答える