# DOCOMENTATION: https://prim.iledefrance-mobilites.fr/en/apis/idfm-navitia-general-v2
import v
from v import *

def pa_lookup(operator, station, country="fr"):
    pass;#print(station)
    token = "Pvy9aaB4S6kDwkuU0aInJjae0UwWUu1T"
    header = {"accept" : "application/json",
            "apiKey" : token}
    url = "https://prim.iledefrance-mobilites.fr/marketplace/v2/navitia/places?q="
    #url = "https://prim.iledefrance-mobilites.fr/marketplace/v2/navitia"
    data = requests.get(url + station, timeout=4, verify=False, headers=header).text
    data = json.loads(data)
    data = data["places"]
    pass;#print(data)
    search_list = {}
    for _s in data:
        id = _s["id"]
        name = _s["name"].split(" (")[0]
        id = id.split(":")[-1:]
        id = id[0]
        if "," in id: continue
        if ";" in id: continue
        if "." in id: continue
        search_list[name] = id
    return search_list

def pa_load_departures(station, country="fr", operator="pa"):
    station = station.lstrip().rstrip()
    token = "Pvy9aaB4S6kDwkuU0aInJjae0UwWUu1T"
    header = {"accept" : "application/json",
            "apiKey" : token}
    #url = "https://prim.iledefrance-mobilites.fr/marketplace/stop-monitoring?MonitoringRef=" + station
    pass;#print("STATION:", station)
    #url = "https://prim.iledefrance-mobilites.fr/marketplace/stop-monitoring?MonitoringRef=STIF:StopArea:"+station+":"
    url = "https://prim.iledefrance-mobilites.fr/marketplace/stop-monitoring?MonitoringRef=STIF%3AStopArea%3ASP%3A"+station+"%3A"
    

    data = requests.get(url, timeout=4, verify=False, headers=header).text
    
    
    
    data = json.loads(data)
    #pass;#print(data)
    results = []
    data = data["Siri"]["ServiceDelivery"]["StopMonitoringDelivery"][0]["MonitoredStopVisit"]
    stop_line_check = False
    for departures_dict in data:
            departures = departures_dict["MonitoredVehicleJourney"]
            stop_line = departures["LineRef"]["value"].split("::")[1] #"C01105"
            try: data2 = v.operators["fr"]["pa"][stop_line]
            except: 
                url2 = "https://prim.iledefrance-mobilites.fr/marketplace/requete-ligne?LineRef=STIF%3ALine%3A%3A"+stop_line
                stop_lines = requests.get(url2, timeout=4, verify=False, headers=header).text
                data2 = json.loads(stop_lines)
                v.operators["fr"]["pa"][stop_line] = data2

            try: data2 = data2["Siri"]["ServiceDelivery"]["EstimatedTimetableDelivery"][0]
            except Exception as e:
                 pass;#print(e)
            try: __type = str(data2["EstimatedJourneyVersionFrame"][0]["EstimatedVehicleJourney"][0]["VehicleMode"][0]).upper()
            except:
                try: 
                     if "CANCELLED" in str(data2["EstimatedJourneyVersionFrame"][0]["EstimatedVehicleJourney"][0]): continue
                except: pass
                __type = "UNKNOWN"
            try: line = data2["EstimatedJourneyVersionFrame"][0]["EstimatedVehicleJourney"][0]["PublishedLineName"][0]["value"]
            except Exception as e:
                 pass;#print(e)
                 continue
            #pass;#print(departures)
            #name = departures["DirectionRef"]["value"]
            try: name = departures["DestinationShortName"][0]["value"]
            except:
                 try: name = departures["DestinationName"][0]["value"]
                 except Exception as e: 
                      pass;#print(e)
                      continue
            try: when = departures["MonitoredCall"]["ExpectedDepartureTime"]
            except: continue
                #when = "2026-12-12T00:00:00"
            
            if "RAIL" in __type: __type = "TRAIN"
            
            pass;#print(__type, line, name, when)
            new_record = {"destination" : name,
                        "direction_code" : "0",
                        "expected" : when[:19],
                        "line" : {"id": line.replace("-","."), "transport_mode":__type.upper()},
                        "deviations": []}
            results.append(new_record)

    if len(results):
        v.operators[country][operator][station]["departures"] = results
        return results
        
        pass;#print("Success")

#pass;#print(pa_lookup("pa", "Louvre"))
#pa_load_departures("stop_area:IDFM:71297:")
#pa_load_departures("STIF:StopArea:SP:474151:")

"""token = "Pvy9aaB4S6kDwkuU0aInJjae0UwWUu1T"
header = {"accept" : "application/json",
        "apiKey" : token}
data = requests.get("https://prim.iledefrance-mobilites.fr/marketplace/estimated-timetable", headers=header, verify=False).text
data = json.loads(data)
with open("fr.txt","w") as f:
    f.write(json.dumps(data))"""
