URLS = {
        "be": {
        "sncb": {
            "gtfs_url": "https://sncb-opendata.hafas.de/gtfs/static/c21ac6758dd25af84cca5b707f3cb3de",
            "trip_updates": "https://sncb-opendata.hafas.de/gtfs/realtime/c21ac6758dd25af84cca5b707f3cb3de",
            "vehicle_positions": "https://sncb-opendata.hafas.de/gtfs/realtime/c21ac6758dd25af84cca5b707f3cb3de"
        }
    },    
    "cr": {
        "za": {
            "gtfs_url": "https://www.zet.hr/gtfs-scheduled/latest",
            "trip_updates": "https://www.zet.hr/gtfs-rt-protobuf",
            "vehicle_positions": "https://www.zet.hr/gtfs-rt-protobuf"
        }
    },    
    "ie": {
        "rail": {
            "gtfs_url": "https://www.transportforireland.ie/transitData/Data/GTFS_Irish_Rail.zip",
            "trip_updates": "https://api.nationaltransport.ie/gtfsr/v2/gtfsr",
            "vehicle_positions": "https://api.nationaltransport.ie/gtfsr/v2/gtfsr",
            "header":{"Cache-Control":"no-cache", "x-api-key":"312c2a7ce26e49ec9edf5b8ada105e90"}},
        "bus":{"gtfs_url":"https://www.transportforireland.ie/transitData/Data/GTFS_Dublin_Bus.zip",
               "trip_updates": "https://api.nationaltransport.ie/gtfsr/v2/gtfsr",
            "vehicle_positions": "https://api.nationaltransport.ie/gtfsr/v2/gtfsr",
            "header":{"Cache-Control":"no-cache", "x-api-key":"312c2a7ce26e49ec9edf5b8ada105e90"}
        }
    },
    "de": 
        {"vrn": {"gtfs_url": "https://geoportal.vrn.de/services/sharing/rest/content/items/4ec4b1d131eb46a6bb8e216ce9b90eff/data",
                "trip_updates": "https://www.vrn.de/service/entwickler/gtfs-realtime/",
                "vehicle_positions": "https://www.vrn.de/service/entwickler/gtfs-realtime/"},
                
        "vrs": {"gtfs_url": "https://www.vrs.de/fileadmin/05_Zukunftsmobilitaet/Fuer_Unternehmen/GTFS_VRS_mit_SPNV_hID_GlobalID.zip",
                "trip_updates": "https://realtime.gtfs.de/realtime-free.pb",
                "vehicle_positions": "https://realtime.gtfs.de/realtime-free.pb"},
                
                
        "vbn": {"gtfs_url": "https://www.connect-info.net/opendata/gtfs/connect-nds-toplevel/opipvjslhf",
                "trip_updates": "http://gtfsr.vbn.de/gtfsr_connect.bin",
                "vehicle_positions": "http://gtfsr.vbn.de/gtfsr_connect.bin"},
        
        "local": {"gtfs_url": "https://download.gtfs.de/germany/nv_free/latest.zip",
                "trip_updates": "https://realtime.gtfs.de/realtime-free.pb",
                "vehicle_positions": "https://realtime.gtfs.de/realtime-free.pb"},
        
        "mdv": {"gtfs_url": "https://www.mdv.de/media/file/817b7b11",
                "trip_updates": "https://realtime.gtfs.de/realtime-free.pb",
                "vehicle_positions": "https://realtime.gtfs.de/realtime-free.pb"},

        "vbb": {"gtfs_url": "https://unternehmen.vbb.de/fileadmin/user_upload/VBB/Dokumente/API-Datensaetze/gtfs-mastscharf/GTFS.zip",
        "trip_updates": "https://realtime.gtfs.de/realtime-free.pb",
        "vehicle_positions": "https://realtime.gtfs.de/realtime-free.pb"},

                
        "vvs": {"gtfs_url": "https://download.vvs.de/gtfs_realtime.zip",
                "trip_updates": "http://gtfsr.vbn.de/gtfsr_connect.bin",
                "vehicle_positions": "http://gtfsr.vbn.de/gtfsr_connect.bin"},

        "leipzig": {"gtfs_url": "https://opendata.leipzig.de/dataset/8803f612-2ce1-4643-82d1-213434889200/resource/b38955c4-431c-4e8b-a4ef-9964a3a2c95d/download/gtfsmdvlvb.zip",
                "trip_updates": "https://realtime.gtfs.de/realtime-free.pb",
                "vehicle_positions": "https://realtime.gtfs.de/realtime-free.pb"},
        
},  
    

    "nl": {
        "all": {
            "gtfs_url": "https://gtfs.ovapi.nl/nl/gtfs-nl.zip",
            "trip_updates": "https://gtfs.ovapi.nl/nl/tripUpdates.pb",
            "vehicle_positions": "https://gtfs.ovapi.nl/nl/vehiclePositions.pb"
        }
    },
    "se": 
        {"gtfs_url":"https://opendata.samtrafiken.se/gtfs/_SWE_/_SWE_.zip?key=e8a15ff6f6f44b35981e0e095fe70771",
            "trip_updates": "https://opendata.samtrafiken.se/gtfs-rt/_SWE_/TripUpdates.pb?key=0fbb3d703b964594b443834a8c45daea",
            "vehicle_positions": "https://opendata.samtrafiken.se/gtfs-rt/_SWE_/TripUpdates.pb?key=0fbb3d703b964594b443834a8c45daea"
    
    },
    "cz": {
        "pr": {"gtfs_url":"http://data.pid.cz/PID_GTFS.zip",
            "trip_updates": "https://api.golemio.cz/v2/vehiclepositions/gtfsrt/trip_updates.pb",
            "vehicle_positions": "https://api.golemio.cz/v2/vehiclepositions/gtfsrt/vehicle_positions.pb"
        }
    },   
      "lt": {
        "vil": {"gtfs_url":"http://www.stops.lt/vilnius/vilnius/gtfs.zip",
            "trip_updates": "https://www.stops.lt/vilnius/trip_updates.pb",
            "vehicle_positions": "https://www.stops.lt/vilnius/vehicle_positions.pb"
        }
    },
    "it": {
        "ro": {"gtfs_url":"https://romamobilita.it/sites/default/files/rome_static_gtfs.zip",
            "trip_updates": "https://romamobilita.it/sites/default/files/rome_rtgtfs_trip_updates_feed.pb",
            "vehicle_positions": "https://romamobilita.it/sites/default/files/rome_rtgtfs_vehicle_positions_feed.pb"
        }
    },
     "pl": {
        "wa": {"gtfs_url":"https://mkuran.pl/gtfs/warsaw.zip",
            "trip_updates": "https://mkuran.pl/gtfs/warsaw/vehicles.pb",
            "vehicle_positions": "https://mkuran.pl/gtfs/warsaw/vehicles.pb"
        },
        "kr": {"gtfs_url":"https://files.mobilitydatabase.org/mdb-2598/mdb-2598-202602220042/mdb-2598-202602220042.zip",
            "trip_updates": "https://gtfs.ztp.krakow.pl/TripUpdates.pb",
            "vehicle_positions": "https://gtfs.ztp.krakow.pl/VehiclePositions.pb"
        },
            "pkp": {"gtfs_url":"https://files.mobilitydatabase.org/mdb-2088/mdb-2088-202602270026/mdb-2088-202602270026.zip",
            "trip_updates": "https://gtfs.kasznia.net/rt/pkpic.pb",
            "vehicle_positions": "https://gtfs.kasznia.net/rt/pkpic.pb"
        },

        

        
    },
         "at": {
        "gtfs": {"gtfs_url":"https://www.wienerlinien.at/ogd_realtime/doku/ogd/gtfs/gtfs.zip",
            "trip_updates": "http://gtfs.ovapi.nl/nl/tripUpdates.pb",
            "vehicle_positions": "http://gtfs.ovapi.nl/nl/vehiclePositions.pb"
        }
    },
      "hu": {
        "bu": {"gtfs_url":"https://go.bkk.hu/api/static/v1/public-gtfs/budapest_gtfs.zip",
            "trip_updates": "https://go.bkk.hu/api/query/v1/ws/gtfs-rt/full/TripUpdates.pb?key=9a050993-a499-459f-980a-3c884d7a5103",
            "vehicle_positions": "https://go.bkk.hu/api/query/v1/ws/gtfs-rt/full/VehiclePositions.pb?key=9a050993-a499-459f-980a-3c884d7a5103"
        }
    },

"pt": {
        "carris": {"gtfs_url":"https://files.mobilitydatabase.org/mdb-2027/mdb-2027-202602280111/mdb-2027-202602280111.zip",
            "trip_updates": "https://api.carrismetropolitana.pt/vehicles.pb",
            "vehicle_positions": "https://api.carrismetropolitana.pt/vehicles.pb"
        }
    }, "es": {
        "barcelona": {"gtfs_url":"https://files.mobilitydatabase.org/mdb-892/mdb-892-202602130001/mdb-892-202602130001.zip",
            "trip_updates": "https://www.ambmobilitat.cat/transit/trips-updates/trips.bin",
            "vehicle_positions": "https://www.ambmobilitat.cat/transit/trips-updates/trips.bin"
        }
    },

    "fr": {
        "ilevia": {"gtfs_url":"https://files.mobilitydatabase.org/tdg-81995/tdg-81995-202602270117/tdg-81995-202602270117.zip",
            "trip_updates": "https://proxy.transport.data.gouv.fr/resource/ilevia-lille-gtfs-rt?token=xdgqKBTAzhw4DSPz6zeGc4c5eW0LhwztcGv4-vpzP4U",
            "vehicle_positions": "https://proxy.transport.data.gouv.fr/resource/ilevia-lille-gtfs-rt?token=xdgqKBTAzhw4DSPz6zeGc4c5eW0LhwztcGv4-vpzP4U"
        }
    },
           "ro": {
        "bu": {"gtfs_url":"https://files.mobilitydatabase.org/mdb-2098/mdb-2098-202601200128/mdb-2098-202601200128.zip",
            "trip_updates": "https://gtfs.tpbi.ro/api/gtfs-rt/tripUpdates",
            "vehicle_positions": "https://gtfs.tpbi.ro/api/gtfs-rt/vehiclePositions"
        }
    },
          
}


ROUTE_TYPE_NAMES = {
    0: "TRAM",
    2: "TRAIN",
    3: "BUS",
    103: "TRAIN",
    109: "TRAIN",
    701: "BUS",
    702: "BUS",
    703: "BUS",
    704: "BUS",
    705: "BUS",
    710: "BUS",
    711: "BUS",
    712: "BUS",
    714: "BUS",
    902: "TRAM",
    100: "TRAIN",
    401: "METRO",
    700: "BUS",
    900: "TRAM",
    1000: "FERRY",
    1501: "NÄRTRAFIK",
}

vt_token = "eyJ4NXQiOiJaV05sTURNNE56SmpZelZrT1dFNU16RTFNalF5TTJaaE5XSm1ORE0zWkRVMk9HRXdOVGxqWVRjNE1tWTNPRGcwWW1JeFlqSTFPVGMzTjJWallqZzRNdyIsImtpZCI6IlpXTmxNRE00TnpKall6VmtPV0U1TXpFMU1qUXlNMlpoTldKbU5ETTNaRFUyT0dFd05UbGpZVGM0TW1ZM09EZzBZbUl4WWpJMU9UYzNOMlZqWWpnNE13X1JTMjU2IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJNU29NMFpyMm9yMjI1TmwyTkZ3N3hMM3pNVG9hIiwiYXV0IjoiQVBQTElDQVRJT04iLCJiaW5kaW5nX3R5cGUiOiJyZXF1ZXN0IiwiaXNzIjoiaHR0cHM6XC9cL2V4dC1hcGkudmFzdHRyYWZpay5zZVwvdG9rZW4iLCJ0aWVySW5mbyI6eyJVbmxpbWl0ZWQiOnsidGllclF1b3RhVHlwZSI6InJlcXVlc3RDb3VudCIsImdyYXBoUUxNYXhDb21wbGV4aXR5IjowLCJncmFwaFFMTWF4RGVwdGgiOjAsInN0b3BPblF1b3RhUmVhY2giOnRydWUsInNwaWtlQXJyZXN0TGltaXQiOjAsInNwaWtlQXJyZXN0VW5pdCI6bnVsbH19LCJrZXl0eXBlIjoiUFJPRFVDVElPTiIsInN1YnNjcmliZWRBUElzIjpbeyJzdWJzY3JpYmVyVGVuYW50RG9tYWluIjoiY2FyYm9uLnN1cGVyIiwibmFtZSI6ImFwaTAwMTMtcHIiLCJjb250ZXh0IjoiXC9wclwvdjQiLCJwdWJsaXNoZXIiOiJhZG1pbiIsInZlcnNpb24iOiJ2NCIsInN1YnNjcmlwdGlvblRpZXIiOiJVbmxpbWl0ZWQifV0sImF1ZCI6Imh0dHBzOlwvXC9leHQtYXBpLnZhc3R0cmFmaWsuc2UiLCJuYmYiOjE3Njg2NzE3MTksImFwcGxpY2F0aW9uIjp7Im93bmVyIjoiTVNvTTBacjJvcjIyNU5sMk5Gdzd4TDN6TVRvYSIsInRpZXJRdW90YVR5cGUiOm51bGwsInRpZXIiOiJVbmxpbWl0ZWQiLCJuYW1lIjoic2t5bHQtZGVwYXJ0dXJlcyIsImlkIjoyNDgzLCJ1dWlkIjoiY2FlMmVhMjktYTcxNC00MGQ0LWEyMjUtNjE3ODY2YTJjNDQwIn0sImF6cCI6Ik1Tb00wWnIyb3IyMjVObDJORnc3eEwzek1Ub2EiLCJzY29wZSI6ImRlZmF1bHQiLCJleHAiOjE3Njg3NTgxMTksImlhdCI6MTc2ODY3MTcxOSwiYmluZGluZ19yZWYiOiI0ZjEzYTRiY2RiMWZhNDhlYzhjNGZmMzAwNDVjMzFiYiIsImp0aSI6IjQxMTFkNmJhLWUyYjEtNGFkNy05MDBiLTAxYjZkMzlhMzQ0YyJ9.KBBRcVxrDkPxZw_1Z4-Kso-Q-XCEJ9Cz5a5mKSEGE0IiqIF4A2WDkePPmpFPvfZtsQugr4LVr2WYGmfl_EYlWH0GOvLvLvGdmqaomeKiOq2aRna1M_6rc16e2GiV36EkXc76DHiCDZ1gntw6kCk6UG81xIM4pk3cQ6PmFRly_PqiyalUXa6Q0vli1P3qqJprSfZilcC6kNE0tE2K5hiKlZ906errxF9l0CxDaYt5HOy_vINFT-fDSfRC1kBvOVpBovquOXw81lhW5JbH7kd38lEsuOjBO8VYd6j7CWT_DVzk8LmDhhPfR6NW_PICMgtBwPl_wWvZ0B8fniuE7MGkvA"
vt_token = "eyJ4NXQiOiJaV05sTURNNE56SmpZelZrT1dFNU16RTFNalF5TTJaaE5XSm1ORE0zWkRVMk9HRXdOVGxqWVRjNE1tWTNPRGcwWW1JeFlqSTFPVGMzTjJWallqZzRNdyIsImtpZCI6IlpXTmxNRE00TnpKall6VmtPV0U1TXpFMU1qUXlNMlpoTldKbU5ETTNaRFUyT0dFd05UbGpZVGM0TW1ZM09EZzBZbUl4WWpJMU9UYzNOMlZqWWpnNE13X1JTMjU2IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJNU29NMFpyMm9yMjI1TmwyTkZ3N3hMM3pNVG9hIiwiYXV0IjoiQVBQTElDQVRJT04iLCJiaW5kaW5nX3R5cGUiOiJyZXF1ZXN0IiwiaXNzIjoiaHR0cHM6XC9cL2V4dC1hcGkudmFzdHRyYWZpay5zZVwvdG9rZW4iLCJ0aWVySW5mbyI6eyJVbmxpbWl0ZWQiOnsidGllclF1b3RhVHlwZSI6InJlcXVlc3RDb3VudCIsImdyYXBoUUxNYXhDb21wbGV4aXR5IjowLCJncmFwaFFMTWF4RGVwdGgiOjAsInN0b3BPblF1b3RhUmVhY2giOnRydWUsInNwaWtlQXJyZXN0TGltaXQiOjAsInNwaWtlQXJyZXN0VW5pdCI6bnVsbH19LCJrZXl0eXBlIjoiUFJPRFVDVElPTiIsInN1YnNjcmliZWRBUElzIjpbeyJzdWJzY3JpYmVyVGVuYW50RG9tYWluIjoiY2FyYm9uLnN1cGVyIiwibmFtZSI6ImFwaTAwMTMtcHIiLCJjb250ZXh0IjoiXC9wclwvdjQiLCJwdWJsaXNoZXIiOiJhZG1pbiIsInZlcnNpb24iOiJ2NCIsInN1YnNjcmlwdGlvblRpZXIiOiJVbmxpbWl0ZWQifV0sImF1ZCI6Imh0dHBzOlwvXC9leHQtYXBpLnZhc3R0cmFmaWsuc2UiLCJuYmYiOjE3NzIyMjU3NDgsImFwcGxpY2F0aW9uIjp7Im93bmVyIjoiTVNvTTBacjJvcjIyNU5sMk5Gdzd4TDN6TVRvYSIsInRpZXJRdW90YVR5cGUiOm51bGwsInRpZXIiOiJVbmxpbWl0ZWQiLCJuYW1lIjoic2t5bHQtZGVwYXJ0dXJlcyIsImlkIjoyNDgzLCJ1dWlkIjoiY2FlMmVhMjktYTcxNC00MGQ0LWEyMjUtNjE3ODY2YTJjNDQwIn0sImF6cCI6Ik1Tb00wWnIyb3IyMjVObDJORnc3eEwzek1Ub2EiLCJzY29wZSI6ImRlZmF1bHQiLCJleHAiOjE3NzIzMTIxNDgsImlhdCI6MTc3MjIyNTc0OCwiYmluZGluZ19yZWYiOiI1YzY1NjI1OGMxMWYzODMwMGQ4NzZhYTg0ZGE5YjBhZiIsImp0aSI6ImY3YjE5NzcxLWEwNjEtNGY4Ni05NTEzLTFkMzkxODExMzJlMCJ9.XcuLDg_xJfSVvIxn20aYiqZzwpzRURUfhTbcIYD4MdglReSaH4khR6B3UeyHKwYobABh1lTpXt272_GrK_87UZ5s9chKgpPC7-mA2aV6r8xIHKM1Qb549hUqcgztXo_3W7og3_8oei_L5XxEXNfUq5KCEyfSRVhkOIHvklQJeJ0783yvt9YVuE9B--8Q_J-DeJLRqLsFYTwpepjitw24Z6PQMLebDKciMsuzMtvRf-TqgZRJ_0ZabTy9nEYlFuZA83R6y8JCzmC8SZLgoH08o_6CY8C32XIHpsj6c0bSIDPa4NkImmO2ht574Ggwjs9XKNxYRI1Tl70PTMmGvg-gcw"
vt_token = "eyJ4NXQiOiJaV05sTURNNE56SmpZelZrT1dFNU16RTFNalF5TTJaaE5XSm1ORE0zWkRVMk9HRXdOVGxqWVRjNE1tWTNPRGcwWW1JeFlqSTFPVGMzTjJWallqZzRNdyIsImtpZCI6IlpXTmxNRE00TnpKall6VmtPV0U1TXpFMU1qUXlNMlpoTldKbU5ETTNaRFUyT0dFd05UbGpZVGM0TW1ZM09EZzBZbUl4WWpJMU9UYzNOMlZqWWpnNE13X1JTMjU2IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJNU29NMFpyMm9yMjI1TmwyTkZ3N3hMM3pNVG9hIiwiYXV0IjoiQVBQTElDQVRJT04iLCJiaW5kaW5nX3R5cGUiOiJyZXF1ZXN0IiwiaXNzIjoiaHR0cHM6XC9cL2V4dC1hcGkudmFzdHRyYWZpay5zZVwvdG9rZW4iLCJ0aWVySW5mbyI6eyJVbmxpbWl0ZWQiOnsidGllclF1b3RhVHlwZSI6InJlcXVlc3RDb3VudCIsImdyYXBoUUxNYXhDb21wbGV4aXR5IjowLCJncmFwaFFMTWF4RGVwdGgiOjAsInN0b3BPblF1b3RhUmVhY2giOnRydWUsInNwaWtlQXJyZXN0TGltaXQiOjAsInNwaWtlQXJyZXN0VW5pdCI6bnVsbH19LCJrZXl0eXBlIjoiUFJPRFVDVElPTiIsInN1YnNjcmliZWRBUElzIjpbeyJzdWJzY3JpYmVyVGVuYW50RG9tYWluIjoiY2FyYm9uLnN1cGVyIiwibmFtZSI6ImFwaTAwMTMtcHIiLCJjb250ZXh0IjoiXC9wclwvdjQiLCJwdWJsaXNoZXIiOiJhZG1pbiIsInZlcnNpb24iOiJ2NCIsInN1YnNjcmlwdGlvblRpZXIiOiJVbmxpbWl0ZWQifV0sImF1ZCI6Imh0dHBzOlwvXC9leHQtYXBpLnZhc3R0cmFmaWsuc2UiLCJuYmYiOjE3NzI0NTMwMzUsImFwcGxpY2F0aW9uIjp7Im93bmVyIjoiTVNvTTBacjJvcjIyNU5sMk5Gdzd4TDN6TVRvYSIsInRpZXJRdW90YVR5cGUiOm51bGwsInRpZXIiOiJVbmxpbWl0ZWQiLCJuYW1lIjoic2t5bHQtZGVwYXJ0dXJlcyIsImlkIjoyNDgzLCJ1dWlkIjoiY2FlMmVhMjktYTcxNC00MGQ0LWEyMjUtNjE3ODY2YTJjNDQwIn0sImF6cCI6Ik1Tb00wWnIyb3IyMjVObDJORnc3eEwzek1Ub2EiLCJzY29wZSI6ImFwaW06c3Vic2NyaWJlIiwiZXhwIjoxNzcyNTM5NDM1LCJpYXQiOjE3NzI0NTMwMzUsImJpbmRpbmdfcmVmIjoiN2IwYzQ5YWQ0NjFhZDIyOGZjNjYwMDQ1OGFjZTkyMjMiLCJqdGkiOiJmYjQ4OWUxOC1hNDU3LTQ3OTUtODIxNi1mODExMWUxY2I5NTgifQ.awkbT1gsxQTLF6A8P4Gthy9natZW_B1Ywkr9ZzcBzfqS_iKm0QsG8xgcVBDMOFW_K2Di-Tscz_PWv5zrRHriiC0E_Ky73NMvveb31ztnW1KTqZgXZnmfQaUxjFT4uGpWH2nmaDFQYG0XgpBbiL4knAgktjJdWx6j07lkVfHrRpf3ABMHG7hf1akav08poRtrorcQSZtXaxt4n94dwwlLKmsClC4rJ8hYYAppnqtqVlw4ygKRqeeGu3C3Pueha-NO-818w3Xfx0hJXr3q6-rqOnSgF0TK6AunB7Ma1nCzYNgLHItcnHkkI_Y0rwaTMoUWa5GWsXf_pO9a44Neg6Yk9w"

