
    li                     4    	 d dl Z d dl T n#  Y nxY wd Zd ZdS )    N)*c                    dddd}d|z   dz   }d}d}t                               ||t                              d	|i          
          j        }t                              |          }t          |           i }d}	 |d         d         D ]M}	|dz  }|	d         dz   t          |          z   dz   }
|	d         }|t          j	        |         |          |
<   |||
<   N|S # t          $ r}t          d|           Y d }~d S d }~ww xY 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 ()gtfsIdzError: )requestspostjsondumpstextloadsprintstrvsites	Exception)operatorstationcountryhdrr
   urlr   search_listxir   siteides                Vc:\Users\computer\Desktop\notes\tskylt4.0\server\20260128 - new GTFS loader\finland.py
hsl_lookupr)      sF   %%$F
H 
HC "G+ / E LC
AC==c

GU;K0L0L=MMRD ::dD	$KKKK	A
F|G$ # #!	Qy4#a&&(3.8+1"4("D   is   =AC 
D %C;;D c                   	
 dd l 	dd l}dd ld|z   dz   }dddd
d
fd	} ||          }g }	fd
} |||          }d|v r-|                    dd          } ||          } |||          }|                    d            t          d|           t          |          r#|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                    t                                                   d| i                    j        }                    |          }t          |t          |                     |d         d         d         }|S )Nr
   r   r   stopstoptimesWithoutPatterns)r   r   r   r   r   r   len)r
   r   r$   r!   r   r"   s      r(   get_dataz%hsl_load_departures.<locals>.get_dataH   sn    ]]3$**gu=M2N2N]OOTdZZdD#d))
v,v
9
:ah    c           	         fd}| D ]}|d         }|d         d         d         }t          |d                   } ||          }|}|d         d         d                                                             dd	          }	t          |	           |d
||                    dd          |	                                                    dd          dg d}
|                    |
           |S )Nc                     j                             j                                                            dd                    }|                    |           z   }|                    d          S )Nr   )secondsz%Y-%m-%dT%H:%M:%S)datetimecombinedatetodaytime	timedeltastrftime)r3   midnightresultr4   s      r(   convert_seconds_to_datetimezNhsl_load_departures.<locals>.parse_result.<locals>.convert_seconds_to_datetimeW   si    $,,X]-@-@-B-BHMMRSUVDWDWXXH..w.??? 2333r0   headsigntriproute	shortNamerealtimeDeparturemodesubwaymetro0-.RAILTRAIN)idtransport_mode)destinationdirection_codeexpectedline
deviations)intlowerreplacer   upperappend)r$   resultsr=   
departuresr   rP   time_in_secondsformatted_time_time__type
new_recordr4   s              r(   parse_resultz)hsl_load_departures.<locals>.parse_resultV   s   4 4 4 4 4  ' '*j)Df%g.{;D!*-@"ABBO88IIN"E'08>>@@HHRYZZF&MMM*.+.%*(,S(=(=PVP\P\P^P^PfPfgmnuPvPv!w!w&(	* *J
 NN:&&&&nr0   _2_1c                     | d         S )NrO    )ds    r(   <lambda>z%hsl_load_departures.<locals>.<lambda>v   s
    q} r0   )keyzRESULTS:rX   )	r4   urllib.requestr   rT   sortr   r.   r   	operators)r   r   r    urllibr
   r/   r$   rW   r^   r4   r!   r   r"   s            @@@@r(   hsl_load_departuresrj   '   s`   OOOE* &%$F
H 
HC BC       	A G    6 l1g&&Gw}}T4((u8E??qa))wLL,,L---	*g
7|| @GGX&w/= r0   )r   r)   rj   rb   r0   r(   <module>rk      sW   
(((////   BS S S S Ss    