def receive_announce(self, data): interval, leechers, seeders = struct.unpack('!III', data[:12]) num_peers = seeders + leechers peers = [] for chunk in utils.grouper(6, data[12:12 + 6 * num_peers]): peers.append(Peer(*utils.unpack_peer_address(''.join(chunk)))) return TrackerResponse(peers, interval)
def get_peers(self, data): peers = data['peers'] if isinstance(peers, list): for peer_dict in peers: yield Peer(peer_dict['ip'], peer_dict['port'], peer_dict['peer_id']) else: for chunk in utils.grouper(6, peers): yield Peer(*utils.unpack_peer_address(''.join(chunk)))