Merge branch 'master' into master

pull/307/head
Igor Chubin 6 years ago committed by GitHub
commit 0ab924b9ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -123,7 +123,7 @@ Nuremberg: 🌦 +11⁰C
Available preconfigured formats: 1, 2, 3, 4 and the custom format using the percent notation (see below). Available preconfigured formats: 1, 2, 3, 4 and the custom format using the percent notation (see below).
You can sepcify multiple locations separated with `:` (for repeating queries): You can specify multiple locations separated with `:` (for repeating queries):
``` ```
$ curl wttr.in/Nuremberg:Hamburg:Berlin?format=3 $ curl wttr.in/Nuremberg:Hamburg:Berlin?format=3
@ -174,6 +174,44 @@ set -g status-right "$WEATHER ..."
``` ```
![wttr.in in tmux status bar](https://wttr.in/files/example-tmux-status-line.png) ![wttr.in in tmux status bar](https://wttr.in/files/example-tmux-status-line.png)
To see emojis in terminal, you need:
1. Terminal support for emojis (was added to Cairo 1.15.8);
2. Font with emojis support.
For the Emoji font, we recommend *Noto Color Emoji*, and a good alternative option would be the *Emoji One* font;
both of them support all necessary emoji glyphs.
Font configuration:
```
$ cat ~/.config/fontconfig/fonts.conf
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>serif</family>
<prefer>
<family>Noto Color Emoji</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Color Emoji</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Noto Color Emoji</family>
</prefer>
</alias>
</fontconfig>
```
(to apply the configuration, run `fc-cache -f -v`)
## Moon phases ## Moon phases
wttr.in can also be used to check the phase of the Moon. This example shows how to see the current Moon phase: wttr.in can also be used to check the phase of the Moon. This example shows how to see the current Moon phase:

@ -26,6 +26,7 @@ MY_LOADER = jinja2.ChoiceLoader([
APP.jinja_loader, APP.jinja_loader,
jinja2.FileSystemLoader(TEMPLATES), jinja2.FileSystemLoader(TEMPLATES),
]) ])
APP.jinja_loader = MY_LOADER APP.jinja_loader = MY_LOADER
@APP.route('/files/<path:path>') @APP.route('/files/<path:path>')

@ -11,7 +11,6 @@ from __future__ import print_function
import os import os
import json import json
import re
import socket import socket
import requests import requests
import geoip2.database import geoip2.database
@ -36,13 +35,15 @@ def is_ip(ip_addr):
Check if `ip_addr` looks like an IP Address Check if `ip_addr` looks like an IP Address
""" """
if re.match(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', ip_addr) is None:
return False
try: try:
socket.inet_aton(ip_addr) socket.inet_pton(socket.AF_INET, ip_addr.encode("utf-8"))
return True return True
except socket.error: except socket.error:
return False try:
socket.inet_pton(socket.AF_INET6, ip_addr.encode("utf-8"))
return True
except socket.error:
return False
def location_normalize(location): def location_normalize(location):
""" """
@ -225,17 +226,10 @@ def location_processing(location, ip_addr):
query_source_location = get_location(ip_addr) query_source_location = get_location(ip_addr)
country = None country = None
if location is None or location == 'MyLocation': if not location or location == 'MyLocation':
location, country = query_source_location location = ip_addr
# Let us try to use geolocation services for locations if is_ip(location):
# that were derived from IPs.
if location:
location = '~' + location
if country:
location += ", %s" % country
hide_full_address = not force_show_full_address
elif is_ip(location):
location, country = get_location(location) location, country = get_location(location)
# here too # here too

@ -5,14 +5,16 @@ Translation of almost everything.
""" """
FULL_TRANSLATION = [ FULL_TRANSLATION = [
"af", "da", "de", "fr", "fa", "et", "id", "it", "nb", "nl", "af", "da", "de", "el", "et",
"pl", "pt-br", "ro", "ru", "uk", "vi", "fr", "fa", "hu", "id", "it",
"nb", "nl", "pl", "pt-br", "ro",
"ru", "uk", "vi"
] ]
PARTIAL_TRANSLATION = [ PARTIAL_TRANSLATION = [
"az", "be", "bg", "bs", "ca", "cy", "cs", "az", "be", "bg", "bs", "ca", "cy", "cs",
"el", "eo", "es", "fi", "ga", "hi", "hr", "eo", "es", "fi", "ga", "hi", "hr",
"hu", "hy", "is", "ja", "jv", "ka", "kk", "hy", "is", "ja", "jv", "ka", "kk",
"ko", "ky", "lt", "lv", "mk", "ml", "nl", "fy", "ko", "ky", "lt", "lv", "mk", "ml", "nl", "fy",
"nn", "pt", "pt-br", "sk", "sl", "sr", "sr-lat", "nn", "pt", "pt-br", "sk", "sl", "sr", "sr-lat",
"sv", "sw", "th", "tr", "te", "uz", "sv", "sw", "th", "tr", "te", "uz",
@ -20,8 +22,8 @@ PARTIAL_TRANSLATION = [
] ]
PROXY_LANGS = [ PROXY_LANGS = [
"af", "az", "be", "bs", "ca", "cy", "eo", "af", "az", "be", "bs", "ca", "cy", "el", "eo",
"et", "fa", "fy", "he", "hr", "hy", "id", "is", "et", "fa", "fy", "he", "hr", "hu", "hy", "id", "is",
"it", "ja", "kk", "lv", "mk", "nb", "nn", "it", "ja", "kk", "lv", "mk", "nb", "nn",
"ro", "ru", "sl", "pt-br", "uk", "uz", "ro", "ru", "sl", "pt-br", "uk", "uz",
] ]
@ -45,6 +47,11 @@ een van die koudste permanent bewoonde plekke op aarde.
таму мы пакажам вам надвор'е ў Аймяконе, таму мы пакажам вам надвор'е ў Аймяконе,
самым халодным населеным пункце на планеце. самым халодным населеным пункце на планеце.
Будзем спадзявацца, што ў вас сёння надвор'е лепей! Будзем спадзявацца, што ў вас сёння надвор'е лепей!
""",
'bg':u"""
Не успяхме да открием вашето местоположение
така че ви доведохме в Оймякон,
едно от най-студените постоянно обитавани места на планетата.
""", """,
'bs': u""" 'bs': u"""
Nismo mogli pronaći vašu lokaciju, Nismo mogli pronaći vašu lokaciju,
@ -99,6 +106,11 @@ Nous n'avons pas pu déterminer votre position,
Nous vous avons donc amenés à Oïmiakon, Nous vous avons donc amenés à Oïmiakon,
l'un des endroits les plus froids habités en permanence sur la planète. l'un des endroits les plus froids habités en permanence sur la planète.
Nous espérons qu'il fait meilleur chez vous ! Nous espérons qu'il fait meilleur chez vous !
""",
'hu': u"""
Nem sikerült megtalálni a pozíciódat,
így elhoztunk Ojmjakonba;
az egyik leghidegebb állandóan lakott településre a bolygón.
""", """,
'hy': u""" 'hy': u"""
Ձեր գտնվելու վայրը չհաջողվեց որոշել, Ձեր գտնվելու վայրը չհաջողվեց որոշել,
@ -242,6 +254,7 @@ một trong những nơi lạnh nhất có người sinh sống trên trái đ
'en': u'Unknown location', 'en': u'Unknown location',
'af': u'Onbekende ligging', 'af': u'Onbekende ligging',
'be': u'Невядомае месцазнаходжанне', 'be': u'Невядомае месцазнаходжанне',
'bg': u'Неизвестно местоположение',
'bs': u'Nepoznatoja lokacija', 'bs': u'Nepoznatoja lokacija',
'ca': u'Ubicació desconeguda', 'ca': u'Ubicació desconeguda',
'cs': u'Neznámá poloha', 'cs': u'Neznámá poloha',
@ -254,6 +267,7 @@ một trong những nơi lạnh nhất có người sinh sống trên trái đ
'fa': u'مکان نامعلوم', 'fa': u'مکان نامعلوم',
'fi': u'Tuntematon sijainti', 'fi': u'Tuntematon sijainti',
'fr': u'Emplacement inconnu', 'fr': u'Emplacement inconnu',
'hu': u'Ismeretlen lokáció',
'hy': u'Անհայտ գտնվելու վայր', 'hy': u'Անհայտ գտնվելու վայր',
'id': u'Lokasi tidak diketahui', 'id': u'Lokasi tidak diketahui',
'is': u'Óþekkt staðsetning', 'is': u'Óþekkt staðsetning',
@ -286,6 +300,7 @@ một trong những nơi lạnh nhất có người sinh sống trên trái đ
'en': u'Location', 'en': u'Location',
'af': u'Ligging', 'af': u'Ligging',
'be': u'Месцазнаходжанне', 'be': u'Месцазнаходжанне',
'bg': u'Местоположение',
'bs': u'Lokacija', 'bs': u'Lokacija',
'ca': u'Ubicació', 'ca': u'Ubicació',
'cs': u'Poloha', 'cs': u'Poloha',
@ -298,6 +313,7 @@ một trong những nơi lạnh nhất có người sinh sống trên trái đ
'fa': u'مکان', 'fa': u'مکان',
'fi': u'Tuntematon sijainti', 'fi': u'Tuntematon sijainti',
'fr': u'Emplacement', 'fr': u'Emplacement',
'hu': u'Lokáció',
'hy': u'Դիրք', 'hy': u'Դիրք',
'id': u'Lokasi', 'id': u'Lokasi',
'is': u'Staðsetning', 'is': u'Staðsetning',
@ -346,6 +362,12 @@ U kan vir https://twitter.com/igor_chubin volg vir opdaterings.
Мы вернемся як мага хутчэй. Мы вернемся як мага хутчэй.
Вы можаце сачыць на https://twitter.com/igor_chubin за абнаўленнямі. Вы можаце сачыць на https://twitter.com/igor_chubin за абнаўленнямі.
====================================================================================== ======================================================================================
""",
'bg': u"""
Съжаляваме, количеството заявки към услугата за предсказване на време е почти изчерпано.
Ето доклад за града по подразбиране (просто да видите как изглежда).
Ще осогурим допълнителни заявки максимално бързо.
Може да последвате https://twitter.com/igor_chubin за обновления.
""", """,
'bs': u""" 'bs': u"""
Žao mi je, mi ponestaje upita i vremenska prognoza u ovom trenutku. Žao mi je, mi ponestaje upita i vremenska prognoza u ovom trenutku.
@ -395,6 +417,13 @@ Voici un bulletin météo de l'emplacement par défaut (pour vous donner un aper
Nous serons très bientôt en mesure de faire de nouvelles requêtes. Nous serons très bientôt en mesure de faire de nouvelles requêtes.
Vous pouvez suivre https://twitter.com/igor_chubin pour rester informé. Vous pouvez suivre https://twitter.com/igor_chubin pour rester informé.
====================================================================================== ======================================================================================
""",
'hu': u"""
Sajnáljuk, kifogytunk az időjárási szolgáltatásra fordított erőforrásokból.
Itt van az alapértelmezett város időjárási jelentése (hogy lásd, hogyan néz ki).
A lehető leghamarabb új erőforrásokat fogunk kapni.
A frissítésekért tekintsd meg a https://twitter.com/igor_chubin oldalt.
======================================================================================
""", """,
'hy': u""" 'hy': u"""
Կներեք, այս պահին մենք գերազանցել ենք եղանակային տեսության կայանին հարցումների քանակը. Կներեք, այս պահին մենք գերազանցել ենք եղանակային տեսության կայանին հարցումների քանակը.
@ -539,6 +568,7 @@ Bạn có thể theo dõi https://twitter.com/igor_chubin để cập nhật th
'en': u'New feature: multilingual location names \033[92mwttr.in/станция+Восток\033[0m (in UTF-8) and location search \033[92mwttr.in/~Kilimanjaro\033[0m (just add ~ before)', 'en': u'New feature: multilingual location names \033[92mwttr.in/станция+Восток\033[0m (in UTF-8) and location search \033[92mwttr.in/~Kilimanjaro\033[0m (just add ~ before)',
'af': u'Nuwe eienskap: veeltalige name vir liggings \033[92mwttr.in/станция+Восток\033[0m (in UTF-8) en ligging soek \033[92mwttr.in/~Kilimanjaro\033[0m (plaas net ~ vooraan)', 'af': u'Nuwe eienskap: veeltalige name vir liggings \033[92mwttr.in/станция+Восток\033[0m (in UTF-8) en ligging soek \033[92mwttr.in/~Kilimanjaro\033[0m (plaas net ~ vooraan)',
'be': u'Новыя магчымасці: назвы месц на любой мове \033[92mwttr.in/станция+Восток\033[0m (в UTF-8) i пошук месц \033[92mwttr.in/~Kilimanjaro\033[0m (трэба дадаць ~ ў пачатак)', 'be': u'Новыя магчымасці: назвы месц на любой мове \033[92mwttr.in/станция+Восток\033[0m (в UTF-8) i пошук месц \033[92mwttr.in/~Kilimanjaro\033[0m (трэба дадаць ~ ў пачатак)',
'bg': u'Нова функционалност: многоезични имена на места\033[92mwttr.in/станция+Восток\033[0m (в UTF-8) и в търсенето \033[92mwttr.in/~Kilimanjaro\033[0m (добавете ~ преди)',
'bs': u'XXXXXXXXXXXXXXXXXXXX: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX\033[92mwttr.in/станция+Восток\033[0m (XX UTF-8) XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'bs': u'XXXXXXXXXXXXXXXXXXXX: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX\033[92mwttr.in/станция+Восток\033[0m (XX UTF-8) XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
'ca': u'Noves funcionalitats: noms d\'ubicació multilingües \033[92mwttr.in/станция+Восток\033[0m (en UTF-8) i la ubicació de recerca \033[92mwttr.in/~Kilimanjaro\033[0m (només cal afegir ~ abans)', 'ca': u'Noves funcionalitats: noms d\'ubicació multilingües \033[92mwttr.in/станция+Восток\033[0m (en UTF-8) i la ubicació de recerca \033[92mwttr.in/~Kilimanjaro\033[0m (només cal afegir ~ abans)',
'es': u'Nuevas funcionalidades: los nombres de las ubicaciones en vários idiomas \033[92mwttr.in/станция+Восток\033[0m (em UTF-8) y la búsqueda por ubicaciones \033[92mwttr.in/~Kilimanjaro\033[0m (tan solo inserte ~ en frente)', 'es': u'Nuevas funcionalidades: los nombres de las ubicaciones en vários idiomas \033[92mwttr.in/станция+Восток\033[0m (em UTF-8) y la búsqueda por ubicaciones \033[92mwttr.in/~Kilimanjaro\033[0m (tan solo inserte ~ en frente)',
@ -550,6 +580,7 @@ Bạn có thể theo dõi https://twitter.com/igor_chubin để cập nhật th
'fy': u'Nije funksje: twatalige lokaasje nammen \033[92mwttr.in/станция+Восток\033[0m (in UTF-8) en lokaasje sykjen \033[92mwttr.in/~Kilimanjaro\033[0m (set er gewoan in ~ foar)', 'fy': u'Nije funksje: twatalige lokaasje nammen \033[92mwttr.in/станция+Восток\033[0m (in UTF-8) en lokaasje sykjen \033[92mwttr.in/~Kilimanjaro\033[0m (set er gewoan in ~ foar)',
'cy': u'Nodwedd newydd: enwau lleoliadau amlieithog \033[92mwttr.in/станция+Восток\033[0m (yn UTF-8) a chwilio am leoliad \033[92mwttr.in/~Kilimanjaro\033[0m (ychwanegwch ~ yn gyntaf)', 'cy': u'Nodwedd newydd: enwau lleoliadau amlieithog \033[92mwttr.in/станция+Восток\033[0m (yn UTF-8) a chwilio am leoliad \033[92mwttr.in/~Kilimanjaro\033[0m (ychwanegwch ~ yn gyntaf)',
'de': u'Neue Funktion: mehrsprachige Ortsnamen \033[92mwttr.in/станция+Восток\033[0m (in UTF-8) und Ortssuche \033[92mwttr.in/~Kilimanjaro\033[0m (fügen Sie ein ~ vor dem Ort ein)', 'de': u'Neue Funktion: mehrsprachige Ortsnamen \033[92mwttr.in/станция+Восток\033[0m (in UTF-8) und Ortssuche \033[92mwttr.in/~Kilimanjaro\033[0m (fügen Sie ein ~ vor dem Ort ein)',
'hu': u'Új funkcinalitás: többnyelvű helynevek \033[92mwttr.in/станция+Восток\033[0m (UTF-8-ban) és pozíció keresés \033[92mwttr.in/~Kilimanjaro\033[0m (csak adj egy ~ jelet elé)',
'hy': u'Փորձարկեք: տեղամասերի անունները կամայական լեզվով \033[92mwttr.in/Դիլիջան\033[0m (в UTF-8) և տեղանքի որոնում \033[92mwttr.in/~Kilimanjaro\033[0m (հարկավոր է ~ ավելացնել դիմացից)', 'hy': u'Փորձարկեք: տեղամասերի անունները կամայական լեզվով \033[92mwttr.in/Դիլիջան\033[0m (в UTF-8) և տեղանքի որոնում \033[92mwttr.in/~Kilimanjaro\033[0m (հարկավոր է ~ ավելացնել դիմացից)',
'id': u'Fitur baru: nama lokasi dalam multibahasa \033[92mwttr.in/станция+Восток\033[0m (in UTF-8) dan pencarian lokasi \033[92mwttr.in/~Kilimanjaro\033[0m (hanya tambah tanda ~ sebelumnya)', 'id': u'Fitur baru: nama lokasi dalam multibahasa \033[92mwttr.in/станция+Восток\033[0m (in UTF-8) dan pencarian lokasi \033[92mwttr.in/~Kilimanjaro\033[0m (hanya tambah tanda ~ sebelumnya)',
'it': u'Nuove funzionalità: nomi delle località multilingue \033[92mwttr.in/станция+Восток\033[0m (in UTF-8) e ricerca della località \033[92mwttr.in/~Kilimanjaro\033[0m (basta premettere ~)', 'it': u'Nuove funzionalità: nomi delle località multilingue \033[92mwttr.in/станция+Восток\033[0m (in UTF-8) e ricerca della località \033[92mwttr.in/~Kilimanjaro\033[0m (basta premettere ~)',
@ -574,6 +605,7 @@ Bạn có thể theo dõi https://twitter.com/igor_chubin để cập nhật th
'en': u'Follow \033[46m\033[30m@igor_chubin\033[0m for wttr.in updates', 'en': u'Follow \033[46m\033[30m@igor_chubin\033[0m for wttr.in updates',
'af': u'Volg \033[46m\033[30m@igor_chubin\033[0m vir wttr.in opdaterings', 'af': u'Volg \033[46m\033[30m@igor_chubin\033[0m vir wttr.in opdaterings',
'be': u'Сачыце за \033[46m\033[30m@igor_chubin\033[0m за навінамі wttr.in', 'be': u'Сачыце за \033[46m\033[30m@igor_chubin\033[0m за навінамі wttr.in',
'bg': u'Последвай \033[46m\033[30m@igor_chubin\033[0m за обновления свързани с wttr.in',
'bs': u'XXXXXX \033[46m\033[30m@igor_chubin\033[0m XXXXXXXXXXXXXXXXXXX', 'bs': u'XXXXXX \033[46m\033[30m@igor_chubin\033[0m XXXXXXXXXXXXXXXXXXX',
'ca': u'Segueix \033[46m\033[30m@igor_chubin\033[0m per actualitzacions de wttr.in', 'ca': u'Segueix \033[46m\033[30m@igor_chubin\033[0m per actualitzacions de wttr.in',
'es': u'Seguir \033[46m\033[30m@igor_chubin\033[0m para recibir las novedades de wttr.in', 'es': u'Seguir \033[46m\033[30m@igor_chubin\033[0m para recibir las novedades de wttr.in',
@ -581,6 +613,7 @@ Bạn có thể theo dõi https://twitter.com/igor_chubin để cập nhật th
'fa': u'برای دنبال کردن خبرهای wttr.in شناسه \033[46m\033[30m@igor_chubin\033[0m رو فالو کنید.', 'fa': u'برای دنبال کردن خبرهای wttr.in شناسه \033[46m\033[30m@igor_chubin\033[0m رو فالو کنید.',
'fr': u'Suivez \033[46m\033[30m@igor_Chubin\033[0m pour rester informé sur wttr.in', 'fr': u'Suivez \033[46m\033[30m@igor_Chubin\033[0m pour rester informé sur wttr.in',
'de': u'Folgen Sie \033[46m\033[30mhttps://twitter.com/igor_chubin\033[0m für wttr.in Updates', 'de': u'Folgen Sie \033[46m\033[30mhttps://twitter.com/igor_chubin\033[0m für wttr.in Updates',
'hu': u'Kövesd \033[46m\033[30m@igor_chubin\033[0m-t további wttr.in információkért',
'hy': u'Նոր ֆիչռների համար հետևեք՝ \033[46m\033[30m@igor_chubin\033[0m', 'hy': u'Նոր ֆիչռների համար հետևեք՝ \033[46m\033[30m@igor_chubin\033[0m',
'id': u'Ikuti \033[46m\033[30m@igor_chubin\033[0m untuk informasi wttr.in terbaru', 'id': u'Ikuti \033[46m\033[30m@igor_chubin\033[0m untuk informasi wttr.in terbaru',
'it': u'Seguite \033[46m\033[30m@igor_chubin\033[0m per aggiornamenti a wttr.in', 'it': u'Seguite \033[46m\033[30m@igor_chubin\033[0m per aggiornamenti a wttr.in',

@ -219,7 +219,7 @@ def format_weather_data(format_line, location, override_location, data, query):
""" """
if 'data' not in data: if 'data' not in data:
return 'Unknow location; please try ~%s' % location return 'Unknown location; please try ~%s' % location
current_condition = data['data']['current_condition'][0] current_condition = data['data']['current_condition'][0]
current_condition['location'] = location current_condition['location'] = location
current_condition['override_location'] = override_location current_condition['override_location'] = override_location

@ -196,21 +196,22 @@ def wttr(location, request):
orig_location = location orig_location = location
location, override_location_name, full_address, country, query_source_location = \ if not png_filename:
location_processing(location, ip_addr) location, override_location_name, full_address, country, query_source_location = \
location_processing(location, ip_addr)
us_ip = query_source_location[1] == 'United States' and 'slack' not in user_agent us_ip = query_source_location[1] == 'United States' and 'slack' not in user_agent
query = parse_query.metric_or_imperial(query, lang, us_ip=us_ip) query = parse_query.metric_or_imperial(query, lang, us_ip=us_ip)
# logging query # logging query
orig_location_utf8 = (orig_location or "").encode('utf-8') orig_location_utf8 = (orig_location or "").encode('utf-8')
location_utf8 = location.encode('utf-8') location_utf8 = location.encode('utf-8')
use_imperial = query.get('use_imperial', False) use_imperial = query.get('use_imperial', False)
log(" ".join(map(str, log(" ".join(map(str,
[ip_addr, user_agent, orig_location_utf8, location_utf8, use_imperial, lang]))) [ip_addr, user_agent, orig_location_utf8, location_utf8, use_imperial, lang])))
if country and location != NOT_FOUND_LOCATION: if country and location != NOT_FOUND_LOCATION:
location = "%s,%s" % (location, country) location = "%s,%s" % (location, country)
# We are ready to return the answer # We are ready to return the answer
try: try:
@ -219,7 +220,7 @@ def wttr(location, request):
if png_filename: if png_filename:
options = { options = {
'lang': None, 'lang': lang,
'location': location} 'location': location}
options.update(query) options.update(query)

@ -288,13 +288,10 @@ def make_wttr_in_png(png_name, options=None):
""" """
parsed = parse_wttrin_png_name(png_name) parsed = parse_wttrin_png_name(png_name)
print("------")
print(parsed)
print("------")
# if location is MyLocation it should be overriden # if location is MyLocation it should be overriden
# with autodetected location (from options) # with autodetected location (from options)
if parsed.get('location', 'MyLocation') == 'MyLocation': if parsed.get('location', 'MyLocation') == 'MyLocation' or not parsed.get('location', ''):
del parsed['location'] del parsed['location']
if options is not None: if options is not None:

@ -2,6 +2,6 @@ wttr()
{ {
# change Paris to your default location # change Paris to your default location
local request="wttr.in/${1-Paris}" local request="wttr.in/${1-Paris}"
[ "$COLUMNS" -lt 125 ] && request+='?n' [ "$(tput cols)" -lt 125 ] && request+='?n'
curl -H "Accept-Language: ${LANG%_*}" --compressed "$request" curl -H "Accept-Language: ${LANG%_*}" --compressed "$request"
} }

@ -9,6 +9,7 @@ Translated/improved/corrected by:
* Azerbaijani: Dmytro Nikitiuk, Elsevar Abbasov * Azerbaijani: Dmytro Nikitiuk, Elsevar Abbasov
* Belarusian: Igor Chubin, Anton Zhavoronkov @edogby (on github) * Belarusian: Igor Chubin, Anton Zhavoronkov @edogby (on github)
* Bosnian: Ismar Kunc @ismarkunc * Bosnian: Ismar Kunc @ismarkunc
* Bulgarian: Vladimir Vitkov @zeridon (on github)
* Brazilian-PT: Tupã Negreiros @TupaNegreiros (on github) * Brazilian-PT: Tupã Negreiros @TupaNegreiros (on github)
* Catalan: Angel Jarabo @legna29A * Catalan: Angel Jarabo @legna29A
* Croatian: Siniša Kusić @ku5ic * Croatian: Siniša Kusić @ku5ic
@ -21,8 +22,9 @@ Translated/improved/corrected by:
* Finnish: @Maxifi * Finnish: @Maxifi
* French: Igor Chubin, @daftaupe * French: Igor Chubin, @daftaupe
* German: Igor Chubin, @MAGICC (https://kthx.at) * German: Igor Chubin, @MAGICC (https://kthx.at)
* Greek: Panayotis Vryonis * Greek: Panayotis Vryonis and @Petewg (on github)
* Hebrew: E.R. * Hebrew: E.R.
* Hungarian: Mark Petruska
* Italian: Diego Maniacco * Italian: Diego Maniacco
* Icelandic: Óli G. @dvergur, Skúli Arnlaugsson @Arnlaugsson * Icelandic: Óli G. @dvergur, Skúli Arnlaugsson @Arnlaugsson
* Indonesian: Andria Arisal @andria009 * Indonesian: Andria Arisal @andria009

@ -0,0 +1,69 @@
Употреба:
$ curl wttr.in # текущо местоположение
$ curl wttr.in/sof # времето на Софийското летище
Поддържани типове местоположения:
/paris # име на град
/~Eiffel+tower # място/забележителност
/Москва # Юникод име на местоположение
/sof # Код на летище (3 букви)
/@stackoverflow.com # име на домейн
/94107 # пощенски код
/-78.46,106.79 # GPS координати
Специални местоположение:
/moon # Фаза на луната (добавете ,+US or ,+France за тези места)
/moon@2016-10-25 # Фаза на луната за дата (@2016-10-25)
Мерни единици:
m # метрични (SI) (по подразбиране навсякъде извън US)
u # USCS (използвани по подразбиране в US)
M # покажи скоростта на вятъра в m/s
Възможности на изгледа:
0 # само текущото време
1 # текущо време + 1 ден
2 # текущо време + 2 дни
A # игнорирай User-Agent и форсирай ANSI формат (за терминал)
F # не показвай реда "Следвай"
n # тясна версия (само ден и нощ)
q # тиха версия (без текст "Прогноза за времето")
Q # свръх тиха версия(без "Прогноза за времето", без име на местоположение)
T # изключи терминалните настройки (без цветове)
PNG възможности:
/paris.png # генериране на PNG
p # Сложи рамка около резултата
t # полупрозрачен фон 150
transparency=... # полупрозрачен фон от 0 до 255 (255 = непрозрачно)
Опциите могат да се комбинират:
/Paris?0pq
/Paris?0pq&lang=bg
/Paris_0pq.png # при генериране на PNG възможностите са отделени с _
/Rome_0pq_lang=bg.png # дългите опции са разделени с подчертавка
Локализация:
$ curl fr.wttr.in/Paris
$ curl wttr.in/paris?lang=bg
$ curl -H "Accept-Language: bg" wttr.in/paris
Поддържани преводи:
FULL_TRANSLATION (Напълно преведени)
PARTIAL_TRANSLATION (В процес на превод)
Специални Адреси (URL):
/:help # тази страница
/:bash.function # препоръчителна bash функция wttr()
/:translation # покажи информация за преводачите

@ -0,0 +1,72 @@
Χρήση:
$ curl wttr.in # καιρός τρέχουσας τοποθεσίας (κατά προσέγγιση, βάσει IP)
$ curl wttr.in/ath # ο καιρός στο Διεθνή Αερολιμένα Αθηνών «Ελ. Βενιζέλος»
Υποστηριζόμενες μορφές τοποθεσιών:
/paris # όνομα πόλης
/~Eiffel+tower # κάποια τοποθεσία
/Москва # Unicode όνομα οποιασδήποτε τοποθεσίας σε οποιαδήποτε γλώσσα
/ath # κωδικός αεροδρομίου (3 γράμματα)
/@stackoverflow.com # (διαδικτυακό) όνομα τομέα (domain)
/94107 # κωδικός περιοχής
/-78.46,106.79 # γεωγραφικές συντεταγμένες (GPS)
Εξειδικευμένες τοποθεσίες:
/moon # Φάση Σελήνης (προσθέστε ,+US ή ,+France για τις πόλεις)
/moon@2016-10-25 # Φάση Σελήνης για την ημερομηνία (@2016-10-25)
/moon@2019-06-18.png?T -omoon.png # Φάση Σελήνης για την ημερομηνία (@2019-06-18), όχι ANSI, εξοδος στο αρχείο `moon.png`
Σύστημα μέτρησης:
m # μετρικό (SI) (προεπιλογή για οπουδήποτε εκτός ΗΠΑ)
u # USCS (προεπιλογή για τις ΗΠΑ)
M # εμφάνιση ταχύτητας ανέμου σε m/s
Επιλογές Προβολής:
0 # καιρός τρέχουσας ημέρας μόνο
1 # καιρός τρέχουσας ημέρας + 1 ημέρα
2 # καιρός τρέχουσας ημέρας + 2 ημέρες
A # παραβλέπει τον User-Agent και επιβάλει μορφή εξόδου ANSI (τερματικό)
F # μη εμφάνιση της γραμμής "Follow"
n # συνοπτική εκδοχή (ημέρα και νύχτα μόνο)
q # σιωπηλή εκδοχή (όχι κείμενο "Weather report")
Q # υπερσιωπηλή εκδοχή (όχι κείμενο "Weather report", όχι όνομα πόλης)
T # απενεργοποίηση ακολουθιών τερματικού (όχι χρώματα)
Επιλογές PNG:
/paris.png # δημιουργία PNG αρχείου
p # προσθήκη πλαισίου γύρω από τα περιέχομενα εξόδου
t # διαφάνεια 150
transparency=nnn # διαφάνεια nnn (από 0 έως 255 - 255 = αδιαφανές)
Οι επιλογές μπορούν να συνδυαστούν:
/Paris?0pq
/Paris?0pq&lang=fr
/Paris?_0pq.png # η έξοδος σε PNG αρχείο ορίζεται μετά από το _
/Rome?_0pq_lang=it.png # μακροσκελείς επιλογές διαχωριζόμενες με κάτω παύλα (underscore)
/Athens?"1pTng&lang=el" # συνδυασμένες επιλογές μπορούν να περικλείονται σε εισαγωγικά!
Τοπικοποίηση:
$ curl fr.wttr.in/Paris
$ curl wttr.in/paris?lang=fr
$ curl -H "Accept-Language: fr" wttr.in/paris
Υποστηριζόμενες γλώσσες:
FULL_TRANSLATION (πλήρως υποστηριζόμενες)
PARTIAL_TRANSLATION (εργασία σε εξέλιξη)
Ειδικά URLs:
/:help # εμφάνιση της παρούσας βοήθειας
/:bash.function # εμφάνιση συνιστώμενων bash λειτουργιών wttr()
/:translation # εμφάνιση πληροφοριών για τους μεταφραστές

@ -0,0 +1,47 @@
113: Καθαρός : Clear
113: Λιακάδα : Sunny
116: Αραιή συννεφιά : Partly cloudy
119: Συννεφιά : Cloudy
122: Πυκνή νέφωση : Overcast
143: Αραιή ομίχλη : Mist
176: Πιθανή βροχή τοπικά : Patchy rain possible
179: Πιθανή χιονόπτωση τοπικά : Patchy snow possible
182: Πιθανή χαλαζόπτωση τοπικά : Patchy sleet possible
185: Πιθανό παγωμ. ψιλόβροχο τοπικά : Patchy freezing drizzle possible
200: Πιθανή πτώση κεραυνών : Thundery outbreaks possible
227: Ριπές χιονιού : Blowing snow
230: Χιονοθύελλα : Blizzard
248: Ομίχλη : Fog
260: Παγωμένη ομίχλη : Freezing fog
263: Ασθενής ψιχάλα τοπικά : Patchy light drizzle
266: Ασθενής ψιχάλα : Light drizzle
281: Παγωμένο ψιλόβροχο : Freezing drizzle
284: Πυκνό παγωμένο ψιλόβροχο : Heavy freezing drizzle
293: Ασθενής όμβρος τοπικά : Patchy light rain
296: Ασθενής βροχόπτωση : Light rain
299: Μέτρια βροχή παροδικά : Moderate rain at times
302: Μέτρια βροχόπτωση : Moderate rain
305: Έντονη βροχή παροδικά : Heavy rain at times
308: Έντονη βροχόπτωση : Heavy rain
311: Αραιό χιονόνερο : Light freezing rain
314: Μέτριο ή έντονο χιονόνερο : Moderate or heavy freezing rain
317: Ασθενής χαλαζόπτωση : Light sleet
320: Μέτρια ή έντονη χαλαζόπτωση : Moderate or heavy sleet
323: Αραιή χιονόπτωση κατά τόπους : Patchy light snow
326: Αραιή χιονόπτωση : Light snow
329: Μέτρια χιονόπτωση τοπικά : Patchy moderate snow
332: Μέτρια χιονόπτωση : Moderate snow
335: Πυκνή χιονόπτωση τοπικά : Patchy heavy snow
338: Πυκνή χιονόπτωση : Heavy snow
350: Χιονόνερο : Ice pellets
353: Ασθενής βροχή παροδικά : Light rain shower
356: Μέτρια ή έντονη βροχή παροδικά : Moderate or heavy rain shower
359: Καταρρακτώδης βροχή παροδικά : Torrential rain shower
362: Ασθενής χαλαζόπτωση παροδικά : Light sleet showers
365: Μέτρια/έντονη χαλαζόπτωση παροδικά : Moderate or heavy sleet showers
368: Αραιή χιονόπτωση παροδικά : Light snow showers
371: Μέτρια ή πυκνή χιονόπτωση παροδικά : Moderate or heavy snow showers
386: Ασθενής βροχή με κεραυνούς τοπικά : Patchy light rain with thunder
389: Μέτρια ή δυνατή βροχή με κεραυνούς : Moderate or heavy rain with thunder
392: Ασθενής χιονόπτωση-κεραυνοί τοπικά : Patchy light snow with thunder
395: Μέτρια ή πυκνή χιονόπτωση-κεραυνοί : Moderate or heavy snow with thunder

@ -0,0 +1,69 @@
Használat:
$ curl wttr.in # jelenlegi tartózkodási hely
$ curl wttr.in/muc # időjárás a müncheni repülőtéren
Támogatott pozíciómeghatározások:
/paris # város
/~Eiffel+tower # bármilyen hely
/Москва # Unicode név bármilyen nyelven
/muc # repülőtér kód (3 betű)
/@stackoverflow.com # domain név
/94107 # körzetszám
/-78.46,106.79 # GPS koordináták
Speciális helyek:
/moon # holdfázis (a végére tehető ,+US vagy ,+France például)
/moon@2016-10-25 # holdfázis az adott dátumhoz (@2016-10-25)
Mértékegységek:
m # metrikus (SI) (használatban mindenhol az USA kivételével)
u # USA hagyományos (alapértelmezett az USA-ban)
M # szélsebesség m/s-ban
Megjelenítési beállítások:
0 # csak az aktuális időjárás
1 # aktuális időjárás + 1 nap
2 # aktuális időjárás + 2 nap
A # User-Agent figyelmen kívül hagyása, ANSI output kikényszerítése (terminálokban)
F # ne jeneítse meg a "Kövesd" sort
n # keskeny változat (csak nappal és éjszaka)
q # csendes verzió ("Időjárás előrejelzés" szöveg nélkül)
Q # szupercsendes verzió ("Időjárás előrejelzés" szöveg és hely nélkül)
T # terminál szekvenciák kikapcsolása (színek nélküli megjelenés)
PNG beállítások:
/paris.png # PNG kép készítése
p # keret a kép köré
t # 150-es "átlátszóság"
transparency=... # "átlátszóság" 0 és 255 között (255 = egyáltalán nem átlátszó)
A beállítások kombinálhatók:
/Paris?0pq
/Paris?0pq&lang=fr
/Paris_0pq.png # PNG módban az opciók egy aláhúzásjel után megadhatók
/Rome_0pq_lang=it.png # a hosszú opcióneveket aláhúzásjelekkel kell elválasztani
Megjelenítés különböző nyelveken:
$ curl fr.wttr.in/Paris
$ curl wttr.in/paris?lang=fr
$ curl -H "Accept-Language: fr" wttr.in/paris
Támogatott nyelvek:
FULL_TRANSLATION (teljesen támogatott)
PARTIAL_TRANSLATION (folyamatban...)
Speciális URL-ek:
/:help # segítség (ez az oldal)
/:bash.function # ajánlott bash függvény
/:translation # információ a fordítókról

@ -0,0 +1,47 @@
113: Tiszta : Clear
113: Napos : Sunny
116: Részben felhős : Partly cloudy
119: Felhős : Cloudy
122: Borult : Overcast
143: Köd : Mist
176: Szórványos zápor előfordulhat : Patchy rain possible
179: Szórványos havazás előfordulhat : Patchy snow possible
182: Szórványos havas eső előfordulhat : Patchy sleet possible
185: Szórványos ónos eső előfordulhat : Patchy freezing drizzle possible
200: Viharos széllökések előfordulhatnak : Thundery outbreaks possible
227: Hófúvás : Blowing snow
230: Hóvihar : Blizzard
248: Köd : Fog
260: Jeges köd : Freezing fog
263: Szórványosan enyhe önos eső : Patchy light drizzle
266: Gyenge önös eső : Light drizzle
281: Ónos eső : Freezing drizzle
284: Erős ónos eső : Heavy freezing drizzle
293: Szórványosan gyenge eső : Patchy light rain
296: Gyenge eső : Light rain
299: Időnként eső : Moderate rain at times
302: Eső : Moderate rain
305: Időnként intenzív eső : Heavy rain at times
308: Intenzív eső : Heavy rain
311: Enyhe jéges eső : Light freezing rain
314: Jéges eső : Moderate or heavy freezing rain
317: Enyhe havas eső : Light sleet
320: Havas eső : Moderate or heavy sleet
323: Szórványos hószállingózás : Patchy light snow
326: Hószállingózás : Light snow
329: Szórványos havazás : Patchy moderate snow
332: Havazás : Moderate snow
335: Szórványosan intenzív havazás : Patchy heavy snow
338: Intenzív havazás : Heavy snow
350: Jégeső : Ice pellets
353: Enyhe zápor : Light rain shower
356: Zápor : Moderate or heavy rain shower
359: Zuhogó eső : Torrential rain shower
362: Enyhe havas eső : Light sleet showers
365: Havas eső : Moderate or heavy sleet showers
368: Hószállingózás : Light snow showers
371: Havazás : Moderate or heavy snow showers
386: Szórványos zivatar : Patchy light rain with thunder
389: Zivatar : Moderate or heavy rain with thunder
392: Szórványos hózivatar : Patchy light snow with thunder
395: Hózivatar : Moderate or heavy snow with thunder
Loading…
Cancel
Save