1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
import qbittorrent
import docker
import clutch
import app
import json
def humanbytes(B):
'Return the given bytes as a human friendly KB, MB, GB, or TB string'
B = float(B)
KB = float(1024)
MB = float(KB ** 2) # 1,048,576
GB = float(KB ** 3) # 1,073,741,824
TB = float(KB ** 4) # 1,099,511,627,776
if B < KB:
return '{0} {1}'.format(B,'Bytes' if 0 == B > 1 else 'Byte')
elif KB <= B < MB:
return '{0:.2f} KB'.format(B/KB)
elif MB <= B < GB:
return '{0:.2f} MB'.format(B/MB)
elif GB <= B < TB:
return '{0:.2f} GB'.format(B/GB)
elif TB <= B:
return '{0:.2f} TB'.format(B/TB)
def get_docker_stats():
client = docker.DockerClient(base_url = "tcp://%s:%s" % (app.CONFIG["docker"]["url"], app.CONFIG["docker"]["port"]))
return {
container.name: container.status
for container in client.containers.list(all = True)
}
def get_qbit_stats():
numtorrents = 0
bytes_dl = 0
bytes_up = 0
qb = qbittorrent.Client('http://%s:%s/' % (app.CONFIG["qbittorrent"]["url"], app.CONFIG["qbittorrent"]["port"]))
qb.login(username = app.CONFIG["qbittorrent"]["user"], password = app.CONFIG["qbittorrent"]["passwd"])
for torrent in qb.torrents():
numtorrents += 1
bytes_up += torrent["uploaded"]
bytes_dl += torrent["downloaded"]
return {
"bytes_dl": humanbytes(bytes_dl),
"bytes_up": humanbytes(bytes_up),
"num": numtorrents,
"ratio": bytes_up / bytes_dl
}
def get_trans_stats():
client = clutch.client.Client(
address = "http://%s:%s/transmission/rpc" % (app.CONFIG["transmission"]["url"], app.CONFIG["transmission"]["port"]),
username = app.CONFIG["transmission"]["user"],
password = app.CONFIG["transmission"]["passwd"]
)
stats = json.loads(client.session.stats().json())
return {
"bytes_dl": humanbytes(stats["arguments"]["cumulative_stats"]["downloaded_bytes"]),
"bytes_up": humanbytes(stats["arguments"]["cumulative_stats"]["uploaded_bytes"]),
"num": stats["arguments"]["torrent_count"],
"ratio": stats["arguments"]["cumulative_stats"]["uploaded_bytes"] / stats["arguments"]["cumulative_stats"]["downloaded_bytes"]
}
if __name__ == "__main__":
print(get_trans_stats())
|