12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import json
- import logging
- from datetime import datetime
- from pathlib import Path
- from cryptography.fernet import Fernet
- from nasa_export import load_data
- from nasa_upload import archive_files, submit_changes
- logging.basicConfig(filename="logs/nasa.log", level=logging.INFO)
- logger = logging.getLogger("nasa")
- def get_config():
- fernet_key = b"YBckeKYt-8g7LFvpG7XqAAcEbsYESnI-yl8by9rjeQQ="
- fernet = Fernet(fernet_key)
- if Path("config/nasa_config.json").exists():
- with open("config/nasa_config.json", "r") as f:
- config = json.load(f)
- with open("config/nasa_config.crypt", "wb") as f:
- f.write(fernet.encrypt(json.dumps(config).encode()))
- else:
- with open("config/nasa_config.crypt", "rb") as f:
- config = json.loads(fernet.decrypt(f.read()).decode())
- if Path("config/nasa_config.bak").exists():
- Path("config/nasa_config.bak").unlink()
- with open("config/nasa_config.json", "w") as f:
- json.dump(config, f, indent=2)
- return config
- def export_all_periods(config) -> None:
- dt = datetime.now()
- prev = str(dt.year - 1)
- periods = [f"{prev}{x:02}" for x in range(1, 13)] + [f"{dt.year}{x:02}" for x in range(1, dt.month)]
- for period in periods:
- payload = load_data(config, "database", period)
- json.dump(
- payload,
- open(f"export/NASA/temp/NASA_{config['client_id']}_{period}_{config['timestamp']}.json", "w"),
- indent=2,
- )
- def main():
- config = get_config()
- config["timestamp"] = datetime.now().strftime("%Y%m%d_%H%M%S")
- config["export_dir"] = str(Path.cwd() / "export" / "NASA")
- export_all_periods(config)
- archive_files(config["export_dir"])
- submit_changes(config)
- if __name__ == "__main__":
- main()
|