mirror of
https://github.com/chubin/wttr.in
synced 2025-01-26 02:34:59 +00:00
Merge branch 'master' into patch-2
This commit is contained in:
commit
7ee34404ba
8 changed files with 87 additions and 92 deletions
|
@ -22,7 +22,7 @@ WORKDIR /app
|
|||
|
||||
COPY ./requirements.txt /app
|
||||
|
||||
ENV LLVM_CONFIG=/usr/bin/llvm10-config
|
||||
ENV LLVM_CONFIG=/usr/bin/llvm11-config
|
||||
|
||||
RUN apk add --no-cache --virtual .build \
|
||||
autoconf \
|
||||
|
|
|
@ -59,11 +59,8 @@ You can see it running here: [wttr.in](https://wttr.in).
|
|||
` ├── 9.6 - `Configure wttr.in<br>
|
||||
` └── 9.7 - `Configure the HTTP-frontend service<br>
|
||||
<br>
|
||||
======================================================================
|
||||
|
||||
|
||||
======================================================================
|
||||
|
||||
[Documentation](https://wttr.in/:help) | [Usage](https://github.com/chubin/wttr.in#usage) | [One-line output](https://github.com/chubin/wttr.in#one-line-output) | [Data-rich output format](https://github.com/chubin/wttr.in#data-rich-output-format-v2) | [Map view](https://github.com/chubin/wttr.in#map-view-v3) | [Output formats](https://github.com/chubin/wttr.in#different-output-formats) | [Moon phases](https://github.com/chubin/wttr.in#moon-phases) | [Internationalization](https://github.com/chubin/wttr.in#internationalization-and-localization) | [Windows issues](https://github.com/chubin/wttr.in#windows-users) | [Installation](https://github.com/chubin/wttr.in#installation)
|
||||
|
||||
## Usage
|
||||
|
||||
|
@ -239,6 +236,7 @@ To specify your own custom output format, use the special `%`-notation:
|
|||
M Moon day,
|
||||
p Precipitation (mm/3 hours),
|
||||
P Pressure (hPa),
|
||||
u UV index (1-12),
|
||||
|
||||
D Dawn*,
|
||||
S Sunrise*,
|
||||
|
|
|
@ -84,6 +84,7 @@ def parse_query(args):
|
|||
if 'm' in q:
|
||||
result['use_metric'] = True
|
||||
if 'M' in q:
|
||||
result['use_metric'] = True
|
||||
result['use_ms_for_wind'] = True
|
||||
if 'u' in q:
|
||||
result['use_imperial'] = True
|
||||
|
|
|
@ -167,6 +167,14 @@ def render_pressure(data, query):
|
|||
answer += 'hPa'
|
||||
return answer
|
||||
|
||||
def render_uv_index(data, query):
|
||||
"""
|
||||
UV Index (u)
|
||||
"""
|
||||
|
||||
answer = data.get('uvIndex', '')
|
||||
return answer
|
||||
|
||||
def render_wind(data, query):
|
||||
"""
|
||||
wind (w)
|
||||
|
@ -284,6 +292,7 @@ FORMAT_SYMBOL = {
|
|||
'p': render_precipitation,
|
||||
'o': render_precipitation_chance,
|
||||
'P': render_pressure,
|
||||
"u": render_uv_index,
|
||||
}
|
||||
|
||||
FORMAT_SYMBOL_ASTRO = {
|
||||
|
|
|
@ -31,6 +31,7 @@ def get_wetter(parsed_query):
|
|||
returncode = 0
|
||||
if not location_not_found:
|
||||
stdout, stderr, returncode = _wego_wrapper(location, parsed_query)
|
||||
first_line, stdout = _wego_postprocessing(location, parsed_query, stdout)
|
||||
|
||||
if location_not_found or \
|
||||
(returncode != 0 \
|
||||
|
@ -57,13 +58,8 @@ def get_wetter(parsed_query):
|
|||
not_found_footer = "\n".join("\033[48;5;91m " + x + " \033[0m"
|
||||
for x in not_found_footer.splitlines() if x) + "\n"
|
||||
|
||||
stdout = not_found_header + "\n----\n" + stdout + not_found_footer
|
||||
|
||||
if "\n" in stdout:
|
||||
first_line, stdout = _wego_postprocessing(location, parsed_query, stdout)
|
||||
else:
|
||||
first_line = ""
|
||||
|
||||
stdout = not_found_header + "\n----\n" + stdout + not_found_footer
|
||||
|
||||
if html:
|
||||
return _htmlize(stdout, first_line, parsed_query)
|
||||
|
|
|
@ -5,52 +5,53 @@
|
|||
|
||||
أنواع الأماكن المدعومة:
|
||||
|
||||
/paris # أسم المدينة
|
||||
/paris # اسم المدينة
|
||||
/~Eiffel+tower # أي مكان
|
||||
/Москва # أسم يونيكود ﻷي مكان بأي لغة
|
||||
/muc # airport code (3 letters)
|
||||
/@stackoverflow.com # أسم النطاق
|
||||
/Москва # اسم يونيكود ﻷي مكان بأي لغة
|
||||
/muc # الاسم النمطي للمطار (3 احرف)
|
||||
/@stackoverflow.com # اسم النطاق
|
||||
/94107 # رمز المنطقة
|
||||
/-78.46,106.79 # GPS إحداثيات الـ
|
||||
|
||||
الأماكن الخاصة:
|
||||
|
||||
/moon # مرحلة القمر (أضف ,+US أو ,+France لهؤلاء المدن)
|
||||
/moon@2016-10-25 # مرحلة القمر بتاريخ (@2016-10-25)
|
||||
/moon # مرحلة القمر (أضف ,+US أو ,+France لمدينة معينة)
|
||||
/moon@2016-10-25 # مرحلة القمر بتاريخ (2016-10-25)
|
||||
|
||||
الوحدات:
|
||||
|
||||
m # المتريّ (SI) (يستخدم في العادة في كل الأماكن ما عدا الولايات المتحدة)
|
||||
m # النظام المتريّ (SI) (يستخدم في العادة في كل الأماكن ما عدا الولايات المتحدة)
|
||||
u # وحدات القياس العرفية الأمريكية (يستخدم في العادة في الولايات المتحدة)
|
||||
M # إظهار سرعة الرياح بوحدة م/ث
|
||||
|
||||
خيارات العرض:
|
||||
|
||||
0 # فقط الطقس الحالي
|
||||
1 # الطقس الحالي + 1 يوم
|
||||
2 # الطقس الحالي + 2 يوم
|
||||
A # تجاهل الوكيل المستخدم وقم بإجبار تنسيق المعهد القومى الأمريكى للتنميط (الطرفية)
|
||||
0 # الطقس الحالي فقط
|
||||
1 # الطقس الحالي وطقس اليوم
|
||||
2 # الطقس الحالي وطقس اليوم ويوم غد
|
||||
A # تجاهل الوكيل المستخدم وقم بتطبيق نمط ANSI (الطرفية)
|
||||
F # "لا تظهر سطر "المتابعة
|
||||
n # النسخة الضيقة (النهار والليل فقط)
|
||||
n # النسخة الخفيفة جدا (النهار والليل فقط)
|
||||
q # النسخة الصامتة (من غير عبارة "تقرير جوي")
|
||||
Q # النسخة الصامتة كليا (من غير عبارة "تقرير جوي", من غير أسم المدينة)
|
||||
T # إطفاء تسلسل الطرفية (من غير ألوان)
|
||||
Q # النسخة الصامتة كليا (بدون عبارة "تقرير جوي" أو اسم المدينة)
|
||||
T # العودة لنمط تسلسل الطرفية (من غير ألوان)
|
||||
|
||||
PNG خيارات:
|
||||
|
||||
/paris.png # png إنشاء صورة بصيغة
|
||||
/paris.png # PNG إنشاء صورة بصيغة
|
||||
p # إضافة إطار حول المخرج
|
||||
t # الشفافية 150
|
||||
transparency=... # الشفافية من 0 إلي 255 (255 = غير شفاف)
|
||||
transparency=... # الشفافية من 0 إلي 255 (255 = غير شفاف)
|
||||
background=... # لون الخلفية بنمط RRGGBB
|
||||
|
||||
يمكن جمع الخيارات:
|
||||
|
||||
/Paris?0pq
|
||||
/Paris?0pq&lang=fr
|
||||
/Paris_0pq.png # خيار الملف يتم تحديده في ما بعد PNG في
|
||||
/Paris_0pq.png # يتم تحديد خيار ملف PNG بعد الشرطة السفلية
|
||||
/Rome_0pq_lang=it.png # الخيارات الطويلة يتم فصلهم عن طريق شرطة سفلية
|
||||
|
||||
حصر المكان:
|
||||
الترجمة:
|
||||
|
||||
$ curl fr.wttr.in/Paris
|
||||
$ curl wttr.in/paris?lang=fr
|
||||
|
@ -63,7 +64,7 @@
|
|||
|
||||
روابط URLs خاصة :
|
||||
|
||||
/:help # إظهار هذه الصفحة
|
||||
/:bash.function # wttr() bash إظهار الميزة الخاصةبـ
|
||||
/:translation # إظهار المعلومات حول المترجمين
|
||||
/:help # عرض هذه الصفحة
|
||||
/:bash.function # wttr() bash عرض الميزة الخاصةبـ
|
||||
/:translation # عرض المعلومات حول المترجمين
|
||||
|
||||
|
|
|
@ -1,47 +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
|
||||
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
|
||||
|
|
|
@ -865,17 +865,9 @@ func formatCond(cur []string, c cond, current bool) (ret []string) {
|
|||
}
|
||||
}
|
||||
if config.RightToLeft {
|
||||
ret = append(ret, fmt.Sprintf("%v %v %v", cur[0], desc, icon[0]))
|
||||
ret = append(ret, fmt.Sprintf("%v %v %v", cur[1], formatTemp(c), icon[1]))
|
||||
ret = append(ret, fmt.Sprintf("%v %v %v", cur[2], formatWind(c), icon[2]))
|
||||
ret = append(ret, fmt.Sprintf("%v %v %v", cur[3], formatVisibility(c), icon[3]))
|
||||
ret = append(ret, fmt.Sprintf("%v %v %v", cur[4], formatRain(c), icon[4]))
|
||||
ret = append(ret, fmt.Sprintf("%v %v %v", cur[0], desc, icon[0]), fmt.Sprintf("%v %v %v", cur[1], formatTemp(c), icon[1]), fmt.Sprintf("%v %v %v", cur[2], formatWind(c), icon[2]), fmt.Sprintf("%v %v %v", cur[3], formatVisibility(c), icon[3]), fmt.Sprintf("%v %v %v", cur[4], formatRain(c), icon[4]))
|
||||
} else {
|
||||
ret = append(ret, fmt.Sprintf("%v %v %v", cur[0], icon[0], desc))
|
||||
ret = append(ret, fmt.Sprintf("%v %v %v", cur[1], icon[1], formatTemp(c)))
|
||||
ret = append(ret, fmt.Sprintf("%v %v %v", cur[2], icon[2], formatWind(c)))
|
||||
ret = append(ret, fmt.Sprintf("%v %v %v", cur[3], icon[3], formatVisibility(c)))
|
||||
ret = append(ret, fmt.Sprintf("%v %v %v", cur[4], icon[4], formatRain(c)))
|
||||
ret = append(ret, fmt.Sprintf("%v %v %v", cur[0], icon[0], desc), fmt.Sprintf("%v %v %v", cur[1], icon[1], formatTemp(c)), fmt.Sprintf("%v %v %v", cur[2], icon[2], formatWind(c)), fmt.Sprintf("%v %v %v", cur[3], icon[3], formatVisibility(c)), fmt.Sprintf("%v %v %v", cur[4], icon[4], formatRain(c)))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
@ -1095,9 +1087,7 @@ func getDataFromAPI() (ret resp) {
|
|||
if len(config.City) > 0 {
|
||||
params = append(params, "q="+url.QueryEscape(config.City))
|
||||
}
|
||||
params = append(params, "format=json")
|
||||
params = append(params, "num_of_days="+strconv.Itoa(config.Numdays))
|
||||
params = append(params, "tp=3")
|
||||
params = append(params, "format=json", "num_of_days="+strconv.Itoa(config.Numdays), "tp=3")
|
||||
if config.Lang != "" {
|
||||
params = append(params, "lang="+config.Lang)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue