[FIX] unicode input error fix for testing
authorFlorian Schweikert <kelvan@logic.at>
Sat, 24 Sep 2011 14:51:32 +0000 (16:51 +0200)
committerFlorian Schweikert <kelvan@logic.at>
Sat, 24 Sep 2011 14:51:32 +0000 (16:51 +0200)
choice station in cli if ambiguous

iTip.py
scotty.py

diff --git a/iTip.py b/iTip.py
index 4b7aea4..8ad3eb6 100644 (file)
--- a/iTip.py
+++ b/iTip.py
@@ -115,7 +115,7 @@ if __name__ == '__main__':
         l = args.l.upper()
     else:
         l = None
-    s = args.s
+    s = args.s.encode('UTF-8')
     
     if l and l in lines:
         stations = itip.get_stations(l)
index 060ea52..b40dc55 100644 (file)
--- a/scotty.py
+++ b/scotty.py
@@ -5,6 +5,7 @@ import settings
 from datetime import datetime, time
 from textwrap import wrap
 import argparse
+import sys
 
 POSITION_TYPES = ('stop', 'address', 'poi')
 
@@ -218,36 +219,61 @@ if __name__ == '__main__':
     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()
     
-    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()
     
-    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:'
-                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:'
-                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'
+            
+    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'