Ejemplo n.º 1
0
def event_stream():
    #TODO: Get these inputs from client:
    city = "IUB"
    #Buses whose coordinates 
    listColloquialBusNumbers = ['3 College Mall / Bradford Place','6 Campus Shuttle - Fri','6 Limited', '9 IU Campus / College Mall / Campus Corner', 'A Route', 'B Route', 'C Route', 'D Route']
    #target location coordinates
    targetCoordinates = (39.17159402400064, -86.51633620262146) #10th St Bloomington, IN 47408 
    alertDistance = 0.3 #miles
    
    #Create constans object to fetch all constant values
    constantsObject = Constants()
    constantsObject.load_constants("constants.json")
    #Create bus operations object
    busOperationsObject = BusOperations(constantsObject, city)
    #Create route object
    routeObject = Route(constantsObject, city)
    #Create a map of actual to colloquial bus numbers
    map_actual_bus_numbers_to_colloquial_bus_numbers = routeObject.get_colloquial_bus_numbers_from_actual_bus_numbers()
    #Make a list of bus objects
    listOfActualBusNumbers = routeObject.get_actual_bus_numbers(listColloquialBusNumbers)
    #Create bus objects
    listOfBusObjects = [] #Stores list of all bus objects
    for actualNumber in listOfActualBusNumbers:
        busObject = Bus(constantsObject)
        busObject.set_actual_number(actualNumber)
        listOfBusObjects.append(busObject)
    flag = True
    while flag:
        #gevent.sleep(2) #sleep for 2 second before updating status of each bus to avoid overloading servers with requests
        listOfBusObjects = busOperationsObject.updateBusStatus(listOfBusObjects)
        #check which buses are approaching, then track them or show them or whatever
        for bus in listOfBusObjects:
            status = bus.getBusMovementAgainstTarget(targetCoordinates)
            if status == constantsObject.APPROACHING:
                status = "APPROACHING"
            elif status == constantsObject.LEAVING:
                status = "LEAVING"
            else:
                status = "STOPPED"
            data = map_actual_bus_numbers_to_colloquial_bus_numbers[bus.get_actual_number()]," :",status, " is at distance: ",str(bus.getBusDistanceFromTarget(targetCoordinates))," miles"
            printableData = " ".join(data)
            gevent.sleep(2) #sleep for 2 second before updating status of each bus to avoid overloading servers with requests
            if status == "APPROACHING" and  bus.getBusDistanceFromTarget(targetCoordinates) <= alertDistance:
                printableData = "ALERT! bus: "+str(map_actual_bus_numbers_to_colloquial_bus_numbers[bus.get_actual_number()])+" is near"
                #print type(printableData)
                #print printableData
            yield 'data: %s\n\n' % printableData
Ejemplo n.º 2
0
    def __init__(self, userRequest):
        if 'alertDistance' in userRequest:
            self.alertDistance = userRequest['alertDistance']
        if 'busList' in userRequest:
            self.busList = userRequest['busList']
        #if post data contains latitude it contains target co-ordinates
        if 'lat' in userRequest:
            self.targetCoordinates = (float(userRequest['lat']), float(userRequest['lng']))
        if 'city' in userRequest:
            self.city = userRequest['city']

        #TODO work on the direction of bus (would be specified by user)
        self.constantsObject = Constants()
        #TODO constants path :/ 
        self.constantsObject.load_constants("/Users/pushkarjoshi/constants.json")
        #Create bus operations object
        self.busOperationsObject = BusOperations(self.constantsObject, self.city)
        #Create route object
        self.routeObject = Route(self.constantsObject, self.city)
Ejemplo n.º 3
0
class TripleMapClient:

    alertDistance = 0.3
    busList = []
    targetCoordinates = (39.17155659473131, -86.50890111923218)
    city = "IUB"
    #interface = Interface()

    def __init__(self, userRequest):
        if 'alertDistance' in userRequest:
            self.alertDistance = userRequest['alertDistance']
        if 'busList' in userRequest:
            self.busList = userRequest['busList']
        #if post data contains latitude it contains target co-ordinates
        if 'lat' in userRequest:
            self.targetCoordinates = (float(userRequest['lat']), float(userRequest['lng']))
        if 'city' in userRequest:
            self.city = userRequest['city']

        #TODO work on the direction of bus (would be specified by user)
        self.constantsObject = Constants()
        #TODO constants path :/ 
        self.constantsObject.load_constants("/Users/pushkarjoshi/constants.json")
        #Create bus operations object
        self.busOperationsObject = BusOperations(self.constantsObject, self.city)
        #Create route object
        self.routeObject = Route(self.constantsObject, self.city)

    def pollDistance(self):
        #get the actual bus objects from the user specified name list
        pprint(self.busList)
        print '-'*20
        listOfActualBusNumbers = self.routeObject.get_actual_bus_numbers(self.busList)
        print '-'*20
        pprint(listOfActualBusNumbers)
        #Create bus objects
        listOfBusObjects = [] #Stores list of all bus objects
        for actualNumber in listOfActualBusNumbers:
            busObject = Bus(self.constantsObject)
            busObject.set_actual_number(actualNumber)
            listOfBusObjects.append(busObject)
        #Create a map of actual to colloquial bus numbers
        map_actual_bus_numbers_to_colloquial_bus_numbers = self.routeObject.get_colloquial_bus_numbers_from_actual_bus_numbers()

        while True:
            time.sleep(2) #sleep for 2 second before updating status of each bus
            listOfBusObjects = self.busOperationsObject.updateBusStatus(listOfBusObjects)
            #check which buses are approaching, then track them or show them or whatever
            for bus in listOfBusObjects:
                status = bus.getBusMovementAgainstTarget(self.targetCoordinates)
                if status == self.constantsObject.APPROACHING:
                    status = "APPROACHING"
                elif status == self.constantsObject.LEAVING:
                    status = "LEAVING"
                else:
                    status = "STOPPED"
                currentDist = bus.getBusDistanceFromTarget(self.targetCoordinates)
                if currentDist <= 0.4:
                    #send notification & remove it from the list
                    #TODO sending notification to the client
                    listOfBusObjects.remove(bus)
                    yield bus.get_colloquial_number()
                print map_actual_bus_numbers_to_colloquial_bus_numbers[bus.get_actual_number()]," :",status, \
                " is at distance: ",bus.getBusDistanceFromTarget(self.targetCoordinates)," miles"
Ejemplo n.º 4
0
                " is at distance: ",bus.getBusDistanceFromTarget(self.targetCoordinates)," miles"



if __name__ == "__main__":

    #Input
    city = "IUB"
    #target location coordinates
    targetCoordinates = (39.17155659473131, -86.50890111923218)

    #Create constans object to fetch all constant values
    constantsObject = Constants()
    constantsObject.load_constants("constants.json")
    #Create bus operations object
    busOperationsObject = BusOperations(constantsObject, city)
    #Create route object
    routeObject = Route(constantsObject, city)
    #Create a map of actual to colloquial bus numbers
    map_actual_bus_numbers_to_colloquial_bus_numbers = routeObject.get_colloquial_bus_numbers_from_actual_bus_numbers()
    print "-"*50
    print map_actual_bus_numbers_to_colloquial_bus_numbers 
    print '-'*50
    
    #Make a list of bus objects
    listColloquialBusNumbers = ['3 College Mall / Bradford Place','6 Limited','9 Limited']
    listOfActualBusNumbers = routeObject.get_actual_bus_numbers(listColloquialBusNumbers)
    print "Colloquial no:",listColloquialBusNumbers
    print "Actual nos:",listOfActualBusNumbers
    #Create bus objects
    listOfBusObjects = [] #Stores list of all bus objects