Skip to main content

AirVisual 空气质量数据的简单 API

项目描述

☀️ pyairvisual:AirVisual© API 的精简 Python 包装器

CI 派皮 版本 执照 代码覆盖率 可维护性 说谢谢

pyairvisual是一个简单、干净、经过良好测试的库,用于与 AirVisual交互以检索空气质量信息。

Python 版本

pyairvisual目前支持:

  • 蟒蛇 3.8
  • 蟒蛇 3.9
  • 蟒蛇 3.10

安装

pip install pyairvisual

API 密钥

您可以从AirVisual API 站点获取 AirVisual API 密钥 。根据您选择的计划,API 将提供更多功能:

社区

社区计划允许访问:

  • 列出支持的国家
  • 列出支持的状态
  • 列出支持的城市
  • 根据IP地址从最近的城市获取数据
  • 根据纬度/经度从最近的城市获取数据
  • 从特定城市获取数据

启动

启动计划允许访问:

  • 列出城市中支持的电台
  • 根据 IP 地址从最近的站点获取数据
  • 根据纬度/经度从最近的站点获取数据
  • 从特定站点获取数据

企业

企业计划允许访问:

  • 获得全球城市空气质量排名

用法

使用云 API

import asyncio

from pyairvisual import CloudAPI


async def main() -> None:
    """Run!"""
    cloud_api = CloudAPI("<YOUR_AIRVISUAL_API_KEY>")

    # Get data based on the city nearest to your IP address:
    data = await cloud_api.air_quality.nearest_city()

    # ...or get data based on the city nearest to a latitude/longitude:
    data = await cloud_api.air_quality.nearest_city(
        latitude=39.742599, longitude=-104.9942557
    )

    # ...or get it explicitly:
    data = await cloud_api.air_quality.city(
        city="Los Angeles", state="California", country="USA"
    )

    # If you have the appropriate API key, you can also get data based on
    # station (nearest or explicit):
    data = await cloud_api.air_quality.nearest_station()
    data = await cloud_api.air_quality.nearest_station(
        latitude=39.742599, longitude=-104.9942557
    )
    data = await cloud_api.air_quality.station(
        station="US Embassy in Beijing",
        city="Beijing",
        state="Beijing",
        country="China",
    )

    # With the appropriate API key, you can get an air quality ranking:
    data = await cloud_api.air_quality.ranking()

    # pyairvisual gives you several methods to look locations up:
    countries = await cloud_api.supported.countries()
    states = await cloud_api.supported.states("USA")
    cities = await cloud_api.supported.cities("USA", "Colorado")
    stations = await cloud_api.supported.stations("USA", "Colorado", "Denver")


asyncio.run(main())

默认情况下,该库会为每个协程创建一个到 AirVisual 的新连接。如果您正在调用大量协程(或者只是想尽可能节省运行时的每一秒), 可以使用 an 来进行连接池:aiohttp ClientSession

import asyncio

from aiohttp import ClientSession

from pyairvisual import CloudAPI


async def main() -> None:
    """Run!"""
    async with ClientSession() as session:
        cloud_api = CloudAPI("<YOUR_AIRVISUAL_API_KEY>", session=session)

        # ...


asyncio.run(main())

使用 Node/Pro 单元

pyairvisual还允许用户 通过云 API与Node/Pro 单元进行交互:

import asyncio

from aiohttp import ClientSession

from pyairvisual import CloudAPI


async def main() -> None:
    """Run!"""
    cloud_api = CloudAPI("<YOUR_AIRVISUAL_API_KEY>")

    # The Node/Pro unit ID can be retrieved from the "API" section of the cloud
    # dashboard:
    data = await cloud_api.node.get_by_node_id("<NODE_ID>")


asyncio.run(main())

...或通过 Samba 通过本地网络(设备密码可以 在设备本身上找到):

import asyncio

from aiohttp import ClientSession

from pyairvisual.node import NodeSamba


async def main() -> None:
    """Run!"""
    async with NodeSamba("<IP_ADDRESS_OR_HOST>", "<PASSWORD>") as node:
        measurements = node.async_get_latest_measurements()

        # Can take some optional parameters:
        #   1. include_trends: include trends (defaults to True)
        #   2. measurements_to_use: the number of measurements to use when calculating
        #      trends (defaults to -1, which means "use all measurements")
        history = node.async_get_history()


asyncio.run(main())

查看示例、测试和源文件本身以获取方法签名和更多示例。

贡献

  1. 检查开放的功能/错误发起一个讨论
  2. 分叉存储库
  3. 可选,但强烈推荐)创建虚拟环境:python3 -m venv .venv
  4. 可选,但强烈推荐)进入虚拟环境:source ./.venv/bin/activate
  5. 安装开发环境:script/setup
  6. 编码您的新功能或错误修复。
  7. 编写涵盖新功能的测试。
  8. 运行测试并确保 100% 的代码覆盖率:nox -rs coverage
  9. README.md使用任何新文档进行更新。
  10. 将自己添加到AUTHORS.md.
  11. 提交拉取请求!

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

pyairvisual-2022.7.0.tar.gz (12.7 kB 图哈希)

已上传 source

内置分布

pyairvisual-2022.7.0-py3-none-any.whl (11.5 kB 查看哈希

已上传 py3