Browse Source

Split main up and moved parser out of if __name__ == "__main__"

atexit
Raphael Roberts 7 years ago
parent
commit
48d7a14d09
  1. 82
      main.py

82
main.py

@ -20,6 +20,17 @@ CHICAGO_TZ = tz.gettz("America/Chicago")
DATETIME_FORMAT = "%A, %B %e, %Y %H:%M:%S"
# https://stackoverflow.com/a/5967539
parser = argparse.ArgumentParser(prog='ctabus')
parser.add_argument('-l', '--lucky', action='store_true',
help='picks first result')
parser.add_argument('-p', '--periodic', metavar='SEC',
type=int, help='checks periodically')
parser.add_argument('-r', '--route', default=None)
parser.add_argument('-d', '--direction', default=None)
parser.add_argument('-t', '--disable_toast', action='store_false')
parser.add_argument('-k', '--kill-cache', action="store_true")
parser.add_argument('arg', nargs='+', metavar='(stop-id | cross streets)')
def toast(text):
read, write = os.pipe()
@ -125,7 +136,7 @@ config = '''\
def show(data, rt_filter=None, _clear=False, enable_toast=False):
times = data['prd']
today = datetime.datetime.now(CHICAGO_TZ)
now = datetime.datetime.now(CHICAGO_TZ)
arrivals = sorted(times, key=lambda t: t['prdtm'])
if rt_filter is not None:
arrivals = filter(lambda arrival: arrival['rt'] == rt_filter, arrivals)
@ -135,9 +146,9 @@ def show(data, rt_filter=None, _clear=False, enable_toast=False):
for bustime in arrivals:
before = date_parse(bustime['prdtm'])
arrival = before.replace(tzinfo=CHICAGO_TZ)
if arrival > today:
if arrival > now:
stop_id = bustime['stpid']
delta = pprint_delta(arrival-today)
delta = pprint_delta(arrival-now)
t = arrival.strftime('%H:%M:%S')
route = bustime['rt']
direction = bustime['rtdir']
@ -152,10 +163,7 @@ def show(data, rt_filter=None, _clear=False, enable_toast=False):
print("="*36)
def main(args):
args.arg = ' '.join(args.arg)
if not args.arg.isdecimal():
def _picker(args):
# save on import time slightly
from search import Search, StopSearch
# routes
@ -184,16 +192,16 @@ def main(args):
0]['stpid']
else:
stop_id = gen_list(stops, 'stpid', 'stpnm', key=s)
else:
stop_id = args.arg
data = ctabus.get_times(stop_id)
info = data['prd'][0]
key = make_key(info['rt'], info['rtdir'], ctabus.api, None)
if key not in ctabus.get_name_from_direction.cache.keys():
ctabus.get_name_from_direction.cache[key] = info['des']
ctabus.get_name_from_direction.fresh = True
if args.periodic is not None:
return stop_id
def _picker_recent(args):
pass
def _main_periodic(args, stop_id, init_data):
_done = False
data = init_data
while not _done:
try:
show(data, args.route, True, args.disable_toast and HAS_TOAST)
@ -210,27 +218,39 @@ def main(args):
print("Error fetching times")
if e < args.periodic:
time.sleep(args.periodic-e)
else:
show(data, args.route)
if __name__ == '__main__':
parser = argparse.ArgumentParser(prog='ctabus')
parser.add_argument('-l', '--lucky', action='store_true',
help='picks first result')
parser.add_argument('-p', '--periodic', metavar='SEC',
type=int, help='checks periodically')
parser.add_argument('-r', '--route', default=None)
parser.add_argument('-d', '--direction', default=None)
parser.add_argument('-t', '--disable_toast', action='store_false')
parser.add_argument('-k', '--kill-cache', action="store_true")
parser.add_argument('arg', nargs='+', metavar='(stop-id | cross streets)')
args = parser.parse_args()
def main(args):
sys.stderr = open(osp.join(osp.dirname(__file__), 'stderr.log'), 'w')
if args.kill_cache:
for cache_obj in disk_cache.caches:
cache_obj.delete_cache()
main(args)
args.arg = ' '.join(args.arg)
if args.arg.isdecimal():
stop_id = args.arg
else:
if args.arg == ':recent:':
pass
else:
stop_id = _picker(args)
data = ctabus.get_times(stop_id)
info = data['prd'][0]
key = make_key(info['rt'], info['rtdir'], ctabus.api, None)
if key not in ctabus.get_name_from_direction.cache.keys():
ctabus.get_name_from_direction.cache[key] = info['des']
ctabus.get_name_from_direction.fresh = True
if args.periodic is not None:
_main_periodic(args, stop_id, data)
else:
show(data, args.route)
for cache_obj in disk_cache.caches:
if cache_obj.fresh:
cache_obj.save_cache()
if __name__ == '__main__':
args = parser.parse_args()
main(args)
Loading…
Cancel
Save