o
    li                     @   s2   z
d dl Z d dl T W n   Y dd Zdd ZdS )    N)*c              
   C   s   dddd}d| d }d}d}t j||td	|id
j}t|}t| i }d}z-|d d D ]#}	|d7 }|	d d t| d }
|	d }|tj	| |  |
< |||
< q2|W S  t
yp } ztd| W Y d }~d S d }~ww )Nno-cacheapplication/json 0ffeaf42df814cc9bb778e35c29272eazCache-ControlzContent-Typezdigitransit-subscription-keyz{stops(name: "z?") {
    gtfsId
    name
    stops {
      gtfsId
      name}}}z?https://api.digitransit.fi/routing/v1/routers/hsl/index/graphql5https://api.digitransit.fi/routing/v2/finland/gtfs/v1queryheadersdatar   r   stops   namez ()ZgtfsIdzError: )requestspostjsondumpstextloadsprintstrvsites	Exception)operatorstationcountryhdrr   urlr   search_listxir   siteide r%   YC:\Users\computer\Desktop\notes\tskylt4.0\server\20260117 - seems ok - no SNCB\finland.py
hsl_lookup   s0   

r'   c           	         s   dd l  dd l}dd ld| d }dddddfd	d
}||}g } fdd}|||}d|v rF|dd}||}|||}|jdd d td| t|rd|tj| |  | d< |S d S )Nr   z{
    
  stop(id: "z") {
   
      stoptimesWithoutPatterns {
      
      scheduledDeparture
      realtimeDeparture
      realtimeArrival
      headsign
                trip {
        route {
          shortName
          mode
        }
      }
    }
  }  
}
r   r   r   r   r   c                    sH   t j d| idj}|}t|t| |d d d }|S )Nr   r	   r   stopZstoptimesWithoutPatterns)r   r   r   r   r   r   len)r   r   r!   )r   r   r   r%   r&   get_dataH   s
   
z%hsl_load_departures.<locals>.get_datac              	      s    fdd}| D ]F}|d }|d d d }t |d }||}|}|d d d  d	d
}	t|	 |d||dd|	 dddg d}
||
 q|S )Nc                    s6    j  j  dd}| j| d }|dS )Nr   )secondsz%Y-%m-%dT%H:%M:%S)datetimecombinedatetodaytime	timedeltastrftime)r+   Zmidnightresultr,   r%   r&   convert_seconds_to_datetimeW   s   
zNhsl_load_departures.<locals>.parse_result.<locals>.convert_seconds_to_datetimeZheadsigntriproute	shortNameZrealtimeDeparturemodeZsubwaymetro0-.ZRAILTRAIN)idtransport_mode)destinationdirection_codeexpectedline
deviations)intlowerreplacer   upperappend)r!   resultsr5   
departuresr   rD   Ztime_in_secondsZformatted_time_time__type
new_recordr4   r%   r&   parse_resultV   s"   z)hsl_load_departures.<locals>.parse_resultZ_2Z_1c                 S   s   | d S )NrC   r%   )dr%   r%   r&   <lambda>v   s    z%hsl_load_departures.<locals>.<lambda>)keyzRESULTS:rL   )	r,   urllib.requestr   rH   sortr   r)   r   	operators)	r   r   r   urllibr   r*   r!   rK   rP   r%   )r,   r   r   r   r&   hsl_load_departures'   s6   


rX   )r   r'   rX   r%   r%   r%   r&   <module>   s    !