diff cads_retrieve.py @ 1:67a7303bc5c9 draft default tip

planemo upload for repository https://github.com/NordicESMhub/galaxy-tools/tree/master/tools/cads commit 7cb1c1196b3e8998743e3b4b949290e95c5d3be1
author climate
date Fri, 06 Mar 2026 13:39:23 +0000
parents b768e517a7d0
children
line wrap: on
line diff
--- a/cads_retrieve.py	Sat Jun 19 18:35:50 2021 +0000
+++ b/cads_retrieve.py	Fri Mar 06 13:39:23 2026 +0000
@@ -1,6 +1,7 @@
 import argparse
 import ast
-from os import environ, path
+import sys
+from os import environ
 
 import cdsapi
 
@@ -31,26 +32,35 @@
         req = req.replace(value, key)
 
 print("req = ", req)
-c3s_type = req.split('c.retrieve')[1].split('(')[1].split(',')[0].strip(' "\'\t\r\n')
 
-c3s_req = '{' + req.split('{', 1)[1].rsplit('}', 1)[0].replace('\n', '') + '}'
+c3s_type = req.split('dataset')[1].split('=')[1].split('\n')[0].strip(' "\'\t\r\n')
+c3s_req = '{' + req.split('request', 1)[1].split('{', 1)[1].rsplit('}', 1)[0].replace('\n', '') + '}'
 c3s_req_dict = ast.literal_eval(c3s_req)
 
-c3s_output = req.rsplit('}', 1)[1].split(',')[1].split(')')[0].strip(' "\'\t\r\n')
-
-with open(args.output, "w") as f:
-    f.write(f'dataset to retrieve: {c3s_type}\nrequest: {c3s_req}\noutput filename: {c3s_output}')
-
 print("start retrieving data...")
 
-cdapi_file = path.join(environ.get('HOME'), '.cdsapirc')
+api_key = environ.get("CADS_API_KEY")
 
-if path.isfile(cdapi_file):
-    c = cdsapi.Client()
+if not api_key:
+    sys.stderr.write(
+        "CADS retrieval failed, make sure you filled in your CADS API Key\n"
+    )
+    sys.exit(1)
 
-    c.retrieve(
-        c3s_type,
-        c3s_req_dict,
-        c3s_output)
+try:
+    c = cdsapi.Client(
+        url="https://ads.atmosphere.copernicus.eu/api",
+        key=api_key
+    )
+
+    result = c.retrieve(c3s_type, c3s_req_dict)
+    c3s_output = result.download()
 
     print("data retrieval successful")
+except Exception:
+    raise RuntimeError(
+        "CADS retrieval failed, make sure you filled in your CADS API Key"
+    )
+
+with open(args.output, "w") as f:
+    f.write(f'dataset to retrieve: {c3s_type}\nrequest: {c3s_req}\noutput filename: {c3s_output}')