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=[])
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()
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"])
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=[])
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)