Optimised; PyLint score 9.44/10
This commit is contained in:
parent
fca01b7e7b
commit
656e8b59c4
82
main.py
82
main.py
|
@ -1,24 +1,21 @@
|
||||||
|
"""AutoSafe
|
||||||
|
Modular Road-Safety Toolkit
|
||||||
|
|
||||||
import overpy
|
"""
|
||||||
import sys
|
#pylint: disable=C0103,C0111
|
||||||
import simplejson as sjson
|
import argparse
|
||||||
import json
|
|
||||||
import time
|
import time
|
||||||
from threading import Thread
|
import overpy
|
||||||
|
import simplejson as sjson
|
||||||
from scipy.spatial import distance as dist
|
from scipy.spatial import distance as dist
|
||||||
from imutils.video import VideoStream
|
from imutils.video import VideoStream
|
||||||
from imutils import face_utils
|
from imutils import face_utils
|
||||||
from threading import Thread
|
#import playsound
|
||||||
import numpy as np
|
|
||||||
import playsound
|
|
||||||
import argparse
|
|
||||||
import imutils
|
import imutils
|
||||||
import dlib
|
import dlib
|
||||||
import cv2
|
import cv2
|
||||||
from uber_rides.session import Session
|
#from uber_rides.session import Session
|
||||||
from uber_rides.client import UberRidesClient
|
#from uber_rides.client import UberRidesClient
|
||||||
import signal
|
|
||||||
import argparse
|
|
||||||
import tweepy
|
import tweepy
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
@ -29,7 +26,7 @@ import requests
|
||||||
# Defining Variables #
|
# Defining Variables #
|
||||||
######################
|
######################
|
||||||
|
|
||||||
radius = str(100) # Radius for maxspeed function. taken as a string because gets concatenated in the function
|
radius = str(100) # Radius for maxspeed function. taken as a string because gets concatenated
|
||||||
|
|
||||||
################
|
################
|
||||||
# Dummy Values #
|
# Dummy Values #
|
||||||
|
@ -81,7 +78,7 @@ def get_api(cfg):
|
||||||
auth.set_access_token(cfg['access_token'], cfg['access_token_secret'])
|
auth.set_access_token(cfg['access_token'], cfg['access_token_secret'])
|
||||||
return tweepy.API(auth)
|
return tweepy.API(auth)
|
||||||
|
|
||||||
def tweet():
|
def tweetMe():
|
||||||
cfg = {
|
cfg = {
|
||||||
"consumer_key":"knQFpTnjuSvr6OxYwebt3wyrd",
|
"consumer_key":"knQFpTnjuSvr6OxYwebt3wyrd",
|
||||||
"consumer_secret":"Mhex3oRkmaF7lD3hoMvHpAD6ctW0ugKYCopTlhc0JzOLOMIZ0w",
|
"consumer_secret":"Mhex3oRkmaF7lD3hoMvHpAD6ctW0ugKYCopTlhc0JzOLOMIZ0w",
|
||||||
|
@ -99,19 +96,19 @@ def tweet():
|
||||||
('lat', '28.546519'),
|
('lat', '28.546519'),
|
||||||
('lon', '77.179248'),
|
('lon', '77.179248'),
|
||||||
)
|
)
|
||||||
|
url = 'https://developers.zomato.com/api/v2.1/geocode'
|
||||||
response = requests.get('https://developers.zomato.com/api/v2.1/geocode', headers=headers, params=params)
|
response = requests.get(url, headers=headers, params=params)
|
||||||
loc = response.json()['location']['title']
|
loc = response.json()['location']['title']
|
||||||
tweet = ("Stay Alert! Sudden braking at: ", loc)
|
tweet = ("Stay Alert! Sudden braking at: ", loc)
|
||||||
status = api.update_status(status=tweet)
|
status = api.update_status(status=tweet)
|
||||||
|
print(status)
|
||||||
|
|
||||||
################################
|
################################
|
||||||
# Fetching Details from Zomato #
|
# Fetching Details from Zomato #
|
||||||
################################
|
################################
|
||||||
|
|
||||||
res = []
|
|
||||||
|
|
||||||
def getRes():
|
def getRes():
|
||||||
|
res = []
|
||||||
headers = {
|
headers = {
|
||||||
'Accept': 'application/json',
|
'Accept': 'application/json',
|
||||||
'user-key': 'a530c1424d9abe5442fa22f77ce03d25',
|
'user-key': 'a530c1424d9abe5442fa22f77ce03d25',
|
||||||
|
@ -121,8 +118,8 @@ def getRes():
|
||||||
('lat', '28.546519'),
|
('lat', '28.546519'),
|
||||||
('lon', '77.179248'),
|
('lon', '77.179248'),
|
||||||
)
|
)
|
||||||
|
url = 'https://developers.zomato.com/api/v2.1/geocode'
|
||||||
response = requests.get('https://developers.zomato.com/api/v2.1/geocode', headers=headers, params=params)
|
response = requests.get(url, headers=headers, params=params)
|
||||||
res = response.json()['popularity']['nearby_res']
|
res = response.json()['popularity']['nearby_res']
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
@ -133,7 +130,7 @@ def getDetails(res):
|
||||||
}
|
}
|
||||||
url = "https://developers.zomato.com/api/v2.1/restaurant?res_id=" + str(res[0])
|
url = "https://developers.zomato.com/api/v2.1/restaurant?res_id=" + str(res[0])
|
||||||
newResponse = requests.get(url, headers=headers)
|
newResponse = requests.get(url, headers=headers)
|
||||||
newRes = []
|
#newRes = []
|
||||||
resName = newResponse.json()['name']
|
resName = newResponse.json()['name']
|
||||||
resAddress = newResponse.json()['location']['address']
|
resAddress = newResponse.json()['location']['address']
|
||||||
print("You are feeling sleepy, why don't you take a break?\n")
|
print("You are feeling sleepy, why don't you take a break?\n")
|
||||||
|
@ -149,17 +146,17 @@ def zomato():
|
||||||
############################
|
############################
|
||||||
|
|
||||||
def drunk():
|
def drunk():
|
||||||
print("Your Location Appears to be around places which sells \n alcohol, please take the breathalyser test ")
|
print("Your appear to be around places which sell \n alcohol, take the breathalyser test")
|
||||||
|
|
||||||
bac_raw = str(open("./files/bac.txt", "r").read())
|
bac_raw = str(open("./files/bac.txt", "r").read())
|
||||||
bac = float(float(bac_raw)/100)
|
bac = float(float(bac_raw)/100)
|
||||||
print(bac)
|
print(bac)
|
||||||
if(bac >= 0.08):
|
if bac >= 0.08:
|
||||||
print("Please Do Not Drive!\n")
|
print("Please Do Not Drive!\n")
|
||||||
print("I can call a cab if you want\n")
|
print("I can call a cab if you want\n")
|
||||||
print("")
|
print("")
|
||||||
answer = input("Say No, to disagree, else I'll book the cab: \n")
|
answer = input("Say No, to disagree, else I'll book the cab: \n")
|
||||||
if(answer=="no"):
|
if answer == "no":
|
||||||
print("You are not fit to drive")
|
print("You are not fit to drive")
|
||||||
print("Text message to emergency contact sent")
|
print("Text message to emergency contact sent")
|
||||||
print("Your cab has been booked, thank you for not driving")
|
print("Your cab has been booked, thank you for not driving")
|
||||||
|
@ -186,8 +183,7 @@ shape_predictor = "./files/shape_predictor_68_face_landmarks.dat"
|
||||||
EYE_AR_THRESH = 0.2 # If the EAR goes < this for 48 frames, it is counted as drowsiness
|
EYE_AR_THRESH = 0.2 # If the EAR goes < this for 48 frames, it is counted as drowsiness
|
||||||
EYE_AR_CONSEC_FRAMES = 24
|
EYE_AR_CONSEC_FRAMES = 24
|
||||||
|
|
||||||
COUNTER = 0
|
|
||||||
ALERT = False
|
|
||||||
|
|
||||||
|
|
||||||
########################
|
########################
|
||||||
|
@ -195,6 +191,10 @@ ALERT = False
|
||||||
########################
|
########################
|
||||||
|
|
||||||
def sleepiness():
|
def sleepiness():
|
||||||
|
|
||||||
|
COUNTER = 0
|
||||||
|
#ALERT = False
|
||||||
|
|
||||||
print("Initialising Facial Landmark Predictor...")
|
print("Initialising Facial Landmark Predictor...")
|
||||||
detector = dlib.get_frontal_face_detector()
|
detector = dlib.get_frontal_face_detector()
|
||||||
predictor = dlib.shape_predictor(shape_predictor)
|
predictor = dlib.shape_predictor(shape_predictor)
|
||||||
|
@ -241,9 +241,7 @@ def sleepiness():
|
||||||
cv2.putText(frame, "Sleepiness Detected!", (10, 30),
|
cv2.putText(frame, "Sleepiness Detected!", (10, 30),
|
||||||
cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
|
cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
|
||||||
print("Sleepiness Detected!")
|
print("Sleepiness Detected!")
|
||||||
print("\a");print("\a");print("\a");print("\a");print("\a")
|
print("\n \n \n")
|
||||||
print("\a");print("\a");print("\a");print("\a");print("\a")
|
|
||||||
print("\a");print("\a");print("\a");print("\a");print("\a")
|
|
||||||
zomato()
|
zomato()
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
exit()
|
exit()
|
||||||
|
@ -301,22 +299,23 @@ def maxspeed(coordinates, radius):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
############################################################################################################################
|
#########################################################################
|
||||||
# Gives data to the function and gets json in return. This json is then parsed. Then the double quotes are stripped off it #
|
# Gives data to the function and gets json in return. #
|
||||||
############################################################################################################################
|
#This json is then parsed. Then the double quotes are stripped off it #
|
||||||
|
#########################################################################
|
||||||
def speedlim():
|
def speedlim():
|
||||||
speedLimit = sjson.dumps(maxspeed((str(glat), str(glng)), radius)[0]['speed_limit']).strip('\"')
|
speedLimit = sjson.dumps(maxspeed((str(glat), str(glng)), radius)[0]['speed_limit']).strip('\"')
|
||||||
while(True):
|
while True:
|
||||||
carSpeedDummy = open("./files/carSpeed.txt", "r")
|
carSpeedDummy = open("./files/carSpeed.txt", "r")
|
||||||
carSpeed = carSpeedDummy.read()
|
carSpeed = carSpeedDummy.read()
|
||||||
#print(carSpeed)
|
#print(carSpeed)
|
||||||
#carSpeed = 29
|
#carSpeed = 29
|
||||||
while(int(carSpeed) > int(speedLimit)):
|
while int(carSpeed) > int(speedLimit):
|
||||||
carSpeedDummy = open("./files/carSpeed.txt", "r")
|
carSpeedDummy = open("./files/carSpeed.txt", "r")
|
||||||
carSpeed = carSpeedDummy.read()
|
carSpeed = carSpeedDummy.read()
|
||||||
print("Over The Speed Limit")
|
print("Over The Speed Limit")
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
while(int(carSpeed) <= int(speedLimit)):
|
while int(carSpeed) <= int(speedLimit):
|
||||||
carSpeedDummy = open("./files/carSpeed.txt", "r")
|
carSpeedDummy = open("./files/carSpeed.txt", "r")
|
||||||
carSpeed = carSpeedDummy.read()
|
carSpeed = carSpeedDummy.read()
|
||||||
print("Under the Speed Limit")
|
print("Under the Speed Limit")
|
||||||
|
@ -327,16 +326,17 @@ def speedlim():
|
||||||
##################
|
##################
|
||||||
|
|
||||||
def brakes():
|
def brakes():
|
||||||
while(True):
|
while True:
|
||||||
tweet()
|
tweetMe()
|
||||||
|
|
||||||
#####################################################
|
#####################################################
|
||||||
# Using Argument Parse to run one command at a time #
|
# Using Argument Parse to run one command at a time #
|
||||||
#####################################################
|
#####################################################
|
||||||
|
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
FUNCTION_MAP = {'overspeed' : speedlim, 'sleep-detector' : sleepiness, 'sudden-braking' : brakes, 'drunk' : drunk }
|
FUNCTION_MAP = {'overspeed' : speedlim, 'sleep-detector' : sleepiness,
|
||||||
|
'sudden-braking' : brakes, 'drunk' : drunk}
|
||||||
parser.add_argument('function', choices=list(FUNCTION_MAP))
|
parser.add_argument('function', choices=list(FUNCTION_MAP))
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
func = FUNCTION_MAP[args.function]
|
FUNC = FUNCTION_MAP[args.function]
|
||||||
func()
|
FUNC()
|
||||||
|
|
Loading…
Reference in New Issue