Exemplo n.º 1
0
def format_result_json(r,k):
    d={}
    d['response_code']=200
    d['from']={}
    sd=db.station_metadata(k['source'])
    d['from']['name']=sd['fullname']
    d['from']['code']=sd['code']
    d['to']={}
    sd=db.station_metadata(k['dest'])
    d['to']['name']=sd['fullname']
    d['to']['code']=sd['code']
    d['fare']=[]
    for i in r:
        t={}
        t['code']=i['class']
        t['name']=classname.get(i['class'])
        t['fare']=i['fare']
        d['fare'].append(t)
    d['quota']={}
    d['quota']['code']=k['quota']
    d['quota']['name']=quotaname.get(k['quota'])
    td=db.train_metadata(k['train'])
    d['train']={}
    d['train']['name']=td['name']
    d['train']['number']=k['train'] #ensures result in case if DB has no record of such a train
    d=json.dumps(d,indent=4)
    return d
Exemplo n.º 2
0
def format_result_json(s):
    d={}
    d['response_code']=200
    d['error']=s['error']
    td=db.train_metadata(s['num'])
    d['train_number']=td['number']
    d['train_name']=td['name']
    sd=db.station_metadata(s['source'])
    d['from']={}
    d['from']['name']=sd['fullname']
    d['from']['code']=sd['code']
    d['from']['lat']=sd['lat']
    d['from']['lng']=sd['lng']
    d['to']={}
    sd=db.station_metadata(s['dest'])
    d['to']['name']=sd['fullname']
    d['to']['code']=sd['code']
    d['to']['lat']=sd['lat']
    d['to']['lng']=sd['lng']
    d['class']={}
    d['class']['class_code']=s['class']
    d['class']['class_name']=classname.get(s['class'])
    d['quota']={}
    d['quota']['quota_code']=s['quota']
    d['quota']['quota_name']=quotaname.get(s['quota'])
    d['availability']=[]
    for i in range(len(s['dates'])):
        t={}
        t['date']=s['dates'][i]
        t['status']=s['seats'][i]
        d['availability'].append(t)
    d=json.dumps(d,indent=4)
    return d
Exemplo n.º 3
0
def format_result_json(r, k):
    d = {}
    d['response_code'] = 200
    d['from'] = {}
    sd = db.station_metadata(k['source'])
    d['from']['name'] = sd['fullname']
    d['from']['code'] = sd['code']
    d['to'] = {}
    sd = db.station_metadata(k['dest'])
    d['to']['name'] = sd['fullname']
    d['to']['code'] = sd['code']
    d['fare'] = []
    for i in r:
        t = {}
        t['code'] = i['class']
        t['name'] = classname.get(i['class'])
        t['fare'] = i['fare']
        d['fare'].append(t)
    d['quota'] = {}
    d['quota']['code'] = k['quota']
    d['quota']['name'] = quotaname.get(k['quota'])
    td = db.train_metadata(k['train'])
    d['train'] = {}
    d['train']['name'] = td['name']
    d['train']['number'] = k[
        'train']  #ensures result in case if DB has no record of such a train
    d = json.dumps(d, indent=4)
    return d
Exemplo n.º 4
0
def format_result_json(p):
    d={}
    d['response_code']=200
    d['train_start_date']={}
    d['pnr']=p['pnr']
    #d['coach_position']=0 # For backwards comptability
    d['doj']=strip_inline_space(p['doj'])
    d['train_num']=p['number'][1:]
    train_md=db.train_metadata(d['train_num'])
    d['train_name']=train_md['name']
    t={}
    if not p['error']:
        date=[int(dt) for dt in d['doj'].split('-')]
        traveldate=datetime(date[2],date[1],date[0])
        with db.opendb(db.MAINDB) as sch:
            sch._exec("SELECT * FROM schedule WHERE train=(?) AND station=(?)",(d['train_num'],p['boarding']))
            stn_sch=sch._fetchone()
            if stn_sch!=None:
                runday=stn_sch['day']-1
                start_date=traveldate-timedelta(days=runday)
                t['year']=start_date.year
                t['month']=start_date.month
                t['day']=start_date.day
    d['train_start_date']=t
    d['from_station']={}
    stn_md=db.station_metadata(p['from'])
    d['from_station']['code']=stn_md['code']
    d['from_station']['name']=stn_md['fullname']
    d['to_station']={}
    stn_md=db.station_metadata(p['to'])
    d['to_station']['code']=stn_md['code']
    d['to_station']['name']=stn_md['fullname']
    d['reservation_upto']={}
    stn_md=db.station_metadata(p['upto'])
    d['reservation_upto']['code']=stn_md['code']
    d['reservation_upto']['name']=stn_md['fullname']
    d['boarding_point']={}
    stn_md=db.station_metadata(p['boarding'])
    d['boarding_point']['code']=stn_md['code']
    d['boarding_point']['name']=stn_md['fullname']
    d['class']=p['class']
    d['error']=p['error']
    d['chart_prepared']=p['chart']
    d['total_passengers']=p['total']
    d['passengers']=[]
    
    curr_status=p['current_status']
    book_status=p['booking_status']
    coach_position=p['coach_position']
    for i in range(p['total']):
        t={}
        t['no']=i+1
        t['booking_status']=strip_inline_space(book_status[i])
        t['current_status']=strip_inline_space(curr_status[i])
        t['coach_position']=coach_position[i]
        d['passengers'].append(t)

    d=json.dumps(d,indent=4)
    return d
Exemplo n.º 5
0
def codetoname(code):
    code = code.upper()
    # if(partial):
    #     code=fuzzycode(code)
    m = []
    m.append(db.station_metadata(code))
    lat, lng = m[0]['lat'], m[0]['lng']
    #print(m)
    nearby = nearby_stn(code, (lat, lng))
    #print(nearby)
    if nearby != None:
        for i in nearby:
            m.append(db.station_metadata(i))
    return format_result_json(m)
Exemplo n.º 6
0
def codetoname(code):
    code=code.upper()
    # if(partial):
    #     code=fuzzycode(code)
    m=[]
    m.append(db.station_metadata(code))
    lat,lng=m[0]['lat'],m[0]['lng']
    #print(m)
    nearby=nearby_stn(code,(lat,lng))
    #print(nearby)
    if nearby!=None:
        for i in nearby:
            m.append(db.station_metadata(i))
    return format_result_json(m)
Exemplo n.º 7
0
def format_result_json(p):
    d = {}
    d['response_code'] = 200
    d['pnr'] = p['pnr']
    train_md = db.train_metadata(p['number'])
    d['train_num'] = train_md['number']
    d['train_name'] = train_md['name']
    d['doj'] = p['doj']
    d['from_station'] = {}
    stn_md = db.station_metadata(p['from'])
    d['from_station']['code'] = stn_md['code']
    d['from_station']['name'] = stn_md['fullname']
    d['to_station'] = {}
    stn_md = db.station_metadata(p['to'])
    d['to_station']['code'] = stn_md['code']
    d['to_station']['name'] = stn_md['fullname']
    d['reservation_upto'] = {}
    stn_md = db.station_metadata(p['upto'])
    d['reservation_upto']['code'] = stn_md['code']
    d['reservation_upto']['name'] = stn_md['fullname']
    d['boarding_point'] = {}
    stn_md = db.station_metadata(p['boarding'])
    d['boarding_point']['code'] = stn_md['code']
    d['boarding_point']['name'] = stn_md['fullname']
    d['class'] = p['class']
    d['error'] = p['error']
    d['char_prepared'] = p['chart']
    d['chart_prepared'] = p['chart']
    d['no_of_passengers'] = p['total']
    d['passengers'] = []

    curr_status = p['current_status']
    book_status = p['booking_status']
    for i in range(p['total']):
        t = {}
        t['no'] = i + 1
        t['coach'] = t['berth'] = t['quota'] = ''
        t['coach'] = book_status[i]
        t['current_status'] = curr_status[i]
        d['passengers'].append(t)

    d = json.dumps(d, indent=4)
    return d
Exemplo n.º 8
0
def between(source,dest,date):
    url='http://www.indianrail.gov.in/cgi_bin/inet_srcdest_cgi_date.cgi'
    date=date.split('-')
    if len(date)==1:
        date.append('')
    cls="ZZ"
    values={"lccp_src_stncode_dis":source,
            "lccp_src_stncode":source,
            "lccp_dstn_stncode_dis":dest,
            "lccp_dstn_stncode":dest,
            "lccp_classopt":cls,
            "lccp_day":date[0],
            "lccp_month":date[1],
            "CurrentMonth":"4",
            "CurrentDate":"19",
            "CurrentYear":"2016"
    }
    header={"Origin":"http://www.indianrail.gov.in",
            "Host":"www.indianrail.gov.in",
            "User-Agent":"Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)",
            "Referer":"http://www.indianrail.gov.in/fare_Enq.html"
            }
    html=fetchpage(url,values,header)
    soup=BeautifulSoup(html)
    trains=[]
    for link in soup.find_all(href="#SAMETRN"):
        trains.append(link.text[1:].strip())

    destinations=[]
    sources=[]
    alter=0
    for tdtag in soup.find_all("td"):
        tagattr=tdtag.attrs.get('title','')
        if 'Station Code' in tagattr or 'temporary' in tagattr:
            t={}
            t['code']=extract_stn_code(tdtag['title'])
            t['name']=sanitize(tdtag.text)
            if alter==0:
                t['name']=db.station_metadata(t['code'])['fullname']
                sources.append(t)
                alter=1
            else:
                destinations.append(t)
                alter=0

    days=re.findall("(?<=B>)Y|(?<=red>)N",html)   
    numbers=[]
    for link in soup.find_all("input"):
        if link.get("onclick",False):
            #print(link['onclick'])
            num=re.findall("(?<=\')[0-9]+(?=[A-Z]+)",link['onclick'])
            if num!=[]:
                numbers.append(num[0])
    times=re.findall("(?<=TD>)[0-9:]+",html)
    return format_result_json(trains,days,numbers,times,sources,destinations)
Exemplo n.º 9
0
def format_result_json(p):
    d={}
    d['response_code']=200
    d['pnr']=p['pnr']
    train_md=db.train_metadata(p['number'])
    d['train_num']=train_md['number']
    d['train_name']=train_md['name']
    d['doj']=p['doj']
    d['from_station']={}
    stn_md=db.station_metadata(p['from'])
    d['from_station']['code']=stn_md['code']
    d['from_station']['name']=stn_md['fullname']
    d['to_station']={}
    stn_md=db.station_metadata(p['to'])
    d['to_station']['code']=stn_md['code']
    d['to_station']['name']=stn_md['fullname']
    d['reservation_upto']={}
    stn_md=db.station_metadata(p['upto'])
    d['reservation_upto']['code']=stn_md['code']
    d['reservation_upto']['name']=stn_md['fullname']
    d['boarding_point']={}
    stn_md=db.station_metadata(p['boarding'])
    d['boarding_point']['code']=stn_md['code']
    d['boarding_point']['name']=stn_md['fullname']
    d['class']=p['class']
    d['error']=p['error']
    d['chart_prepared']=p['chart']
    d['total_passengers']=p['total']
    d['passengers']=[]
    
    curr_status=p['current_status']
    book_status=p['booking_status']
    for i in range(p['total']):
        t={}
        t['no']=i+1
        t['booking_status']=book_status[i]
        t['current_status']=curr_status[i]
        d['passengers'].append(t)

    d=json.dumps(d,indent=4)
    return d