#!/usr/bin/env python3
import xmltodict
import requests

def sizeof_fmt(num, suffix='B'):
    for unit in ['','Ki','Mi','Gi','Ti','Pi','Ei','Zi']:
        if abs(num) < 1024.0:
            return "%3.1f%s%s" % (num, unit, suffix)
        num /= 1024.0
    return "%.1f%s%s" % (num, 'Yi', suffix)

def get_size_of_bucket(bucket):
    data = xmltodict.parse(
        requests.get(f"https://archive.org/download/{bucket}/{bucket}_files.xml").text
    )
    return sum(int(f["size"]) for f in data["files"]["file"] if "size" in f)

def main():
    from argparse import ArgumentParser
    parser = ArgumentParser()
    parser.add_argument("bucket")
    parser.add_argument("-u", "--human", help="(hUman): Returns output as human-readable (e.g 1.1MiB)", action="store_true")
    args = parser.parse_args()
    size = get_size_of_bucket(args.bucket)
    if args.human:
        print(sizeof_fmt(size))
    else:
        print(size)
    return 0

if __name__ == "__main__":
    exit(main())