def set_event_details(e_id, name, date, city, add, descr, host, url, attendees, price, category, source): event1 = Event() qry = event1.check_event_exist(e_id) or event1.check_event_exist_by_name(name) if qry is False: event1.id = e_id event1.name = name event1.date = date event1.city = city event1.address = add event1.description = descr event1.host = host event1.event_url = url event1.source = source if (attendees != "Unknown"): event1.attendees = attendees event1.price = price if category is not None: event1.category = category key = event1.put() return key else: # Update existing meetings! It could be changed or canceled! qry.name = name qry.date = date qry.city = city qry.address = add qry.description = descr qry.host = host qry.event_url = url qry.source = source qry.price = price if category is not None: qry.category = category results = Attendings.query(Attendings.event_id == qry.get_by_id(e_id)) if results is not None: qry.attendees = attendees + results.count() else: qry.attendees = attendees qry.put()
def extract(self): connector = self.get_connector() i = 0 for key, res in self.data.items(): res_key = self.create_key(res['name'], res['city']) connector_res = get_from(connector.data, [res_key], {}) res.update(connector_res) place_id = get_from(res, ['place_id']) if place_id: print("Found {} | {} => {}".format(i, place_id, res_key)) if res_key not in connector.data or res != connector.data[ res_key]: "\tUpdate" connector.data[res_key] = res db_session.merge(connector) db_session.commit() pass else: place_q = ", ".join([ res['name'] or "", get_from(res, ['address'], ""), res['city'] or "" ]) print("!!!GEOCODE!!! {} | {} => {}".format( i, res_key, place_q)) try: results = self.client.find_place( input=place_q, input_type='textquery', fields=["place_id", "name", "formatted_address"]) res_data = get_from(results, ['candidates', 0], {}) res_addr = get_from(res_data, ['formatted_address']) if 'formatted_address' in res_data: del res_data["formatted_address"] if res_addr: res_data["address"] = res_addr res.update(res_data) connector.data[res_key] = res db_session.merge(connector) db_session.commit() except Exception as e: print("\t!!!ERROR!!! => {}".format(e)) print("\t{}".format(res)) i += 1 i = 0 for key, res in self.data.items(): place_id = get_from(res, ['place_id']) if not place_id: continue ev = Event.query.filter( or_(Event.name == res['name'], Event.alias == place_id)).first() if ev: print("Found Event({}) => {}".format(place_id, res['name'])) else: print("Create Event({}) => {}".format(place_id, res['name'])) print("\t{}".format(res)) ev = Event(name=res['name'], alias=res['place_id']) # print(i, json.dumps(res, indent=2)) i += 1 ev.primary_type = Tag.FOOD_DRINK ev.address = get_from(res, ['address']) ev.city = res['city'] ev.state = get_from(res, ['state']) if not ev.meta: ev.meta = {} ev.meta[self.TYPE] = res db_session.merge(ev) db_session.commit()