wttrin

package module
v0.0.0-...-c24fc04 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 7, 2020 License: MIT Imports: 9 Imported by: 0

README

wttrin

http://wttr.in ⛅️ The right way to check the weather 的 golang 封装

安装

go get -u github.com/axiaoxin-com/wttrin

在线文档

https://godoc.org/github.com/axiaoxin-com/wttrin

Documentation

Overview

Package wttrin 封装http://wttr.in

不同形式的天气预报URL格式:

ASCII: http://wttr.in/<location>?<query>
图片: http://wttr.in/<location>_<query>.png
单行文本: http://wttr.in/<location>?format=<format>&<query>

location 是需要查询天气预报的地点,可以使用英文字符串,也可以直接传中文

query 是控制天气预报内容的参数,所有控制参数直接拼接在一起即可,如0_A_T_p表示对输出内容做对应的4种处理

不加query参数,默认返回html内容,包含全部信息,从上到下为:预报的地点;当前天气信息;今天、明天、后天的表格天气信息;底部详细地点信息;底部wttrin作者项目信息

以下信息是阅读wttr.in源码写的,其中有点参数看起来还在实现中,因此仅供参考。

query 控制参数解释:

A: 返回带颜色的ASCII内容,不加返回的是HTML
n: 表格天气信息只返回中午和夜间,不加返回的是早上、中午、傍晚、夜间的信息
m: 温度展示位摄氏度
u: 温度展示为华氏度,风速等其他值和单位也有对应变化
M: 风速展示为m/s 不加展示为km/h
I: 反转html或ASCII中的颜色
t: 设置png图片透明值为150
transparency: 指定png图片透明值,transparency=123
T: 返回的ASCII内容不带颜色
p: 对内容设置一定的padding
0: 返回当前天气信息
1: 返回当前+今天的天气信息
2: 返回当前+今天+明天的天气信息
3: 返回当前+今天+明天+后天的天气信息
q: 不显示底部详细地址和顶部地址信息的前缀信息
Q: 不显示顶部和底部的地点信息
F: 不显示底部作者项目信息
lang: 天气语言翻译 "az", "bg", "bs", "cy", "cs", "eo", "es", "fi", "ga", "hi", "hr", "hy", "is", "ja", "jv", "ka", "kk", "ko", "ky", "lt", "lv", "mk", "ml", "nl", "fy", "nn", "pt", "pt-br", "sk", "sl", "sr", "sr-lat", "sv", "sw",  "te", "uz", "zh", "zu", "he"

format 参数解释

%l: 地点
%c: 天气图标
%C: 天气文字
%t: 温度
%w: 风速
%m: 月相图标 0-新月 1-眉月 2-上弦月 3-盈凸月 4-满月 5-亏凸月 6-下弦月 7-残月
%M: 新月后第几天
%h: 湿度
%p: 降水量
%o: 降水几率
%P: 气压
%s: 日落时间
1: 预定义格式(⛅️ +15°C)
2: 预定义格式(⛅️ 🌡️+15°C 🌬️↗11 km/h)
3: 预定义格式(成都: ⛅️ +15°C)
4: 预定义格式(成都: ⛅️ 🌡️+15°C 🌬️↗11 km/h)

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func ASCII

func ASCII(lang, location string, q ...string) (string, error)

ASCII 图形天气信息

Example

返回ASCII图形的天气预报示例

package main

import (
	"log"

	"github.com/axiaoxin-com/wttrin"
)

func main() {
	// 默认样式控制
	result, err := wttrin.ASCII("zh", "成都")
	if err != nil {
		log.Fatal(err)
	}
	log.Println(result)

	// 自定义样式控制
	result, err = wttrin.ASCII("zh", "成都", "0", "A", "Q")
	if err != nil {
		log.Fatal(err)
	}
	log.Println(result)
}

func Image

func Image(lang, location string, q ...string) (io.ReadCloser, error)

Image 图片天气信息

Example

返回天气预报图片的示例

package main

import (
	"io"
	"log"
	"os"

	"github.com/axiaoxin-com/wttrin"
)

func main() {
	// 默认样式的图片
	result, err := wttrin.Image("zh", "成都")
	if err != nil {
		log.Fatal(err)
	}
	// 保存图片
	f, err := os.Create("./wttrin_noquery.png")
	if err != nil {
		log.Fatal(err)
	}
	defer f.Close()
	if _, err := io.Copy(f, result); err != nil {
		log.Fatal(err)
	}

	// 自定义图片样式
	result, err = wttrin.Image("zh", "成都", "A", "p", "F")
	if err != nil {
		log.Fatal(err)
	}
	// 保存图片
	f1, err := os.Create("./wttrin_query.png")
	if err != nil {
		log.Fatal(err)
	}
	defer f1.Close()
	if _, err := io.Copy(f1, result); err != nil {
		log.Fatal(err)
	}
}

func Line

func Line(lang, location, format string, q ...string) (string, error)

Line 单行天气信息

Example

单行文字的天气预报示例:

package main

import (
	"log"

	"github.com/axiaoxin-com/wttrin"
)

func main() {
	// 自定义格式
	result, err := wttrin.Line("zh", "成都", "地点%l 天气图标%c 天气文字%C 温度%t 风速%w 月相图标%m 新月后第几天%M 湿度%h 降水量%p 降水几率%o 气压%P 日落时间%s")
	if err != nil {
		log.Fatal(err)
	}
	log.Print(result)

	// 默认格式
	result, err = wttrin.Line("zh", "成都", "")
	if err != nil {
		log.Fatal(err)
	}
	log.Print(result)
}

func WttrIn

func WttrIn(locationQuery string) (io.ReadCloser, error)

WttrIn 获取 GET 请求 http://wttr.in 的返回 Body

Example

原始请求http://wttr.in的示例

package main

import (
	"io/ioutil"
	"log"

	"github.com/axiaoxin-com/wttrin"
)

func main() {
	body, err := wttrin.WttrIn("成都?0ATp")
	if err != nil {
		log.Fatal(err)
	}
	content, err := ioutil.ReadAll(body)
	if err != nil {
		log.Fatal(err)
	}
	defer body.Close()
	log.Println(string(content))
}

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL