admin-scripts/bin/qbt_sum_size

68 lines
1.8 KiB
Plaintext
Raw Normal View History

2024-07-07 05:14:58 +02:00
#!/usr/bin/env python3
2024-07-15 01:51:57 +02:00
"""qbt-sum-size
Usage:
qbt-sum-size (HOSTNAME) (USERNAME) (PASSWORD)
qbt-sum-size -h
Examples:
qbt-sum-size "http://localhost:8080" "admin" "adminadmin"
qbt-sum-size "https://cat.seedhost.eu/lol/qbittorrent" "lol" "supersecretpassword"
Options:
-h, --help show this help message and exit
"""
from docopt import docopt
2024-07-07 05:14:58 +02:00
from qbittorrent import Client
# convert byte units
def human_bytes(bites: int) -> str:
B = float(bites)
KiB = float(1024)
MiB = float(KiB**2)
GiB = float(KiB**3)
TiB = float(KiB**4)
match B:
case B if B < KiB:
return "{0} {1}".format(B, "bytes" if 0 == B > 1 else "byte")
case B if KiB <= B < MiB:
return "{0:.2f} KiB".format(B / KiB)
case B if MiB <= B < GiB:
return "{0:.2f} MiB".format(B / MiB)
case B if GiB <= B < TiB:
return "{0:.2f} GiB".format(B / GiB)
case B if TiB <= B:
return "{0:.2f} TiB".format(B / TiB)
case _:
return ""
if __name__ == "__main__":
2024-07-15 01:51:57 +02:00
args = docopt(__doc__)
2024-07-07 05:14:58 +02:00
2024-07-15 01:51:57 +02:00
# Initialize client and login
qb = Client(args["HOSTNAME"])
qb.login(username=args["USERNAME"], password=args["PASSWORD"])
2024-07-07 05:14:58 +02:00
# get torrents
torrents = qb.torrents()
# get total_completed_bytes
completed_torrent_sizes = list()
for torrent in torrents:
2024-07-27 18:33:18 +02:00
if torrent.get("state") == "queuedUP": # type: ignore
completed_torrent_sizes.append(torrent.get("total_size")) # type: ignore
2024-07-07 05:14:58 +02:00
total_completed_bytes = sum(completed_torrent_sizes)
# get total_added_bytes
2024-07-27 18:33:18 +02:00
total_added_bytes = sum([torrent.get("total_size") for torrent in torrents]) # type: ignore
2024-07-07 05:14:58 +02:00
# print the results
print(f"\nTotal completed size: {human_bytes(total_completed_bytes)}")
print(f"Total added size: {human_bytes(total_added_bytes)}\n")