コード例 #1
0
ファイル: rewrite.py プロジェクト: bamcclur/pyotr
    def announce(self):
        ''' Announces to a tracker

        Currently returns 1 peer's IP and port, hardcoded '''
        payload = {'info_hash': self.info_hash,
                   'peer_id':'-PYOTR0-dfhmjb0skee6',
                   'port':'6881',
                   'uploaded':'0',
                   'downloaded':'0',
                   'key':'2c4dec5f',
                   'left': len(self.sha_list),
                   'no_peer_id':'0',
                   'event':'started',
                   'compact':'1',
                   'numwant':'30'}

        response = requests.get(self.torrent['announce'], params = payload)
        reply = bencode.bdecode(response.content)
        print("""
    Response received, decoded..
    peers: {0}
    complete: {1}
    interval: {2}
    incomplete: {3}
    """.format(repr(reply['peers']), reply['complete'], reply['interval'], reply['incomplete']))

        data = reply['peers']
        multiple = len(data)/6
        #print struct.unpack("!" + "LH"*multiple, data)
        print "Converting 'peers' to more readable form:"
        for i in range(0, multiple):
            self.peer_list.append((inet_ntop(2, data[6*i:6*i+4]), struct.unpack("!H", data[6*i+4:6*i+6])[0]))
        print self.peer_list
コード例 #2
0
ファイル: pyotr.py プロジェクト: bamcclur/pyotr
def announce(metainfo, left, info_hash):
    ''' Announces to a tracker 
    
    Currently returns 1 peer's IP and port, hardcoded '''
    payload = {'info_hash': info_hash,
               'peer_id':'-PYOTR0-dfhmjb0skee6',
               'port':'57710',
               'uploaded':'0',
               'downloaded':'0',
               'key':'2c4dec5f',
               'left': left,
               'no_peer_id':'0',
               'event':'started',
               'compact':'1',
               'numwant':'30'}
    
    print("Announcing to tracker...")
    
    response = requests.get(metainfo['announce'], params = payload)
    try:
        reply = bencode.bdecode(response.content)
    except:
        print("Not a valid bencoded string '" + response.content + "'")
    print("""
Response received, decoded..
peers: {0}
complete: {1}
interval: {2}
incomplete: {3}
""".format(repr(reply['peers']), reply['complete'], reply['interval'], reply['incomplete']))
    data = reply['peers']
    print data
    print ""
    peer_list = []
    for i in range(0, len(data)/6):
        peer_list.append((inet_ntop(2, data[6*i:6*i+4]), 
                         struct.unpack("!H", data[6*i+4:6*i+6])[0]))
    
    '''There exists a scenario where even though we've specified compact, 
    we do not get a compact result, the following is to handle this case'''    
    if (peer_list == []):
        for i in range(0, len(data)):
            peer_list.append((data[i]['ip'], data[i]['port']))
    print peer_list
    return peer_list