#!/usr/bin/env python3 # # Dependencies: python-qbittorrent # pip install --user python-qbittorrent # # On Debian: # pip install --user python-qbittorrent --break-system-packages 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__": # Instantiate a qbittorrent client qb = Client("http://localhost:8080/") # username and password not required when 'Bypass from localhost' setting is active. qb.login() # get torrents torrents = qb.torrents() # get total_completed_bytes completed_torrent_sizes = list() for torrent in torrents: if torrent["state"] == "queuedUP": completed_torrent_sizes.append(torrent["total_size"]) total_completed_bytes = sum(completed_torrent_sizes) # get total_added_bytes total_added_bytes = sum([torrent["total_size"] for torrent in torrents]) # print the results print(f"\nTotal completed size: {human_bytes(total_completed_bytes)}") print(f"Total added size: {human_bytes(total_added_bytes)}\n")