Update from master

This commit is contained in:
Igor Chubin 2021-01-02 12:24:04 +01:00
commit 3ae30af48d
5 changed files with 81 additions and 83 deletions

View File

@ -301,8 +301,7 @@ def parse_request(location, request, query, fast_mode=False):
location, override_location_name, full_address, country, query_source_location, hemisphere = \
location_processing(parsed_query["location"], parsed_query["ip_addr"])
us_ip = (query_source_location[2] == 'United States' or \
query_source_location[2] == 'Unites States of America') \
us_ip = query_source_location[2] in ["United States", "United States of America"] \
and 'slack' not in parsed_query['user_agent']
query = parse_query.metric_or_imperial(query, lang, us_ip=us_ip)

View File

@ -49,3 +49,4 @@ Braga : Braga, Portugal
Kashan : ~Kashan,Iran
Baku : Baku,Az
Rome : Rome, Italia
YYZ : Toronto Pearson Airport

View File

@ -1,54 +1,54 @@
Instrucciones:
$ curl wttr.in # el clima en su ubicación actual
$ curl wttr.in/muc # el clima en el aeropuerto de Múnich
$ curl wttr.in # El clima en su ubicación actual
$ curl wttr.in/muc # El clima en el aeropuerto de Múnich
Tipos de ubicación soportados:
/paris # el nombre de una ciudad
/~Eiffel+tower # el nombre de cualquier sitio famoso
/Москва # el nombre Unicode de cualquier sitio en cualquier idioma
/muc # el código de un aeropuerto (3 letras)
/@stackoverflow.com # el nombre de un dominio web
/94107 # un código de área
/-78.46,106.79 # coordenadas de GPS
/paris # El nombre de una ciudad
/~Eiffel+tower # El nombre de cualquier sitio famoso
/Москва # El nombre en Unicode de cualquier sitio en cualquier idioma
/muc # El código de un aeropuerto (3 letras)
/@stackoverflow.com # El nombre de un dominio web
/94107 # Un código de area
/-78.46,106.79 # Coordenadas de GPS
Sitios especiales:
/moon # la fase de la luna (añade ,+US o ,+France para estos países)
/moon@2016-10-25 # la fase de la luna en una fecha específica (@2016-10-25)
/moon # La fase de la luna (añade ,+US o ,+France para estos paises)
/moon@2016-10-25 # La fase de la luna en una fecha específica (@2016-10-25)
Unidades:
?m # métricas (SI) (el estándar en todos los sitios excepto en EEUU)
?m # Métricas (SI) (el estándar en todos los sitios excepto en EEUU)
?u # Sistema Unificado de Clasificación del Suelo o USCS (el estándar en EEUU)
?M # mostrar la velocidad del viento en m/s
?M # Mostrar la velocidad del viento en m/s
Opciones de visualización:
?0 # solamente el clima actual
?1 # el clima actual + la previsión de 1 día
?2 # el clima actual + la previsión de 2 días
?0 # Solamente el clima actual
?1 # El clima actual + la previsión del día siguiente
?2 # El clima actual + la previsión de los dos días siguientes
?A # ignora al agente del usuario y fuerza el formato de salida ANSI (terminal)
?F # no muestra la linea de "Seguir"
?n # versión corta (solo el día y la noche)
?q # versión silenciosa (sin el texto de "El tiempo en")
?Q # versión super silenciosa (sin "El tiempo en" ni el nombre de la ciudad)
?T # desactiva las secuencias de terminal (sin colores)
?F # No muestra la linea de "Seguir"
?n # Versión corta (solo día y noche)
?q # Versión silenciosa (sin el texto de "El tiempo en")
?Q # Versión supersilenciosa (ni "El tiempo en" ni el nombre de la ciudad)
?T # Desactiva las secuencias de terminal (sin colores)
Opciones de PNG:
/paris.png # genera una imagen PNG
?p # añade un borde alrededor de la imagen
?t # transparencia 150
transparency=... # transparencia de 0 a 255 (255 = sin transparencia)
/paris.png # Genera una imagen PNG
?p # Añade un borde alrededor de la imagen
?t # Transparencia = 150
transparency=... # Transparencia de 0 a 255 (255 = sin transparencia)
Las opciones se pueden utilizar conjuntamente:
/Paris?0pq
/Paris?0pq&lang=fr
/Paris_0pq.png # en PNG las opciones se especifican después del carácter _
/Rome_0pq_lang=it.png # una larga secuencia de opciones se puede separar por el carácter _
/Paris_0pq.png # En modo PNG las opciones se especifican después del carácter _ (guión bajo)
/Rome_0pq_lang=it.png # Una larga secuencia de opciones se puede separar por el carácter _ (guión bajo)
Ubicación:
@ -63,6 +63,6 @@ Idiomas soportados:
URLs especiales:
/:help # muestra la página de ayuda
/:bash.function # sugiere una función wttr() en bash
/:translation # muestra información acerca de los traductores
/:help # Muestra esta página
/:bash.function # Muestra una función wttr() sugerida en bash
/:translation # Muestra información acerca de los traductores

View File

@ -16,7 +16,7 @@
263: Llovizna ligera irregular: Patchy light drizzle
266: Llovizna ligera: Light drizzle
281: Llovizna helada: Freezing drizzle
284: Llovizna fuertemente helada: Heavy freezing drizzle
284: Llovizna muy helada: Heavy freezing drizzle
293: Lluvia ligera irregular: Patchy light rain
296: Lluvia ligera: Light rain
299: Lluvia moderada ocasional: Moderate rain at times
@ -27,15 +27,15 @@
314: Lluvia helada moderada o fuerte: Moderate or heavy freezing rain
317: Aguanieve ligero: Light sleet
320: Aguanieve moderado o fuerte: Moderate or heavy sleet
323: Nevada ligera irregular: Patchy light snow
326: Nevada ligera: Light snow
329: Nevada moderada irregular: Patchy moderate snow
332: Nevada moderada: Moderate snow
335: Nevada pesada irregular: Patchy heavy snow
338: Nevada intensa: Heavy snow
350: Granizo: Ice pellets
323: Nieve ligera irregular: Patchy light snow
326: Nieve ligera: Light snow
329: Nieve moderada irregular: Patchy moderate snow
332: Nieve moderada: Moderate snow
335: Nieve pesada irregular: Patchy heavy snow
338: Nieve pesada: Heavy snow
350: Perdigones de hielo: Ice pellets
353: Aguacero ligero: Light rain shower
356: Aguacero moderada o fuerte: Moderate or heavy rain shower
356: Aguacero moderado o fuerte: Moderate or heavy rain shower
359: Aguacero torrencial: Torrential rain shower
362: Aguacero ligero con aguanieve: Light sleet showers
365: Aguacero con aguanieve moderado o fuerte: Moderate or heavy sleet showers

View File

@ -548,13 +548,15 @@ func pad(s string, mustLen int) (ret string) {
}
func formatTemp(c cond) string {
color := func(temp int, explicit_plus bool) string {
color := func(temp int, explicitPlus bool) string {
var col = 0
if !config.Inverse {
col = 21
// Extemely cold temperature must be shown with violet
// because dark blue is too dark
col = 165
switch temp {
case -15, -14, -13:
col = 27
col = 171
case -12, -11, -10:
col = 33
case -9, -8, -7:
@ -646,11 +648,10 @@ func formatTemp(c cond) string {
if config.Imperial {
temp = (temp*18 + 320) / 10
}
if explicit_plus {
if explicitPlus {
return fmt.Sprintf("\033[38;5;%03dm+%d\033[0m", col, temp)
} else {
return fmt.Sprintf("\033[38;5;%03dm%d\033[0m", col, temp)
}
return fmt.Sprintf("\033[38;5;%03dm%d\033[0m", col, temp)
}
t := c.TempC
if t == 0 {
@ -663,17 +664,17 @@ func formatTemp(c cond) string {
// }
hyphen = ".."
explicit_plus := false
explicitPlus := false
if c.FeelsLikeC < t {
if c.FeelsLikeC < 0 && t > 0 {
explicit_plus = true
explicitPlus = true
}
return pad(fmt.Sprintf("%s%s%s °%s", color(c.FeelsLikeC, false), hyphen, color(t, explicit_plus), unitTemp[config.Imperial]), 15)
return pad(fmt.Sprintf("%s%s%s °%s", color(c.FeelsLikeC, false), hyphen, color(t, explicitPlus), unitTemp[config.Imperial]), 15)
} else if c.FeelsLikeC > t {
if t < 0 && c.FeelsLikeC > 0 {
explicit_plus = true
explicitPlus = true
}
return pad(fmt.Sprintf("%s%s%s °%s", color(t, false), hyphen, color(c.FeelsLikeC, explicit_plus), unitTemp[config.Imperial]), 15)
return pad(fmt.Sprintf("%s%s%s °%s", color(t, false), hyphen, color(c.FeelsLikeC, explicitPlus), unitTemp[config.Imperial]), 15)
}
return pad(fmt.Sprintf("%s °%s", color(c.FeelsLikeC, false), unitTemp[config.Imperial]), 15)
}
@ -735,8 +736,8 @@ func formatWind(c cond) string {
// }
hyphen = "-"
cWindGustKmph := fmt.Sprintf("%s", color(c.WindGustKmph))
cWindspeedKmph := fmt.Sprintf("%s", color(c.WindspeedKmph))
cWindGustKmph := color(c.WindGustKmph)
cWindspeedKmph := color(c.WindspeedKmph)
if windInRightUnits(c.WindGustKmph) > windInRightUnits(c.WindspeedKmph) {
return pad(fmt.Sprintf("%s %s%s%s %s", windDir[c.Winddir16Point], cWindspeedKmph, hyphen, cWindGustKmph, unitWindString), 15)
}
@ -770,7 +771,7 @@ func formatCond(cur []string, c cond, current bool) (ret []string) {
}
if config.Inverse {
// inverting colors
for i, _ := range icon {
for i := range icon {
icon[i] = strings.Replace(icon[i], "38;5;226", "38;5;94", -1)
icon[i] = strings.Replace(icon[i], "38;5;250", "38;5;243", -1)
icon[i] = strings.Replace(icon[i], "38;5;21", "38;5;18", -1)
@ -787,7 +788,7 @@ func formatCond(cur []string, c cond, current bool) (ret []string) {
}
for runewidth.StringWidth(desc) > 15 {
_, size := utf8.DecodeLastRuneInString(desc)
desc = desc[size:len(desc)]
desc = desc[size:]
}
} else {
for runewidth.StringWidth(desc) < 15 {
@ -810,7 +811,7 @@ func formatCond(cur []string, c cond, current bool) (ret []string) {
} else {
if config.RightToLeft {
if frstRune, size := utf8.DecodeRuneInString(desc); frstRune != ' ' {
desc = "…" + desc[size:len(desc)]
desc = "…" + desc[size:]
for runewidth.StringWidth(desc) < 15 {
desc = " " + desc
}
@ -955,7 +956,7 @@ func printDay(w weather) (ret []string) {
return append(ret,
"└──────────────────────────────┴──────────────────────────────┘")
} else {
}
names := ""
if config.RightToLeft {
@ -975,8 +976,6 @@ func printDay(w weather) (ret []string) {
return append(ret,
"└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘")
}
return
}
func unmarshalLang(body []byte, r *resp) error {
@ -1031,10 +1030,9 @@ func unmarshalLang(body []byte, r *resp) error {
var buf bytes.Buffer
if err := json.NewEncoder(&buf).Encode(rv); err != nil {
return err
} else {
if err = json.NewDecoder(&buf).Decode(r); err != nil {
return err
}
if err := json.NewDecoder(&buf).Decode(r); err != nil {
return err
}
return nil
}
@ -1084,7 +1082,7 @@ func getDataFromAPI() (ret resp) {
var out bytes.Buffer
json.Indent(&out, body, "", " ")
out.WriteTo(os.Stderr)
fmt.Println("\n")
fmt.Print("\n\n")
}
if config.Lang == "" {