wttr.in 是一种面向控制台的天气预报服务,支持各种信息 表示方法,

例如控制台 HTTP 客户端的面向终端的 ANSI 序列 (curl、httpie 或 wget)、用于 Web 浏览器的 HTML,

或用于图形查看器的 PNG。

该服务允许您提前三天获取天气,即月相,并支持公制和英制温度显示系统。

Wego本身,以及wttr,使用WorldWeatherOnline作为天气信息的来源。

您可以从 shell 或 Web 浏览器访问该服务,如下所示:

$ curl wttr.in
Weather for City: weihai, china

     \   /     Clear
      .-.      10 – 11 °C
   ― (   ) ―   ↑ 11 km/h
      `-’      10 km
     /   \     0.0 mm

用 wget 或 curl 在终端中获取天气预报数据_HTML

或在 PowerShell 中:

Invoke-RestMethod https://wttr.in

用 wget 或 curl 在终端中获取天气预报数据_天气预报_02

想要获取特定位置的天气信息?您可以将所需的位置添加到 URL 中的 这样的请求:

$ curl wttr.in/beijing
$ curl wttr.in/london
$ curl wttr.in/Salt+Lake+City

如果省略位置名称,则会根据您的 IP 地址获取当前位置的报告。

假设您想获取城镇或城市以外的地理位置的天气 - 也许是一个景点 在一个城市,一个山的名字,或一些特殊的地方。

在名称前添加字符以查找该特殊 检索天气之前的位置名称:~

$ curl wttr.in/~Vostok+Station
$ curl wttr.in/~Eiffel+Tower
$ curl wttr.in/~Kilimanjaro

在这些示例中,你将在天气预报输出下方看到一条线,显示地理位置 查找位置的结果:

Location: Vostok Station, станция Восток, AAT, Antarctica [-78.4642714,106.8364678]
Location: Tour Eiffel, 5, Avenue Anatole France, Gros-Caillou, 7e, Paris, Île-de-France, 75007, France [48.8582602,2.29449905432]
Location: Kilimanjaro, Northern, Tanzania [-3.4762789,37.3872648]

您还可以使用 IP 地址(直接)或域名(以 )为前缀来指定位置:@

$ curl wttr.in/@github.com
$ curl wttr.in/@msu.ru

要在线获取详细信息,您可以访问 /:help 页面:

$ curl wttr.in/:help

支持的输出格式和视图

wttr.in 目前支持五种输出格式:

  • 终端的 ANSI;
  • 终端和脚本的纯文本;
  • 用于浏览器的 HTML;
  • PNG 用于图形查看器;
  • 用于脚本和 API 的 JSON;
  • 脚本和 API 的 Prometheus 指标。

ANSI 和 HTML 格式是根据 User-Agent 字符串选择的。

要强制使用禁用颜色的纯文本,请执行以下操作:

$ curl wttr.in/?T

要将输出限制为标准控制台字体(例如 Consolas 和 Lucida 控制台)中可用的字形:

$ curl wttr.in/?d

可以通过在查询末尾添加以下内容来强制使用 PNG 格式:.png

$ wget wttr.in/Paris.png

您可以像在 URL 中一样使用 PNG 格式的所有选项,但您必须 将它们分隔为代替 和 :_?&

$ wget wttr.in/Paris_0tqp_lang=fr.png

PNG 格式的有用选项:

  • t为了提高透明度 (transparency=150);
  • transparency=0..255 表示自定义透明度级别。

当使用天气 PNG 向图片添加天气数据时,透明度是一项有用的功能:

$ convert source.jpg <( curl wttr.in/Oymyakon_tqp0.png ) -geometry +50+50 -composite target.jpg

在此示例中:

  • source.jpg- 源文件;
  • target.jpg- 目标文件;
  • Oymyakon- 地点名称;
  • tqp0- 选项(推荐)。

用 wget 或 curl 在终端中获取天气预报数据_输出格式_03

您可以使用 wttr-switcher 将显示当前或选定位置的天气状况的特殊 wttr.in 小部件嵌入到 HTML 页面中。

它看起来像:wttr-switcher-example 

用 wget 或 curl 在终端中获取天气预报数据_天气预报_04

不同的输出格式

JSON 输出

JSON 格式是一种功能,通过易于解析的格式提供对 wttr.in 数据的访问,而无需用户创建复杂的脚本来重新解释 图形输出。

若要提取 JSON 格式的信息,请使用以下语法:

$ curl wttr.in/beijing?format=j1

这将以 JSON 格式获取有关北京区域的信息。j1 格式代码用于允许对 JSON 输出使用其他布局。

结果将如下所示:

{
    "current_condition": [
        {
            "FeelsLikeC": "4",
            "FeelsLikeF": "38",
            "cloudcover": "0",
            "humidity": "30",
            "lang_zh": [
                {
                    "value": "晴天"
                }
            ],
            "localObsDateTime": "2024-03-20 07:58 AM",
            "observation_time": "11:58 PM",
            "precipInches": "0.0",
            "precipMM": "0.0",
            "pressure": "1030",
            "pressureInches": "30",
            "temp_C": "4",
            "temp_F": "39",
            "uvIndex": "2",
            "visibility": "10",
            "visibilityMiles": "6",
            "weatherCode": "113",
            "weatherDesc": [
                {
                    "value": "Sunny"
                }
            ],
            "weatherIconUrl": [
                {
                    "value": ""
                }
            ],
            "winddir16Point": "N",
            "winddirDegree": "360",
            "windspeedKmph": "7",
            "windspeedMiles": "4"
        }
    ],
    "nearest_area": [
        {
            "areaName": [
                {
                    "value": "Beijing"
                }
            ],
            "country": [
                {
                    "value": "China"
                }
            ],
            "latitude": "39.929",
            "longitude": "116.388",
            "population": "7480601",
            "region": [
                {
                    "value": "Beijing"
                }
            ],
            "weatherUrl": [
                {
                    "value": ""
                }
            ]
        }
    ],
    "request": [
        {
            "query": "Lat 39.91 and Lon 116.39",
            "type": "LatLon"
        }
    ],
...

这些值中的大多数都是不言自明的。