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
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
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
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
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)
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)
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
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)
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