ct-tarifs/cheapest_ticket.py

51 lines
1.3 KiB
Python
Raw Normal View History

2016-07-10 16:03:47 +00:00
#!/usr/bin/env python3
import subprocess
import sys
import captaintrain as ct
2016-07-10 16:55:53 +00:00
def usage():
print("""cheapest_ticket.py departure-station arrival-station departure-date
departure-date: any string parsable by date -d
""")
2016-07-10 16:03:47 +00:00
if __name__ == "__main__":
2016-07-10 16:55:53 +00:00
if len(sys.argv) <= 3:
usage()
sys.exit(1)
departure = ct.station(sys.argv[1])
if departure is None:
print("Unknown station '%s'" % sys.argv[1])
sys.exit(1)
arrival = ct.station(sys.argv[2])
if arrival is None:
print("Unknown station '%s'" % sys.argv[2])
sys.exit(1)
departure_time = 0
with subprocess.Popen(["date", "-d", sys.argv[3], "-u", "-Iseconds"], stdout=subprocess.PIPE) as f:
departure_time = f.stdout.read().strip().decode()
if departure_time == 0 or departure_time == "":
sys.exit(1)
2016-07-10 16:03:47 +00:00
else:
2016-07-10 16:55:53 +00:00
departure_time = ct.parse_datetime(departure_time)
print("From:", departure.name, departure.id)
print("To:", arrival.name, arrival.id)
print("Departure:", departure_time)
#with open("res.json") as f:
# import json
# res = ct.Search(**json.load(f))
res = ct.search(departure, arrival, departure_time)
min_trips = ct.cheapest_trips(res.trips)
for trip in min_trips:
print(trip)