Exemplo n.º 1
0
    def __init__(self, city):

        Thread.__init__(self)
        self.daemon = True

        self.name = "car2go " + city
        self.city = city

        doc = dbp.find_last("snapshots", {
            "provider": "car2go",
            "city": self.city
        }).next()
        self.last_time = doc["timestamp"]
        self.last = pd.DataFrame(
            doc["snapshot"]["placemarks"]).set_index("name")
        self.last = pre_process(self.last)
        self.fleet = self.last.index

        self.active_parkings = pd.DataFrame(columns=start_cols,
                                            index=self.last.index)
        self.active_parkings["start_time"] = datetime.datetime.now()
        self.active_parkings["latitude"] = self.last.latitude
        self.active_parkings["longitude"] = self.last.longitude

        self.active_bookings = pd.DataFrame(columns=start_cols, index=[])
Exemplo n.º 2
0
    def run(self):

        while True:

            doc = dbp.find_last("bookings", {"city": self.city}).next()
            self.current_time = doc["timestamp"]
            self.current = pd.DataFrame(doc["bookings"])

            if not self.current.equals(self.last):
                print self.current

            self.last = self.current
            time.sleep(10)


#Google_Manager("torino").start()
Exemplo n.º 3
0
    def __init__(self, city):

        Thread.__init__(self)
        self.daemon = True

        self.name = "google"
        self.city = city

        self.keys = pd.Series(["key1", "key2"])

        self.current_key = 0
        self.start_session()

        doc = dbp.find_last("bookings", {"city": self.city}).next()
        self.last_time = doc["timestamp"]
        self.last = pd.DataFrame(doc["bookings"])
Exemplo n.º 4
0
    def __init__(self, city):

        self.name = "enjoy " + city
        self.city = city

        doc = dbp.find_last("snapshots", {
            "provider": "enjoy",
            "city": self.city
        }).next()
        self.last_time = doc["timestamp"]
        self.last = pd.DataFrame(doc["snapshot"]).set_index("car_plate")
        self.last = pre_process(self.last)
        self.fleet = self.last.index

        self.active_parkings = pd.DataFrame(columns=start_cols,
                                            index=self.last.index)
        self.active_parkings["start_time"] = datetime.datetime.now()
        self.active_parkings["latitude"] = self.last.latitude
        self.active_parkings["longitude"] = self.last.longitude
        self.active_parkings["fuel"] = self.last.fuel

        self.active_bookings = pd.DataFrame(columns=start_cols, index=[])
Exemplo n.º 5
0
    def check(self):

        try:
            doc = dbp.find_last("snapshots", {
                "provider": "enjoy",
                "city": self.city
            }).next()
            self.current_time = doc["timestamp"]
            self.current = pd.DataFrame(doc["snapshot"]).set_index("car_plate")
            self.current = pre_process(self.current)
        except:
            print "Exception in " + self.name
            print_exception()

        if not self.current.equals(self.last):

            # Detect new cars
            #                print "Fleet"
            #                print self.fleet.shape
            self.new_cars = self.current.index.difference(self.fleet)
            #                print self.new_cars.shape

            # Indexes creation
            #                print "Status"
            self.still_parked = self.fleet.intersection(self.current.index)
            self.just_booked = self.active_parkings.index.difference(
                self.current.index).intersection(self.fleet)
            self.just_parked = self.current.index.intersection(
                self.fleet).difference(self.active_parkings.index)
            #                print self.still_parked.shape
            #                print self.just_booked.shape
            #                print self.just_parked.shape

            # - New parkings
            self.active_parkings = pd.concat(
                [self.active_parkings,
                 pd.DataFrame(index=self.just_parked)])
            self.active_parkings.loc[self.just_parked, "start_time"] = \
                                  self.current_time
            self.active_parkings.loc[self.just_parked,"latitude"] = \
                                  self.current.loc[self.just_parked, "latitude"].values
            self.active_parkings.loc[self.just_parked,"longitude"] = \
                                  self.current.loc[self.just_parked, "longitude"].values
            self.active_parkings.loc[self.just_parked,"fuel"] = \
                                  self.current.loc[self.just_parked, "fuel"].values

            # - New bookings
            self.active_bookings = pd.concat(
                [self.active_bookings,
                 pd.DataFrame(index=self.just_booked)])
            self.active_bookings.loc[self.just_booked, "start_time"] = \
                                  self.current_time
            self.active_bookings.loc[self.just_booked,"latitude"] = \
                                  self.active_parkings.loc[self.just_booked, "latitude"].values
            self.active_bookings.loc[self.just_booked,"longitude"] = \
                                  self.active_parkings.loc[self.just_booked, "longitude"].values
            self.active_bookings.loc[self.just_booked,"start_fuel"] = \
                                  self.active_parkings.loc[self.just_booked, "fuel"].values

            # - Parkings terminated
            def record_parking(parkings):
                parkings["end_time"] = datetime.datetime.now()
                recorded = parkings.T.to_dict()
                if len(recorded.keys()):
                    record = {
                        "provider": "enjoy",
                        "city": self.city,
                        "timestamp": datetime.datetime.now(),
                        "parkings": recorded
                    }
                    dbp.insert("parkings", record)

            record_parking(self.active_parkings.loc[self.just_booked])
            self.active_parkings.drop(self.just_booked, inplace=True)

            self.last = self.current
            self.last_time = self.current_time

            # - Bookings terminated
            def record_booking(bookings):
                bookings["end_time"] = datetime.datetime.now()
                bookings["end_fuel"] = self.current.loc[bookings.index,
                                                        "fuel"].values
                bookings["end_latitude"] = self.current.loc[bookings.index,
                                                            "latitude"].values
                bookings["end_longitude"] = self.current.loc[
                    bookings.index, "longitude"].values
                recorded = bookings.T.to_dict()
                if len(recorded.keys()):
                    record = {
                        "provider": "enjoy",
                        "city": self.city,
                        "timestamp": datetime.datetime.now(),
                        "bookings": recorded
                    }
                    dbp.insert("bookings", record)

            record_booking(
                self.active_bookings.loc[self.just_parked.intersection(
                    self.active_bookings.index)])
            self.active_bookings.drop(self.just_parked.intersection(
                self.active_bookings.index),
                                      inplace=True)

            # - Update fleet
            self.fleet = self.fleet.union(self.current.index)