diff --git a/checktrain.html b/checktrain.html new file mode 100644 index 0000000..d0ec699 --- /dev/null +++ b/checktrain.html @@ -0,0 +1,121 @@ + + + + + + Train Schedule + + + + +

Train Schedule

+
+ + + + + diff --git a/map.html b/map.html new file mode 100644 index 0000000..df0459c --- /dev/null +++ b/map.html @@ -0,0 +1,206 @@ + + + + + + Map with Smooth Path + + + + + +
+ + + + \ No newline at end of file diff --git a/rozklad.py b/rozklad.py new file mode 100644 index 0000000..17f7494 --- /dev/null +++ b/rozklad.py @@ -0,0 +1,69 @@ +from datetime import datetime +import requests, json +# nr wyjazdowe z pkp pdf +trip_nr_list = [59400, 59402, 59404, 59406, 59408, 59410, 59412, 59414, 59416, 59418, 59420, 59422, 59424, 59426, 59428, 59430, 59432, 59434, 59436, 59438, 59440, 59442, 59444, 59446, 59448, 59450, 59452, 59454, 59456, 59458, 59460, 59462, 59464, 59466, 59468, 59470, 59472, 59474, 59476, 59478, 59480, 59482, 59484, 59486, 59600, 59602, 59604, 59606, 59608, 59610, 59612, 59620, 59690, 59692, 59694, 59696, 59698, 59702, 59706, 59708, 59710, 59712, 59714, 59716, 59718, 59720, 59722, 59724, 59726, 59728, 59730, 59732, 59734, 59736, 59738, 59740, 59742, 59744, 59746, 59748, 59750, 59752, 59754, 59756, 59758, 59760, 59762, 59764, 59766, 59768, 59770, 59772, 59774, 59776, 59778, 59780, 59782, 59784, 59786, 59788, 59790, 59792, 59794, 59796, 59798, 59800, 59802, 59804, 59806, 59808, 59810, 59812, 59814, 95401, 95403, 95405, 95407, 95409, 95411, 95413, 95415, 95417, 95419, 95421, 95423, 95425, 95427, 95429, 95431, 95433, 95435, 95437, 95439, 95441, 95443, 95445, 95447, 95449, 95451, 95453, 95455, 95457, 95459, 95461, 95463, 95465, 95467, 95469, 95471, 95473, 95475, 95477, 95479, 95481, 95483, 95485, 95487, 95489, 95601, 95603, 95605, 95607, 95609, 95633, 95687, 95689, 95691, 95693, 95695, 95697, 95699, 95703, 95707, 95709, 95711, 95713, 95715, 95717, 95719, 95721, 95723, 95725, 95727, 95729, 95731, 95733, 95735, 95737, 95739, 95741, 95743, 95745, 95747, 95749, 95751, 95753, 95755, 95757, 95759, 95761, 95763, 95765, 95767, 95769, 95771, 95773, 95775, 95777, 95779, 95781, 95783, 95785, 95787, 95789, 95791, 95793, 95795, 95797, 95799, 95801, 95803, 95805, 95807, 95809, 95811, 95813, 95815, 95817] +trip_nr_list = [59400, 59402, 59486, 59600, 59602, 59604] # shor for testing + + +def get_trips(date, trip_nr_list): # Date Y-M-D datetime.now().strftime("%Y-%m-%d") + + trip_id_list = [] + for i in trip_nr_list: + try: # get the train id using the train number, except KeyError as the given journey may not have a schedule for a given day (mostly sundays) + trip_id_list.append([i, requests.get(f'https://koleo.pl/pl/train_calendars?&brand=SKMT&nr={i}').json()["train_calendars"][0]["date_train_map"][date]]) + except KeyError: print('no date for this train') + # trip_id_list = [ (59400,148352609), (59400,148352609) ] + all_trips_list = [] + for i in trip_id_list: + one_trip = [i] + for i in requests.get(f'https://koleo.pl/pl/trains/{i[1]}').json()["stops"]: + one_trip.append(f'{i["station_name"]} {i["arrival"]["hour"]}:{i["arrival"]["minute"]} {i["departure"]["hour"]}:{i["departure"]["minute"]}') + all_trips_list.append(one_trip) + + return all_trips_list + +print(get_trips(datetime.now().strftime("%Y-%m-%d"),trip_nr_list)) + + + + + + + + + + + +''' +def get_live_trains(date, trip_nr_list): # Date Y-M-D + train_id = '' + all_journeys = [] + + for i in train_number_list: # For each train number + + #getting the train id using the train number and current date by parsing the json response from the koleo.pl server + # request json data train numer = i parse the data - get the train ids + train_id = requests.get(f'https://koleo.pl/pl/train_calendars?&brand=SKMT&nr={i}').json()["train_calendars"][0]["date_train_map"][date] + all_stops = requests.get(f'https://koleo.pl/pl/trains/{train_id}').json()["stops"] # we turned the train number into a train id, now we are requesting the train ride data using the train id from koleo.pl + journey = [i] + + arrival = (all_stops[0]["arrival"]["hour"], all_stops[0]["arrival"]["minute"]) # get the arrival time from the first station (begining) + departure = (all_stops[-1]["departure"]["hour"],all_stops[-1]["departure"]["minute"]) # get the departure time from the last station (end) + + if arrival <= (datetime.now().time().hour,datetime.now().time().minute) <= departure: # check if the train is currently in a journey + for i in all_stops: + journey.append(f'{i["station_name"]} {i["arrival"]["hour"]}:{i["arrival"]["minute"]} {i["departure"]["hour"]}:{i["departure"]["minute"]}') + + all_journeys.append(journey) + return all_journeys + +with open("LIVETRAIN.json", "w", encoding="utf-8") as file: + json.dump([x for x in get_live_trains(datetime.now().strftime("%Y-%m-%d"),wyjazd)], file, indent=4, ensure_ascii=False) + +print('DONE') + + +#get_trains(datetime.now().strftime("%Y-%m-%d"),wyjazd): +#print(f'https://koleo.pl/pociag/SKMT/{i}/{current_date}') + +''' \ No newline at end of file diff --git a/stream.html b/stream.html new file mode 100644 index 0000000..49a026b --- /dev/null +++ b/stream.html @@ -0,0 +1,58 @@ + + + + + + Live Streams + + + + + +
+ + + + +
+ + + + + diff --git a/stream.py b/stream.py new file mode 100644 index 0000000..11f0ca7 --- /dev/null +++ b/stream.py @@ -0,0 +1,32 @@ +import cv2 + +# Stream URL +stream_url = "https://ls.tkchopin.pl:9043/live/wejherowo_skrzyzowanie_rybacka_k6_static.stream/playlist.m3u8" + +# Open video stream with reduced buffer size for low latency +cap = cv2.VideoCapture(stream_url) +cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) # Reduce frame buffering for lower latency + +if not cap.isOpened(): + print("Error: Could not open stream") +else: + # Read and discard old frames (capture only the latest available one) + for _ in range(5): # Adjust this number for better latency + ret, frame = cap.read() + + if ret: + # Define the cropping region (modify these values as needed) + x, y, width, height = 640, 0, 640, 130 # Upper-right corner + + # Crop the frame + cropped_frame = frame[y:y+height, x:x+width] + + # Save the cropped frame + cv2.imwrite("cropped_frame.jpg", cropped_frame) + print("Cropped frame saved as 'cropped_frame.jpg'") + else: + print("Error: Could not capture frame") + +# Release resources +cap.release() +cv2.destroyAllWindows()