Add progress information to bigfiles
This commit is contained in:
parent
282f06b65e
commit
e5b851b171
1 changed files with 42 additions and 0 deletions
|
@ -37,6 +37,48 @@ class UiWebsocketPlugin(object):
|
||||||
content_db.updatePeerNumbers()
|
content_db.updatePeerNumbers()
|
||||||
self.site.updateWebsocket(peernumber_updated=True)
|
self.site.updateWebsocket(peernumber_updated=True)
|
||||||
|
|
||||||
|
def addBigfileInfo(self, row):
|
||||||
|
content_db = self.site.content_manager.contents.db
|
||||||
|
site = content_db.sites[row["address"]]
|
||||||
|
if not site.settings.get("has_bigfile"):
|
||||||
|
return False
|
||||||
|
|
||||||
|
file_info = site.content_manager.getFileInfo(row["inner_path"])
|
||||||
|
if not file_info.get("piece_size"):
|
||||||
|
return False
|
||||||
|
|
||||||
|
sha512 = file_info["sha512"]
|
||||||
|
piecefield = site.storage.piecefields[sha512].tostring()
|
||||||
|
|
||||||
|
if not piecefield:
|
||||||
|
return False
|
||||||
|
|
||||||
|
row["pieces"] = len(piecefield)
|
||||||
|
row["pieces_downloaded"] = piecefield.count("1")
|
||||||
|
row["downloaded_percent"] = 100 * row["pieces_downloaded"] / row["pieces"]
|
||||||
|
row["bytes_downloaded"] = row["pieces_downloaded"] * file_info["piece_size"]
|
||||||
|
row["is_downloading"] = bool(next((key for key in site.bad_files if key.startswith(row["inner_path"])), False))
|
||||||
|
|
||||||
|
# Add leech / seed stats
|
||||||
|
row["peer_seed"] = 0
|
||||||
|
row["peer_leech"] = 0
|
||||||
|
for peer in site.peers.itervalues():
|
||||||
|
if not peer.time_piecefields_updated or sha512 not in peer.piecefields:
|
||||||
|
continue
|
||||||
|
peer_piecefield = peer.piecefields[sha512].tostring()
|
||||||
|
if peer_piecefield == "1" * row["pieces"]:
|
||||||
|
row["peer_seed"] += 1
|
||||||
|
else:
|
||||||
|
row["peer_leech"] += 1
|
||||||
|
|
||||||
|
# Add myself
|
||||||
|
if row["pieces_downloaded"] == row["pieces"]:
|
||||||
|
row["peer_seed"] += 1
|
||||||
|
else:
|
||||||
|
row["peer_leech"] += 1
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
# Optional file functions
|
# Optional file functions
|
||||||
|
|
||||||
def actionOptionalFileList(self, to, address=None, orderby="time_downloaded DESC", limit=10, filter="downloaded"):
|
def actionOptionalFileList(self, to, address=None, orderby="time_downloaded DESC", limit=10, filter="downloaded"):
|
||||||
|
|
Loading…
Reference in a new issue