-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmain.py
151 lines (130 loc) · 4.14 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
import argparse
import requests
from pathlib import Path
import shutil
from utilities import argument_check, api_requests, recursive_checker, ascii_art
parser = argparse.ArgumentParser(
prog="TGVMAXiSchlag",
description="Find the best TGVmax route for your trip, regardless where you have to stop",
)
parser.add_argument("-d", "--depart", help="Departure station", required=True)
parser.add_argument("-a", "--arrivee", help="Arrival station", required=True)
parser.add_argument("-t", "--date", help="Date of the trip", required=True)
parser.add_argument(
"-s", "--steps", help="Number of max steps, default 2", required=False, default=2
)
parser.add_argument(
"-l",
"--list-gares",
help="List all available stations",
required=False,
action="store_true",
)
parser.add_argument(
"-p",
"--propale",
help="List TGVmax trains from your station at your desired date",
required=False,
action="store_true",
)
parser.add_argument(
"-f",
"--force",
help="The algorithm searches for routes with the minimum number of possible steps. This option activates the forcing of the route search up to the specified number of steps.",
required=False,
action="store_true",
)
parser.add_argument(
"-hh",
"--hour",
help="Hour of departure if you'd like to specify one, default 00:00",
required=False,
default="00:00",
)
args = parser.parse_args()
depart = args.depart
arrivee = args.arrivee
date = args.date
hour = args.hour
force_maxsteps = args.force
steps = int(args.steps)
# Corps
print("\n\n")
print(ascii_art.welcome_message(shutil.get_terminal_size().columns))
# import des gares depuis le fichier txt
data_folder = Path("data/")
file_to_open = data_folder / "gares.txt"
with open(file_to_open, "r") as f:
gares = f.readlines()
gares = [gare.strip() for gare in gares]
gares.sort()
if args.list_gares:
print("Liste des gares disponibles :")
for gare in gares:
print(gare)
exit()
if args.propale:
print("Trains TGVmax disponibles depuis " + depart + " le " + date)
trains = api_requests.check_available_gares(
argument_check.formalize_gare(depart), date, hour
)
for train in trains:
print("Vers la gare de " + train[1])
print("Heure de départ : " + train[2] + " Heure d'arrivée : " + train[3])
exit()
# vérification des arguments et formalisation des gares
argument_check.verify_argument(depart, arrivee, date, steps, gares)
depart_req = argument_check.formalize_gare(depart)
arrivee_req = argument_check.formalize_gare(arrivee)
# on commence par vérifier qu'il n'existe pas de trajet direct entre les deux gares
available_trains = api_requests.simple_request(depart_req, arrivee_req, date, hour)
if len(available_trains) > 0:
print(
"Il existe au moins un trajet direct entre "
+ depart
+ " et "
+ arrivee
+ " le "
+ date
)
print("Voici les trains disponibles :")
for train in available_trains:
print("Heure de départ : " + train[2] + " Heure d'arrivée : " + train[3])
else:
print(
"Il n'existe pas de trajet direct entre "
+ depart
+ " et "
+ arrivee
+ " le "
+ date
)
print("")
print("Recherche de trajets avec étapes...")
print("")
print("Tentative de trouver des trajets avec ", steps, " étapes...")
all_compatible_journey = []
recursive_checker.gare_checker(
all_compatible_journey, arrivee, depart, date, [], steps, force_maxsteps, hour
)
if len(all_compatible_journey) > 0:
print("\n####################################\n")
print("Récapitulatif des différents trajets trouvés :")
for trajet in all_compatible_journey:
print("Trajet :")
for i in range(len(trajet)):
train = trajet[i]
print("Train ", i + 1)
print(
"Départ de ",
train[0],
" à ",
train[2],
" ---> Arrivée à ",
train[1],
" à ",
train[3],
)
print("------------------")
else:
print("Aucun train trouvé, essayez avec plus d'étapes !")