X-Git-Url: https://wylark.com/src/infoex-autowx.git/blobdiff_plain/c2eb371bec21b7fbef29868fc6b92d1f2703d288..8be95536e1c559c145a33062d1659004af9f5338:/infoex-autowx.py?ds=sidebyside diff --git a/infoex-autowx.py b/infoex-autowx.py index 0755e4a..baa8c84 100755 --- a/infoex-autowx.py +++ b/infoex-autowx.py @@ -31,7 +31,7 @@ import sys import time from ftplib import FTP -from optparse import OptionParser +from argparse import ArgumentParser import requests @@ -39,30 +39,34 @@ import zeep import zeep.cache import zeep.transports -__version__ = '2.0.1' +__version__ = '2.1.0' LOG = logging.getLogger(__name__) LOG.setLevel(logging.NOTSET) def get_parser(): """Return OptionParser for this program""" - parser = OptionParser(version=__version__) + parser = ArgumentParser() - parser.add_option("--config", - dest="config", - metavar="FILE", - help="location of config file") + parser.add_argument("--version", + action="version", + version=__version__) - parser.add_option("--log-level", - dest="log_level", - default=None, - help="set the log level (debug, info, warning)") + parser.add_argument("--config", + dest="config", + metavar="FILE", + help="location of config file") - parser.add_option("--dry-run", - action="store_true", - dest="dry_run", - default=False, - help="fetch data but don't upload to InfoEx") + parser.add_argument("--log-level", + dest="log_level", + default=None, + help="set the log level (debug, info, warning)") + + parser.add_argument("--dry-run", + action="store_true", + dest="dry_run", + default=False, + help="fetch data but don't upload to InfoEx") return parser @@ -155,7 +159,7 @@ def setup_logging(log_level): def main(): """Main routine: sort through args, decide what to do, then do it""" parser = get_parser() - (options, args) = parser.parse_args() + options = parser.parse_args() config = configparser.ConfigParser(allow_no_value=False) @@ -214,6 +218,20 @@ def main(): LOG.warning("BAD KEY wx_data['%s']", element_cd) continue + # Massage precision of certain values to fit InfoEx's + # expectations + # + # 0 decimal places: wind speed, wind direction, wind gust, snow depth + # 1 decimal place: air temp, baro + # Avoid transforming None values + if infoex['wx_data'][element_cd] is None: + continue + elif element_cd in ['wind_speed', 'WSPD', 'wind_direction', + 'WDIR', 'wind_gust', 'SNWD', 'snow_depth']: + infoex['wx_data'][element_cd] = round(infoex['wx_data'][element_cd]) + elif element_cd in ['TOBS', 'air_temp', 'PRES', 'pressure']: + infoex['wx_data'][element_cd] = round(infoex['wx_data'][element_cd], 1) + # CONSIDER: Casting every value to Float() -- need to investigate if # any possible elementCds we may want are any other data # type than float.