Python Wrapper for Indian Railways Enquiry API
Project description
pyinrail
A python wrapper for Indian Railways Enquiry API!
Get trains between stations
Get seat availability
Get train fare
Get train schedule
Get train live running status
Get PNR status
…and much more!
Note: This is not an official package and using it for commercial purposes is not recommended.
Installation
To install pyinrail, simply,
$ pip install pyinrail
You will also need to install tesseract-ocr. Find instructions to install tesseract-ocr here.
Usage
Importing pyinrail
from pyinrail import pyinrail
Create RailwayEnquiry object
enq = pyinrail.RailwayEnquiry(src='new delhi', dest='ahmedabad', date='12-05-2018')
Get trains between stations
df = enq.get_trains_between_stations(as_df=True)
print(df)
trainName trainNumber fromStnCode toStnCode departureTime arrivalTime duration distance avlClasses 0 ADI SJ RAJDHANI 12958 NDLS ADI 19:55 09:40 13:45 935 [1A, 2A, 3A] 1 GUJRAT S KRANTI 12918 NZM ADI 13:55 06:10 16:15 1085 [2A, 3A, SL] 2 ASHRAM EXPRESS 12916 DLI ADI 15:20 07:40 16:20 934 [1A, 2A, 3A, SL] 3 ALA HAZRAT EXP 14311 DLI ADI 11:45 06:15 18:30 933 [2A, 3A, SL] 4 YOGA EXPRESS 19032 DSA ADI 21:26 17:10 19:44 963 [1A, 2A, 3A, SL] 5 DEE BDTS G RATH 12215 DEE ADI 09:20 01:10 15:50 951 [3A]
Get seat availability
df = enq.get_seat_availability(12958, classc='2A', as_df=True)
print(df)
availablityDate availablityStatus availablityType currentBkgFlag reason reasonType waitListType 0 12-5-2018 TRAIN DEPARTED 8224 Y W 8224 1 13-5-2018 GNWL68/WL24 8224 N S 9 2 14-5-2018 GNWL41/WL8 8224 N S 9 3 15-5-2018 GNWL25/WL6 8224 N S 9 4 16-5-2018 GNWL33/WL14 8224 N S 9 5 17-5-2018 GNWL20/WL9 8224 N S 9
Get train schedule
df = enq.get_train_schedule(12958, as_df=True)
print(df)
stationCode stationName departureTime arrivalTime routeNumber haltTime distance dayCount stnSerialNumber 0 NDLS NEW DELHI 19:55 -- 1 -- 0 1 1 1 DEC DELHI CANTT 20:25 20:23 1 02:00 16 1 2 2 GGN GURGAON 20:43 20:41 1 02:00 32 1 3 3 JP JAIPUR 00:30 00:20 1 10:00 309 2 4 4 AII AJMER JN 02:29 02:25 1 04:00 443 2 5 5 FA FALNA 04:53 04:52 1 01:00 650 2 6 6 ABR ABU ROAD 06:05 06:01 1 04:00 748 2 7 7 PNU PALANPUR JN 07:12 07:10 1 02:00 801 2 8 8 MSH MAHESANA JN 08:05 08:03 1 02:00 866 2 9 9 SBIB SABARMATI BG 09:02 09:00 1 02:00 929 2 10 10 ADI AHMEDABAD JN -- 09:40 1 -- 935 2 11
Get train fare
fare_data = enq.get_train_fare(12958, classc='2A')
print(fare_data)
{'baseFare': 1841, 'cateringCharge': 225, 'dynamicFare': 921, 'fuelAmount': 0.0, 'goodsServiceTax': 143.0, 'otherCharge': 0, 'reservationCharge': 50, 'superfastCharge': 45, 'tatkalFare': 0, 'totalCollectibleAmount': 3225.0, 'totalConcession': 0, 'totalFare': 3225, 'travelInsuranceCharge': 0.0, 'travelInsuranceServiceTax': 0.0, 'wpServiceCharge': 0.0, 'wpServiceTax': 0.0}
Get train’s live running status
train_detail, instances, detailed_instances = enq.get_train_status(12958, as_df=True)
print(train_detail)
print(instances)
print(detailed_instances[0])
{'dayCnt': '1', 'from': 'NDLS', 'runsOn': '1111111', 'schArrTime': '09:40', 'schDepTime': '19:55', 'to': 'ADI', 'trainName': 'ADI SJ RAJDHANI', 'trainNo': '12958'} startDate departed curStn terminated lastUpdated totalLateMins 0 12 May 2018 True RE False 12 May 2018 21:43 6 1 11 May 2018 True ADI True 12 May 2018 9:27 -14 stnCode arr schArrTime actArr delayArr dep schDepTime actDep delayDep dayCnt schDayCnt distance 0 NDLS False 00:00 00:00 0 True 19:55 19:55 0 0 0 0 1 DEC True 20:23 20:27 4 True 20:25 20:29 4 0 0 15 2 GGN True 20:41 20:47 6 True 20:43 20:49 6 0 0 32 3 RE True 21:30 21:41 11 True 21:30 21:41 11 0 0 83 4 JP False 00:20 00:20 0 False 00:30 00:30 0 1 1 308 5 AII False 02:25 02:25 0 False 02:29 02:29 0 1 1 442 6 FA False 04:52 04:52 0 False 04:53 04:53 0 1 1 649 7 ABR False 06:01 06:01 0 False 06:05 06:05 0 1 1 747 8 PNU False 07:10 07:10 0 False 07:12 07:12 0 1 1 800 9 MSH False 08:03 08:03 0 False 08:05 08:05 0 1 1 865 10 SBIB False 09:00 09:00 0 False 09:02 09:02 0 1 1 927 11 ADI False 09:40 09:40 0 False 00:00 00:00 0 1 1 934
TODOs
[ ] A command line client
[ ] A GUI interface
Want to contribute?
Clone the repository
$ git clone http://github.com/nikhilkumarsingh/pyinrail
Install dependencies
$ pip install -r requirements.txt
To test local version of pyinrail:
$ pip install -U .
OR :
$ pip install -e <project dir.> .
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file pyinrail-1.0.0.tar.gz
.
File metadata
- Download URL: pyinrail-1.0.0.tar.gz
- Upload date:
- Size: 153.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | abf57e4b3e68e81388360b5a3595570ff5a1c287828a4cbcd0d163201835d5ad |
|
MD5 | 2cba5f12f911e607498ade4c8734bba6 |
|
BLAKE2b-256 | 549a2bf8d0c83b55b32b9b4cb6429a26225b47d91984e0c9daeb3b529ee91c77 |