29 lines
1.3 KiB
Python
29 lines
1.3 KiB
Python
|
|
import logging
|
||
|
|
import cdsapi
|
||
|
|
|
||
|
|
|
||
|
|
class ApiRequest:
|
||
|
|
def __init__(self):
|
||
|
|
self.client = cdsapi.Client()
|
||
|
|
self.max_time_delay = 120
|
||
|
|
|
||
|
|
def get_reply(self, current_param):
|
||
|
|
try:
|
||
|
|
param = {'format': 'zip', 'temporal_resolution': 'monthly', 'experiment': current_param['experiment'],
|
||
|
|
'variable': current_param['variable'], 'model': current_param['model'], 'year': [],
|
||
|
|
'month': ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']}
|
||
|
|
if current_param['level'] == 'all':
|
||
|
|
param['level'] = ['1', '5', '10', '20', '30', '50', '70', '100', '150', '200', '250', '300', '400',
|
||
|
|
'500', '600', '700', '850', '925', '1000']
|
||
|
|
if current_param['experiment'] == 'historical':
|
||
|
|
param['year'] = [str(y) for y in range(1850, 2015)]
|
||
|
|
else:
|
||
|
|
param['year'] = [str(y) for y in range(2015, 2024)]
|
||
|
|
if current_param['model'] == "miroc_es2h":
|
||
|
|
param['year'] = ["1850"]
|
||
|
|
result = self.client._api("%s/resources/%s" % (self.client.url, 'projections-cmip6'), param, "POST")
|
||
|
|
return result.reply
|
||
|
|
except Exception as e:
|
||
|
|
print(e)
|
||
|
|
return None
|