123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import subprocess
- import sys
- import json
- import datetime
- import urllib.parse
- import sys
- def main():
- files_by_date = {}
- bucket = sys.argv[1]
- files_lines = execute_cli(f"b2 ls --long {bucket} nightly").split("\n")
- for x in files_lines:
- parts = x.split(" ", 1)
- if parts[0]:
- json_str = execute_cli(f"b2 get-file-info {parts[0]}")
- data = json.loads(json_str)
- name = remove_prefix(data['fileName'], "nightly/")
- url = f"https://f001.backblazeb2.com/file/{bucket}/nightly/{urllib.parse.quote_plus(name)}"
- sha1 = data['contentSha1']
- size = int(data['size'])
- ts = int(data['fileInfo']['src_last_modified_millis'])
- date = datetime.datetime.fromtimestamp(ts/1000).strftime('%Y-%m-%d')
-
- if date not in files_by_date.keys():
- files_by_date[date] = []
- files_by_date[date].append({
- 'name': name,
- 'url': url,
- 'sha1': sha1,
- 'sizeInBytes': size,
- })
- now = datetime.datetime.utcnow().isoformat()
- print(json.dumps({
- 'last_updated' : now,
- 'files': files_by_date
- }, sort_keys=True, indent=4))
- def remove_prefix(text, prefix):
- return text[text.startswith(prefix) and len(prefix):]
- def execute_cli(command):
- sb = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
- return sb.stdout.read().decode("utf-8");
- if __name__ == '__main__':
- sys.exit(main())
|