Add flags for things, separate the spooky matrix stuff, formatting.

Signed-off-by: Abdulkadir Furkan Şanlı <me@abdulocra.cy>
This commit is contained in:
Abdulkadir Furkan Şanlı 2022-09-25 15:25:30 +02:00
parent fd0463463a
commit bdd1a3441e
Signed by: afk
GPG Key ID: C8F00588EE6ED1FE

151
naut.py Normal file → Executable file
View File

@ -1,6 +1,5 @@
#! /usr/bin/python #! /usr/bin/python
from math import radians, cos, sin, asin, sqrt from math import radians, cos, sin, asin, sqrt
import numpy as np import numpy as np
import subprocess import subprocess
@ -9,10 +8,10 @@ import time
import json import json
from time import strftime from time import strftime
import random import random
import os
import argparse
# haversine function to determine distance between two lat,long points # haversine function to determine distance between two lat,long points
def haversine(lat1, lon1, lat2, lon2): def haversine(lat1, lon1, lat2, lon2):
R = 3959.87433 # earth radius in miles R = 3959.87433 # earth radius in miles
dLat = radians(lat2 - lat1) dLat = radians(lat2 - lat1)
@ -21,9 +20,8 @@ def haversine(lat1, lon1, lat2, lon2):
c = 2 * asin(sqrt(a)) c = 2 * asin(sqrt(a))
return R * c return R * c
# get a random enough number # get a random enough number
def getfloat(): def getfloat():
output = random.random() output = random.random()
return output return output
@ -34,20 +32,17 @@ def str_time_prop(start, end, format, prop):
stime = start stime = start
etime = end etime = end
ptime = stime + prop * (etime - stime) ptime = stime + prop * (etime - stime)
return time.strftime(format, time.localtime(ptime)) return time.strftime(format, time.localtime(ptime))
# get random time in the future # get random time in the future
def random_date(start, end, prop): def random_date(start, end, prop):
return str_time_prop(start, end, '%m/%d/%Y %I:%M%p', prop) return str_time_prop(start, end, "%m/%d/%Y %I:%M%p", prop)
# function to generate a lat,long coordinate within a range # function to generate a lat,long coordinate within a range
# inspiration from this post: # inspiration from this post:
# https://gis.stackexchange.com/questions/25877/generating-random-locations-nearby # https://gis.stackexchange.com/questions/25877/generating-random-locations-nearby
def create_random_point(x0, y0, distance): def create_random_point(x0, y0, distance):
# approximately 1609 meters in a mile # approximately 1609 meters in a mile
# 5 miles = about 8045 # 5 miles = about 8045
@ -62,27 +57,85 @@ def create_random_point(x0, y0, distance):
x = w * np.cos(t) x = w * np.cos(t)
x1 = x / np.cos(y0) x1 = x / np.cos(y0)
y = w * np.sin(t) y = w * np.sin(t)
print("u="+str(u))
print("v="+str(v))
return (x0 + x1, y0 + y) return (x0 + x1, y0 + y)
def spooky_print(message):
for character in message:
print(character, end="", flush=True)
time.sleep(0.3)
print("\n")
def white_rabbit(future_time, latitude, longitude):
# homage to the Matrix
init1_msg = "Wake up, Neo..."
init_msg = "The Matrix has you..."
rabbit_msg1 = "follow the"
rabbit_msg2 = "white rabbit..."
os.system("clear")
spooky_print(init1_msg)
time.sleep(5)
os.system("clear")
spooky_print(init_msg)
time.sleep(5)
os.system("clear")
spooky_print(rabbit_msg1)
spooky_print(" " + rabbit_msg2)
time.sleep(5)
os.system("clear")
spooky_print(" " + future_time)
spooky_print(" " + latitude)
spooky_print(" " + longitude)
init_start = time.time() init_start = time.time()
dtime = strftime("%m-%d-%Y %H:%M:%S") dtime = strftime("%m-%d-%Y %H:%M:%S")
newplot = () newplot = ()
##### User defined variables ##### ##### User defined variables #####
loghandle = './naut.log' loghandle = "./naut.log"
logfile = open(loghandle, "a") logfile = open(loghandle, "a")
parser = argparse.ArgumentParser()
parser.add_argument("-x", "--matrix", action="store_true", help="toggle the matrix")
parser.add_argument(
"-c",
"--coordinates",
nargs=2,
action="append",
help="enter lat and long for home base, defaults to 52.229832 21.011734",
)
parser.add_argument(
"-t", "--window", type=int, help="set the time window in minutes, defaults to 30"
)
parser.add_argument(
"-m",
"--distance",
type=int,
help="set the radius from home base in meters, defaults to 4827",
)
args = parser.parse_args()
# home_base (starting point), set to Warsaw center. # home_base (starting point), set to Warsaw center.
if args.coordinates:
latitude1, longitude1 = float(args.coordinates[0][0]), float(args.coordinates[0][1])
else:
latitude1, longitude1 = 52.229832, 21.011734 latitude1, longitude1 = 52.229832, 21.011734
#window_secs = 10800 if args.window:
window_secs = args.window * 60
else:
window_secs = 1800 window_secs = 1800
# how far to travel in meters from home base # how far to travel in meters from home base
if args.distance:
meters_out = args.distance
else:
meters_out = 4827 meters_out = 4827
##### End User Defined variables ##### ##### End User Defined variables #####
@ -90,50 +143,42 @@ meters_out = 4827
current_time = time.time() current_time = time.time()
window = current_time + window_secs window = current_time + window_secs
# for loop to get multiple points if desired (for future development - void/attractor calculations)
for i in range(1, 2):
timex = float(getfloat()) timex = float(getfloat())
x, y = create_random_point(latitude1, longitude1, meters_out) x, y = create_random_point(latitude1, longitude1, meters_out)
future_time = random_date(current_time, window, timex) future_time = random_date(current_time, window, timex)
dest_lat = str(format(x, '.5f')) dest_lat = str(format(x, ".5f"))
dest_long = str(format(y, '.5f')) dest_long = str(format(y, ".5f"))
orig_lat = str(latitude1) orig_lat = str(latitude1)
orig_long = str(longitude1) orig_long = str(longitude1)
newplot = (x, y) newplot = (x, y)
origplot = (latitude1, longitude1) origplot = (latitude1, longitude1)
dist = haversine(origplot[0], origplot[1], newplot[0], newplot[1]) dist = haversine(origplot[0], origplot[1], newplot[0], newplot[1])
dist = str(format(dist, '.2f')) dist = str(format(dist, ".2f"))
print("Distance between points is ", dist) logfile.write(
print("destination: "+dest_lat+" "+dest_long) dtime
print("future_time: "+future_time) + " homebase_lat="
logfile.write(dtime+" homebase_lat="+orig_lat+" homebase_long="+orig_long+" dest_lat=" + + orig_lat
dest_lat+" dest_long="+dest_long+" future_time="+future_time+" dist="+dist) + " homebase_long="
+ orig_long
msg_breaker = '~' + " dest_lat="
msg_space = '`' + dest_lat
msg_space2 = '```' + " dest_long="
# homage to the Matrix + dest_long
init1_msg = 'Wake up, Neo...' + " future_time="
init_msg = 'The Matrix has you..' + future_time
rabbit_msg1 = 'follow the' + " dist="
rabbit_msg2 = 'white rabbit...' + dist
)
logfile.write("\n") logfile.write("\n")
print(init1_msg)
time.sleep(5) if args.matrix:
print(msg_breaker) white_rabbit(future_time, dest_lat, dest_long)
print(init_msg)
time.sleep(5) print(
print(msg_breaker) "https://www.google.com/maps/search/?api=1&query="
print(rabbit_msg1) + dest_lat
print(msg_breaker) + ","
print(msg_space2) + dest_long
print(rabbit_msg2) + " Time: "
time.sleep(5) + future_time
print(msg_breaker) )
print(" "+future_time)
print(msg_breaker)
print(" "+dest_lat)
print(msg_space)
print(dest_long)
print("https://www.google.com/maps/search/?api=1&query="+dest_lat+","+dest_long+" Time: "+future_time)