8000 Mismatched tag: line 117, column2 · Issue #29 · clstoulouse/motu-client-python · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Mismatched tag: line 117, column2 #29
Open
@georgeboldeanu

Description

@georgeboldeanu

Hi!
I try to create an automated task to download a product every day. When i try to pass variables of present day and yesterday day i got this error!

---------------------------------------------------------------------------
ExpatError                                Traceback (most recent call last)
<ipython-input-60-126aef4a6a20> in <module>
      1 from motu_utils import motu_api
----> 2 motu_api.execute_request(MotuOptions(data_request_options_dict_automated))

D:\Python_VENVS\SST_OSTIA\lib\site-packages\motu_utils\motu_api.py in execute_request(_options, timeout)
    619                 log.debug("Asynchronous connection")
    620                 stopWatch.start('wait_request')
--> 621                 requestUrl = get_requestUrl(download_url, url_service, _options, **url_config)
    622 
    623                 if requestUrl is not None:

D:\Python_VENVS\SST_OSTIA\lib\site-packages\motu_utils\motu_api.py in get_requestUrl(dl_url, server, _options, **options)
    326     m = utils_http.open_url(dl_url, **options)
    327     responseStr = m.read()
--> 328     dom = minidom.parseString(responseStr)
    329     node = dom.getElementsByTagName('statusModeResponse')[0]
    330     status = node.getAttribute('status')

~\AppData\Local\Programs\Python\Python36\lib\xml\dom\minidom.py in parseString(string, parser)
   1966     if parser is None:
   1967         from xml.dom import expatbuilder
-> 1968         return expatbuilder.parseString(string)
   1969     else:
   1970         from xml.dom import pulldom

~\AppData\Local\Programs\Python\Python36\lib\xml\dom\expatbuilder.py in parseString(string, namespaces)
    923     else:
    924         builder = ExpatBuilder()
--> 925     return builder.parseString(string)
    926 
    927 

~\AppData\Local\Programs\Python\Python36\lib\xml\dom\expatbuilder.py in parseString(self, string)
    221         parser = self.getParser()
    222         try:
--> 223             parser.Parse(string, True)
    224             self._setup_subset(string)
    225         except ParseEscape:

ExpatError: mismatched tag: line 117, column 2

Here is my modified script after this thread on CMEMS forum: https://help.marine.copernicus.eu/en/articles/5211063-how-to-use-the-motuclient-within-python-environment-e-g-spyder

import motuclient
import getpass
import datetime
from datetime import datetime, timedelta
import os

class MotuOptions:
    def __init__(self, attrs: dict):
        super(MotuOptions, self).__setattr__("attrs", attrs)

    def __setattr__(self, k, v):
        self.attrs[k] = v

    def __getattr__(self, k):
        try:
            return self.attrs[k]
        except KeyError:
            return None


def motu_option_parser(script_template, usr, pwd, output_filename,out_dir,data_start,data_sfarsit):
    dictionary = dict(
        [e.strip().partition(" ")[::2] for e in script_template.split('--')])
    dictionary['variable'] = [value for (var, value) in [e.strip().partition(" ")[::2] for e in script_template.split('--')] if var == 'variable']  # pylint: disable=line-too-long
    for k, v in list(dictionary.items()):
        if v == '<OUTPUT_DIRECTORY>':
            dictionary[k] = out_dir
        if v == '<OUTPUT_FILENAME>':
            dictionary[k] = output_filename
        if v == '<USERNAME>':
            dictionary[k] = usr
        if v == '<PASSWORD>':
            dictionary[k] = pwd
        if v=='<date_min>':
            dictionary[k]= data_start
        if v=='<date_max>':
            dictionary[k]= data_sfarsit
        if k in ['longitude-min', 'longitude-max', 'latitude-min', 
                 'latitude-max', 'depth-min', 'depth-max']:
            dictionary[k] = float(v)
        if k in ['date_min', 'date_max']:
            dictionary[k] = v[1:-1]
        dictionary[k.replace('-','_')] = dictionary.pop(k)
    dictionary.pop('python')
    dictionary['auth_mode'] = 'cas'
    return dictionary

USERNAME =user
PASSWORD = pass

today= datetime.now()
yesterday= astazi1 - timedelta(days=1)


name=str(today)[:10]

data_min=today.strftime('%Y-%m-%d %H:%M:%S')
data_max=yesterday.strftime('%Y-%m-%d %H:%M:%S')
type(data_min)
print(data_max)

OUTPUT_FILENAME = name+'_SST.nc'

OUTPUT_DIRECTORY = "path"
script_template = 'python -m motuclient \
--motu https://nrt.cmems-du.eu/motu-web/Motu \
--service-id SST_GLO_SST_L4_NRT_OBSERVATIONS_010_001-TDS \
--product-id METOFFICE-GLO-SST-L4-NRT-OBS-SST-V2 \
--longitude-min 14 --longitude-max 44 \
--latitude-min 25 --latitude-max 66 \
--data_start <date_min>  --data_sfarsit <date_max>  \
--variable analysed_sst \
--out-dir <OUTPUT_DIRECTORY> --out-name <OUTPUT_FILENAME> \
--user <USERNAME>--pwd <PASSWORD>'
print(script_template)

data_request_options_dict_automated = motu_option_parser(script_template, USERNAME, PASSWORD, OUTPUT_FILENAME,OUTPUT_DIRECTORY, data_start, data_sfarsit)

data_request_options_dict_automated

from motu_utils import motu_api
motu_api.execute_request(MotuOptions(data_request_options_dict_automated)) `

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0