from scraper import scrape

_NO_DEFAULT = object()

def check_yes_no(input: str, default=_NO_DEFAULT, considered_yes=None) -> bool:
	input = str(input).strip().lower()
	if not input:
		if default == _NO_DEFAULT:
			raise Exception('Empty input with no default')
		return default
	if not considered_yes:
		considered_yes = ['y', 'yes', 't', 'true', '1']
	return input in considered_yes

def main():
	train_no = int(input('Train number: '))
	use_yesterday = input('Train departed yesterday? [y/N] ')
	data = scrape(train_no, use_yesterday=check_yes_no(use_yesterday, default=False))
	print(f'Train {train_no}\t{data["route"]["from"]}\t{data["route"]["to"]}')
	print()
	if 'status' in data and data['status']:
		delay = data['status']['delay']
		if delay == 0:
			delay = 'on time'
		else:
			delay = f'{delay} min'
		state = data['status']['state']
		station = data['status']['station']
		print(f'Status: {delay}\t{state}\t{station}')
		print()
	for station in data['stations']:
		if 'arrival' in station and station['arrival']:
			print(station['arrival']['scheduleTime'], end='\t')
		else:
			print(end='\t')
		print(station['name'], end='\t')
		if 'departure' in station and station['departure']:
			print(station['departure']['scheduleTime'], end='\t')
		else:
			print(end='\t')
		print()

if __name__ == '__main__':
	main()