
    iI                        U d Z ddlZddlmZ ddlmZ ddlmZmZ ddl	m
Z
 ddd	d
dddZdgZdZi dddddddddddddddddd d!d"d#d$d%d&d'd(d)d(d*dd+dd,di d-dd.dd/d0d1d2d3d4d5d6d7d8d9d d:d;d<d d=d>d?dd@ddAdBdCd&dDdBdEd&d dd6d8ddFddBdd>dGdHdIdBdJZeee
j"                  f   edK<   dL ZdMe
j(                  dNeeej*                  f   fdOZdP Zy)Qz"wttr.in (weather forecast service)    N)quote)datetime)EngineResultsWeatherAnswer)weatherzhttps://wttr.in
Q107586666z-https://github.com/chubin/wttr.in#json-outputTFJSON)websitewikidata_idofficial_api_documentationuse_official_apirequire_api_keyresultsr   z-https://wttr.in/{query}?format=j1&lang={lang}113z	clear sky116zpartly cloudy119cloudy122fair143176zlight rain showers179zlight snow showers182zlight sleet showers185zlight sleet200zrain and thunder227z
light snow230z
heavy snow248fog260263266281284293296z
light rain299zrain showers302rain305zheavy rain showers308z
heavy rain311314sleet317320zheavy sleet323326329zheavy snow showers332335338zsleet showerszrain showers and thunderzheavy rain showers and thunderzsnow showers and thunder)350353356359362365368371374377386389392395WWO_TO_CONDITIONc                 \    t         j                  t        |       |d         |d<   d|d<   |S )Nlanguage)querylangurlFraise_for_httperror)rJ   formatr   )rH   paramss     #/root/searxng/searx/engines/wttr.pyrequestrO   N   s1    JJU5\z8JJKF5M$)F !M    locationdatac                    |j                  d      xs |j                  d      }t        j                  | t        j                  |d      t
        |d      t        j                  |d   d      t        j                  t        |d               t        j                  |d   d	      t        j                  |d
   d      t        j                  |d         |d   	      S )Ntemp_CtempCu   °C)valunitweatherCode
FeelsLikeCwinddirDegreewindspeedKmphzkm/hpressurehPahumidity
cloudcover)	rQ   temperature	condition
feels_like	wind_from
wind_speedr\   r^   cloud_cover)getr   Itemr   TemperaturerE   Compassint	WindSpeedPressureRelativeHumidity)rQ   rR   rU   s      rN   _weather_datarn   U   s     88H%:'):E''E>"4#67&&4+=EJ//#d?&;"<=$$o)>VL!!d:&6UC))$z*:;&
 
rP   c                 P   t               }| j                  dk(  r|S | j                         }t        j                  j                  | j                  d         }t        t        ||d   d         d      }|d   D ]  }t        j                  |d         }d	t        |d
         z  }t        |d
         D ]\  \  }}	t        ||	      }
t        j                  |j                  ||z  dz               |
_	        |j                  j!                  |
       ^  |j#                  |       |S )Ni  rH   current_conditionr   zwttr.in)currentservicer   date   hourly   )hour)r   status_codejsonr   GeoLocationby_querysearch_paramsr   rn   r   fromisoformatlen	enumerateDateTimereplace	forecastsappendadd)respres	json_datageolocweather_answerdayrs   time_slot_lenindexforecastforecast_datas              rN   responser   g   s    
/C3
		I  ))$*<*<W*EFF"fi0C&DQ&GHN
 # ;%%c&k2c#h-00(X7 	;OE8)&(;M%,%5%5dllP]H]`aHal6b%cM"$$++M:	;; GGNJrP   )__doc__typingturllib.parser   r   searx.result_typesr   r   searxr   about
categoriesrJ   rE   dictstrWeatherConditionType__annotations__rO   rz   Anyrn   r    rP   rN   <module>r      sk   (    ;  !"Q	 [
51=	;1=	?1= 
81= 
6	1=
 
61= 
1= 
1= 
 1= 
=1= 
1= 
<1= 
<1= 
51= 
51= 
1=  
!1=" 
 #1=$ 
%1=& 
'1=( 
<)1=* 
>+1=, 
6-1=. 
/1=0 
<11=2 
=31=4 
751=6 
=71=8 
=91=: 
;1=< 
=1=> 
?1=@ 
<A1=B 
C1=D 
<E1=F   %+%a1= $sG8889 1hG// tCJ7G $rP   