#!/usr/bin/python3

from logging import basicConfig, getLogger
from sys import argv

from requests import get

basicConfig(level="INFO")
L = getLogger(__name__)


def out(keys, values):
    print(
        "airgradient,{} {}".format(
            ",".join([f"{k}={v}" for k, v in keys.items()]),
            ",".join([f"{k}={v}" for k, v in values.items()]),
        ),
        flush=True,
    )


try:
    r = get(
        f"https://api.airgradient.com/public/api/v1/locations/measures/current?token={argv[2]}"
    )
    L.debug(r.status_code)
    L.info(r.text)
    r.raise_for_status()
    for location in r.json():
        L.debug(location)
        out(
            {
                "place": argv[1],
                "location": location["locationName"],
            },
            {
                k: location[k]
                for k in (
                    "atmp",
                    "noxIndex",
                    "pm003Count",
                    "pm01",
                    "pm02",
                    "pm10",
                    "rco2",
                    "rhum",
                    "tvoc",
                    "tvocIndex",
                    "wifi",
                )
            },
        )
except Exception:
    L.exception("fail!")
