Last active 1625748957

A tool to get the size of an archive.org bucket

archive_size Raw
1#!/usr/bin/env python3
2import xmltodict
3import requests
4
5def 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
12def 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
18def 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
31if __name__ == "__main__":
32 exit(main())