Переделал получение пиров

sandbox1
inpos 2016-03-04 18:13:38 +03:00
parent 7473d69488
commit 06a36f066f
2 changed files with 25 additions and 22 deletions

View File

@ -320,7 +320,7 @@ class Engine:
self.pyrrent2http = pyrrent2http.Pyrrent2http() self.pyrrent2http = pyrrent2http.Pyrrent2http()
self.pyrrent2http.parseFlags(kwargs) self.pyrrent2http.parseFlags(args)
self.pyrrent2http.startSession() self.pyrrent2http.startSession()
self.pyrrent2http.startServices() self.pyrrent2http.startServices()
self.pyrrent2http.addTorrent() self.pyrrent2http.addTorrent()
@ -434,7 +434,7 @@ class Engine:
:return: List of peers :return: List of peers
:rtype: list of PeerInfo :rtype: list of PeerInfo
""" """
peers = self._decode(self._request('peers', timeout))['peers'] peers = self.pyrrent2http.Peers()['peers']
if peers: if peers:
return [PeerInfo(**p) for p in peers] return [PeerInfo(**p) for p in peers]

View File

@ -540,24 +540,8 @@ def HttpHandlerFactory():
self.send_response(200) self.send_response(200)
self.send_header("Content-type", "application/json") self.send_header("Content-type", "application/json")
self.end_headers() self.end_headers()
torrentHandle = self.server.root_obj.torrentHandle peers = self.server.root_obj.Peers()
ret = list() output = json.dumps(peers)
for peer in torrentHandle.get_peer_info():
if peer.flags & peer.connecting or peer.flags & peer.handshake:
continue
pi = {
'Ip': peer.ip,
'Flags': peer.flags,
'Source': peer.source,
'UpSpeed': peer.up_speed/1024,
'DownSpeed': peer.down_speed/1024,
'TotalDownload': peer.total_download,
'TotalUpload': peer.total_upload,
'Country': peer.country,
'Client': peer.client
}
ret.append(pi)
output = json.dumps(ret)
self.wfile.write(output) self.wfile.write(output)
def trackersHandler(self): def trackersHandler(self):
self.send_response(200) self.send_response(200)
@ -565,9 +549,9 @@ def HttpHandlerFactory():
self.end_headers() self.end_headers()
ret = list() ret = list()
try: try:
self.info = self.server.root_obj.torrentHandler.torrent_file() info = self.server.root_obj.torrentHandler.torrent_file()
except: except:
self.info = self.server.root_obj.torrentHandler.get_torrent_info() info = self.server.root_obj.torrentHandler.get_torrent_info()
for tracker in info.trackers(): for tracker in info.trackers():
pi = { pi = {
'Url': tracker.url, 'Url': tracker.url,
@ -588,6 +572,7 @@ def HttpHandlerFactory():
ret.append(pi) ret.append(pi)
output = json.dumps(ret) output = json.dumps(ret)
self.wfile.write(output) self.wfile.write(output)
# Вырубаем access-log
def log_message(self, format, *args): def log_message(self, format, *args):
return return
return HttpHandler return HttpHandler
@ -892,6 +877,24 @@ class Pyrrent2http(object):
} }
retFiles['files'].append(fi) retFiles['files'].append(fi)
return retFiles return retFiles
def Peers(self):
peers = {'peers': []}
for peer in self.torrentHandle.get_peer_info():
if peer.flags & peer.connecting or peer.flags & peer.handshake:
continue
pi = {
'Ip': peer.ip,
'Flags': peer.flags,
'Source': peer.source,
'UpSpeed': peer.up_speed/1024,
'DownSpeed': peer.down_speed/1024,
'TotalDownload': peer.total_download,
'TotalUpload': peer.total_upload,
'Country': peer.country,
'Client': peer.client
}
peers['peers'].append(pi)
return peers
def stats(self): def stats(self):
status = self.torrentHandle.status() status = self.torrentHandle.status()
dhtStatusStr = '' dhtStatusStr = ''