import json from datetime import datetime, date import requests url = 'https://covidtrackerapi.bsg.ox.ac.uk/api/v2/stringency/actions/' ''' 01. Belarus - BLR 02. China - CHN 03. France - FRA 04. Germany - DEU 05. India - IND 06. Israel - ISR 07. Russia - RUS 08. Serbia - SRB 09. Spain - ESP 10. Turkey - TUR ''' countries = ['blr', 'chn', 'fra', 'deu', 'ind', 'isr', 'rus', 'srb', 'esp', 'tur'] tmp_output = {} def check_date(input_date): """ Check date format from input string. Args: input_date - (str). Return: Bool - True if date correct. """ try: valid_date = datetime.strptime(input_date, '%Y-%m-%d').date() if valid_date < date.today(): return True else: print('Input date has not arrived yet') return False except ValueError: return False def request_one_country(api, cntr, day): """ Request from api-url. Args: api - (str) - api url, cntr - (str) country alpha-3 code, day - (int) YYYY-MM-DD. Return: Response - (dict). """ r_out = requests.get(f'{api}{cntr}/{day}') return r_out.json() if __name__ == '__main__': while True: input_day = input('Input date YYYY-MM-DD): ') if check_date(input_day): break else: print('Incorrect input format') continue for country in countries: out = request_one_country(url, country, input_day) tmp_output.setdefault(country, out.get('stringencyData')) output = {input_day: tmp_output} with open('temp_out.json', 'w') as f: json.dump(output, f, sort_keys=True, indent=2)