在Python中使用铁路 API 查询火车的实时运行状态和 PNR
铁路 API 是围绕 GET 请求组织的。可以使用这个基于 JSON 的 API 从印度铁路公司获取有关实时列车状态、PNR 状态、列车时刻表、车站详细信息和其他信息的信息。
要使用此 API,必须需要 API 密钥,可以从这里获取
注意:用户需要在 railapi.com 上创建一个帐户才能使用 API。
需要的模块:
requests
json
实时运行状态:
下面是实现:
Python3
# Python program to find live train
# status using RAILWAY API
# import required modules
import requests , json
# enter your api key here
api_key = "Your_API_Key"
# base_url variable to store url
base_url = "https://api.railwayapi.com/v2/live/train/"
# enter train_number here
train_number = "12056"
# enter current date in dd-mm-yyyy format
current_date = "20-06-2018"
# complete_url variable to
# store complete url address
complete_url = base_url + train_number + "/date/" + current_date + "/apikey/" + api_key + "/"
# get method of requests module
# return response object
response_ob = requests.get(complete_url)
# json method of response object convert
# json format data into python format data
result = response_ob.json()
# Now result contains a list of nested dictionaries
# Check the value of "response_code" key is equal
# to "200" or not if equal that means record is
# found otherwise record is not found
if result["response_code"] == 200 :
# train name is extracting from
# the result variable data
train_name = result["train"]["name"]
# store the value or data of
# "route" key in variable y
temp = result["route"]
# source station name is extracting
# from the y variable data
source_station = temp[0]["station"]["name"]
# destination station name is
# extracting from the y variable data
destination_station = temp[-1]["station"]["name"]
# store the value of "position"
# key in variable position
position = result["position"]
# print details
print(" train name : " + str(train_name)
+ "\n source station : " + str(source_station)
+ "\n destination station : "+ str(destination_station)
+ "\n current status : " + str(position) )
else :
print("Record not Found")
Python3
# Python program to find PNR
# status using RAILWAY API
# import required modules
import requests, json
# Enter API key here
api_key = "Your_API_key"
# base_url variable to store url
base_url = "https://api.railwayapi.com/v2/pnr-status/pnr/"
# Enter valid pnr_number
pnr_number = "6515483790"
# Stores complete url address
complete_url = base_url + pnr_number + "/apikey/" + api_key + "/"
# get method of requests module
# return response object
response_ob = requests.get(complete_url)
# json method of response object convert
# json format data into python format data
result = response_ob.json()
# now result contains list
# of nested dictionaries
if result["response_code"] == 200:
# train name is extracting
# from the result variable data
train_name = result["train"]["name"]
# train number is extracting from
# the result variable data
train_number = result["train"]["number"]
# from station name is extracting
# from the result variable data
from_station = result["from_station"]["name"]
# to_station name is extracting from
# the result variable data
to_station = result["to_station"]["name"]
# boarding point station name is
# extracting from the result variable data
boarding_point = result["boarding_point"]["name"]
# reservation upto station name is
# extracting from the result variable data
reservation_upto = result["reservation_upto"]["name"]
# store the value or data of "pnr"
# key in pnr_num variable
pnr_num = result["pnr"]
# store the value or data of "doj" key
# in variable date_of_journey variable
date_of_journey = result["doj"]
# store the value or data of
# "total_passengers" key in variable
total_passengers = result["total_passengers"]
# store the value or data of "passengers"
# key in variable passengers_list
passengers_list = result["passengers"]
# store the value or data of
# "chart_prepared" key in variable
chart_prepared = result["chart_prepared"]
# print following values
print(" train name : " + str(train_name)
+ "\n train number : " + str(train_number)
+ "\n from station : " + str(from_station)
+ "\n to station : " + str(to_station)
+ "\n boarding point : " + str(boarding_point)
+ "\n reservation upto : " + str(reservation_upto)
+ "\n pnr number : " + str(pnr_num)
+ "\n date of journey : " + str(date_of_journey)
+ "\n total no. of passengers: " + str(total_passengers)
+ "\n chart prepared : " + str(chart_prepared))
# looping through passenger list
for passenger in passengers_list:
# store the value or data
# of "no" key in variable
passenger_num = passenger["no"]
# store the value or data of
# "current_status" key in variable
current_status = passenger["current_status"]
# store the value or data of
# "booking_status" key in variable
booking_status = passenger["booking_status"]
# print following values
print(" passenger number : " + str(passenger_num)
+ "\n current status : " + str(current_status)
+ "\n booking_status : " + str(booking_status))
else:
print("Record Not Found")
输出:
train name : NEWDELHI JAN SHATABDI EXP
source station : DEHRADUN
destination station : NEW DELHI
current status : Train has reached Destination and late by 15 minutes.
实时 PNR 状态:
Python3
# Python program to find PNR
# status using RAILWAY API
# import required modules
import requests, json
# Enter API key here
api_key = "Your_API_key"
# base_url variable to store url
base_url = "https://api.railwayapi.com/v2/pnr-status/pnr/"
# Enter valid pnr_number
pnr_number = "6515483790"
# Stores complete url address
complete_url = base_url + pnr_number + "/apikey/" + api_key + "/"
# get method of requests module
# return response object
response_ob = requests.get(complete_url)
# json method of response object convert
# json format data into python format data
result = response_ob.json()
# now result contains list
# of nested dictionaries
if result["response_code"] == 200:
# train name is extracting
# from the result variable data
train_name = result["train"]["name"]
# train number is extracting from
# the result variable data
train_number = result["train"]["number"]
# from station name is extracting
# from the result variable data
from_station = result["from_station"]["name"]
# to_station name is extracting from
# the result variable data
to_station = result["to_station"]["name"]
# boarding point station name is
# extracting from the result variable data
boarding_point = result["boarding_point"]["name"]
# reservation upto station name is
# extracting from the result variable data
reservation_upto = result["reservation_upto"]["name"]
# store the value or data of "pnr"
# key in pnr_num variable
pnr_num = result["pnr"]
# store the value or data of "doj" key
# in variable date_of_journey variable
date_of_journey = result["doj"]
# store the value or data of
# "total_passengers" key in variable
total_passengers = result["total_passengers"]
# store the value or data of "passengers"
# key in variable passengers_list
passengers_list = result["passengers"]
# store the value or data of
# "chart_prepared" key in variable
chart_prepared = result["chart_prepared"]
# print following values
print(" train name : " + str(train_name)
+ "\n train number : " + str(train_number)
+ "\n from station : " + str(from_station)
+ "\n to station : " + str(to_station)
+ "\n boarding point : " + str(boarding_point)
+ "\n reservation upto : " + str(reservation_upto)
+ "\n pnr number : " + str(pnr_num)
+ "\n date of journey : " + str(date_of_journey)
+ "\n total no. of passengers: " + str(total_passengers)
+ "\n chart prepared : " + str(chart_prepared))
# looping through passenger list
for passenger in passengers_list:
# store the value or data
# of "no" key in variable
passenger_num = passenger["no"]
# store the value or data of
# "current_status" key in variable
current_status = passenger["current_status"]
# store the value or data of
# "booking_status" key in variable
booking_status = passenger["booking_status"]
# print following values
print(" passenger number : " + str(passenger_num)
+ "\n current status : " + str(current_status)
+ "\n booking_status : " + str(booking_status))
else:
print("Record Not Found")
输出 :
train name : DOON EXPRESS
train number : 13009
from station : LUCKNOW
to station : DEHRADUN
boarding point : LUCKNOW
reservation upto : DEHRADUN
pnr number : 6515483790
date of journey : 01-07-2018
total no. of passengers: 1
chart prepared : False
passenger number : 1
current status : RLWL/-/16/GN
booking_status : RLWL/-/23/GN