updatezinfo.py 1001 B

123456789101112131415161718192021222324252627282930313233
  1. #!/usr/bin/env python
  2. import os
  3. import hashlib
  4. import json
  5. import io
  6. from six.moves.urllib import request
  7. from dateutil.zoneinfo import rebuild
  8. METADATA_FILE = "zonefile_metadata.json"
  9. def main():
  10. with io.open(METADATA_FILE, 'r') as f:
  11. metadata = json.load(f)
  12. if not os.path.isfile(metadata['tzdata_file']):
  13. print("Downloading tz file from iana")
  14. request.urlretrieve(os.path.join(metadata['releases_url'],
  15. metadata['tzdata_file']),
  16. metadata['tzdata_file'])
  17. with open(metadata['tzdata_file'], 'rb') as tzfile:
  18. sha_hasher = hashlib.sha512()
  19. sha_hasher.update(tzfile.read())
  20. sha_512_file = sha_hasher.hexdigest()
  21. assert metadata['tzdata_file_sha512'] == sha_512_file, "SHA failed for"
  22. print("Updating timezone information...")
  23. rebuild(metadata['tzdata_file'], zonegroups=metadata['zonegroups'])
  24. print("Done.")
  25. if __name__ == "__main__":
  26. main()