Alyssa Smith revised this gist . Go to revision
1 file changed, 32 insertions
archive_size(file created)
| @@ -0,0 +1,32 @@ | |||
| 1 | + | #!/usr/bin/env python3 | |
| 2 | + | import xmltodict | |
| 3 | + | import requests | |
| 4 | + | ||
| 5 | + | def sizeof_fmt(num, suffix='B'): | |
| 6 | + | for unit in ['','Ki','Mi','Gi','Ti','Pi','Ei','Zi']: | |
| 7 | + | if abs(num) < 1024.0: | |
| 8 | + | return "%3.1f%s%s" % (num, unit, suffix) | |
| 9 | + | num /= 1024.0 | |
| 10 | + | return "%.1f%s%s" % (num, 'Yi', suffix) | |
| 11 | + | ||
| 12 | + | def get_size_of_bucket(bucket): | |
| 13 | + | data = xmltodict.parse( | |
| 14 | + | requests.get(f"https://archive.org/download/{bucket}/{bucket}_files.xml").text | |
| 15 | + | ) | |
| 16 | + | return sum(int(f["size"]) for f in data["files"]["file"] if "size" in f) | |
| 17 | + | ||
| 18 | + | def main(): | |
| 19 | + | from argparse import ArgumentParser | |
| 20 | + | parser = ArgumentParser() | |
| 21 | + | parser.add_argument("bucket") | |
| 22 | + | parser.add_argument("-u", "--human", help="(hUman): Returns output as human-readable (e.g 1.1MiB)", action="store_true") | |
| 23 | + | args = parser.parse_args() | |
| 24 | + | size = get_size_of_bucket(args.bucket) | |
| 25 | + | if args.human: | |
| 26 | + | print(sizeof_fmt(size)) | |
| 27 | + | else: | |
| 28 | + | print(size) | |
| 29 | + | return 0 | |
| 30 | + | ||
| 31 | + | if __name__ == "__main__": | |
| 32 | + | exit(main()) | |
Newer
Older