choice station in cli if ambiguous
l = args.l.upper()
else:
l = None
l = args.l.upper()
else:
l = None
+ s = args.s.encode('UTF-8')
if l and l in lines:
stations = itip.get_stations(l)
if l and l in lines:
stations = itip.get_stations(l)
from datetime import datetime, time
from textwrap import wrap
import argparse
from datetime import datetime, time
from textwrap import wrap
import argparse
POSITION_TYPES = ('stop', 'address', 'poi')
POSITION_TYPES = ('stop', 'address', 'poi')
parser = argparse.ArgumentParser(description='Get public transport route for Vienna')
parser.add_argument('-o', metavar='name', type=str, help='origin', required=True)
parser.add_argument('-d', metavar='name', type=str, help='destination', required=True)
parser = argparse.ArgumentParser(description='Get public transport route for Vienna')
parser.add_argument('-o', metavar='name', type=str, help='origin', required=True)
parser.add_argument('-d', metavar='name', type=str, help='destination', required=True)
- parser.add_argument('-ot', metavar='type', type=str, help='origin type: %s' % ' | '.join(POSITION_TYPES), default='stop')
- parser.add_argument('-dt', metavar='type', type=str, help='destination type: %s' % ' | '.join(POSITION_TYPES), default='stop')
+ parser.add_argument('-ot', metavar='type', type=str, help='origin type: %s' % ' | '.join(POSITION_TYPES), default='stop', choices=POSITION_TYPES)
+ parser.add_argument('-dt', metavar='type', type=str, help='destination type: %s' % ' | '.join(POSITION_TYPES), default='stop', choices=POSITION_TYPES)
args = parser.parse_args()
args = parser.parse_args()
- html = search((args.o, args.ot), (args.d, args.dt)).read()
+ html = search((args.o.encode('UTF-8'), args.ot), (args.d.encode('UTF-8'), args.dt)).read()
parser = sParser(html)
state = parser.check_page()
parser = sParser(html)
state = parser.check_page()
- if state == PageType.RESULT:
- parser = rParser(html)
- try:
- overviews = parser.overview
- for overview in overviews:
- print '[%s] %s-%s (%s)' % (overview['date'], overview['time'][0], overview['time'][1], overview['duration'])
- except ParserError:
- print 'parsererror'
- elif state == PageType.CORRECTION:
+ if state == PageType.CORRECTION:
try:
cor = parser.get_correction()
if cor[0]:
print
print '* Origin ambiguous:'
try:
cor = parser.get_correction()
if cor[0]:
print
print '* Origin ambiguous:'
- print '', '\n '.join(cor[0])
+ lo = None
+ ld = None
+ while not lo or not lo.isdigit() or int(lo) > len(cor[0]):
+ i = 1
+ for c in cor[0]:
+ print '%d. %s' % (i, c)
+ i += 1
+ lo = sys.stdin.readline().strip()
+
+ args.o = cor[0][int(lo)-1]
+
if cor[1]:
print
print '* Destination ambiguous:'
if cor[1]:
print
print '* Destination ambiguous:'
- print '', '\n '.join(cor[1])
+ while not ld or not ld.isdigit() or int(ld) > len(cor[1]):
+ j = 1
+ for c in cor[1]:
+ print '%d. %s' % (j, c)
+ j += 1
+ ld = sys.stdin.readline().strip()
+
+ args.d = cor[1][int(ld)-1]
+
+ html = search((args.o.encode('UTF-8'), args.ot), (args.d.encode('UTF-8'), args.dt)).read()
+
+ parser = sParser(html)
+ state = parser.check_page()
+
except ParserError:
print 'PANIC at correction page'
except ParserError:
print 'PANIC at correction page'
+
+ if state == PageType.RESULT:
+ parser = rParser(html)
+ try:
+ overviews = parser.overview
+ for overview in overviews:
+ print '[%s] %s-%s (%s)' % (overview['date'], overview['time'][0], overview['time'][1], overview['duration'])
+ except ParserError:
+ print 'parsererror'
+
elif state == PageType.UNKNOWN:
print 'PANIC unknown result'
elif state == PageType.UNKNOWN:
print 'PANIC unknown result'