
    i                     f   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dZd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#d,d-d.d/d0d1d2d3d4d5d6d7Zeee
j(                  f   ed8<   d9e
j,                  d:eeej0                  f   fd;Zd< Zy)=zOpen Meteo (weather)    N)	urlencode)datetime)EngineResultsWeatherAnswer)weatherzhttps://open-meteo.comzhttps://open-meteo.com/en/docsTFJSON)websitewikidata_idofficial_api_documentationuse_official_apirequire_api_keyresultsr   z$https://geocoding-api.open-meteo.comzhttps://api.open-meteo.com)	temperature_2mapparent_temperaturerelative_humidity_2mr   cloud_coverpressure_mslwind_speed_10mwind_direction_10mweather_codec           
         	 t         j                  j                  |       }|j                  |j
                  ddddj                  t              ddj                  t              d}t         dt        |       |d<   y # t        $ r Y y w xY w)	Nunixtimeautojson,   )latitude	longitude
timeformattimezoneformatcurrentforecast_dayshourlyz/v1/forecast?url)
r   GeoLocationby_query
ValueErrorr   r   joindata_of_interestapi_urlr   )queryparamslocationargss       )/root/searxng/searx/engines/open_meteo.pyrequestr1   *   s    &&//6
 %%'' 88,-((+,	D i}Yt_,=>F5M  s   A> >	B
	B
z	clear sky   fair   zpartly cloudyr   cloudy-   fog0   3   z
light rain5   7   8   zlight sleet showers9   zlight sleet=   ?   rainA   z
heavy rainB   C   G   sleetzheavy sleetsnowzlight rain showerszrain showerszheavy rain showerszsnow showerszheavy snow showerszrain and thunderzlight snow and thunderzheavy snow and thunder)I   K   M   P   Q   R   U   V   _   `   c   WMO_TO_CONDITIONr.   datac                 p   t        j                  | t        j                  |d   d      t        |d      t        j                  |d   d      t        j
                  |d         t        j                  |d   d      t        j                  |d	   d
      t        j                  |d         |d   	      S )Nr   u   °C)valunitr   r   r   r   zkm/hr   hPar   r   )	r.   temperature	condition
feels_like	wind_from
wind_speedpressurehumidityr   )	r   Itemr   TemperaturerR   Compass	WindSpeedPressureRelativeHumidity)r.   rS   s     r0   _weather_datare   o   s    ''D1A,BO"4#78&&40F+GeT//$';"<=$$.>)?fM!!d>&:G))$/E*FG'
 
    c                    t         j                  j                  | j                  d         }t	               }| j                         }t        t        ||d         d      }t        |d   d         D ]  \  }}||d   d   k  ri }t        D ]  }|d   |   |   ||<    t        ||      }	t        j                  t        j                  |            |	_        |j                  j                  |	        |j                  |       |S )Nr,   r"   z
Open-meteo)r"   servicer$   time)r   r&   r'   search_paramsr   r   r   re   	enumerater*   DateTimer   fromtimestamp	forecastsappendadd)
respr.   res	json_dataweather_answerindexri   hourly_datakeyforecast_datas
             r0   responsery   ~   s
   ""++D,>,>w,GHH
/C		I"h	)(<=N !8!4V!<= 7t)I&v..# 	?C(237>K	? &h<!(!1!1(2H2H2N!O  ''67 GGNJrf   )__doc__typingturllib.parser   r   searx.result_typesr   r   searxr   about
categoriesgeo_urlr+   r*   r1   rR   dictintWeatherConditionType__annotations__r&   strAnyre   ry    rf   r0   <module>r      s     "  ;  ("B	 [

0
& ?0*={*= v	*=
 *= x*= *= *= *= *= *= *=  !*=$ %*=& '*=( )*=, -*=. /*=2 3*=4 	  S*= $sG8889 *ZG// tCJ7G rf   