osc/research/jd_data/api_request/api_request.py

29 lines
1.3 KiB
Python
Raw Normal View History

2025-05-28 19:16:17 +08:00
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