def parse_result(r): data = r['data'] p = get_nested_value(data, 6, 84, 7, 1) time_zone = get_nested_value(data, 31, 1, 0, 0) timestamp = moment.utcnow().timezone(time_zone).replace(minutes=0, seconds=0) return dict(id=r['id'], data=dict(popularity=p, timestamp=str(timestamp)))
def parse_result(r): data = r['data'] lat = round(get_nested_value(data, 9, 2), 7) # 7 digits equals a precision of 1 cm lng = round(get_nested_value(data, 9, 3), 7) # 7 digits equals a precision of 1 cm # noinspection PyUnresolvedReferences h3_index = h3.geo_to_h3(lat, lng, POI_RESOLUTION) pb_id = get_nested_value(data, 10) return dict(query=r['query'], data=dict(location=dict(lat=lat, lng=lng), h3Index=h3_index, id=pb_id))
def search(query): """ Get the data for a given query string :param str query: String that is used for the search (name + address or place_id:{place_ide}) :return: The query string with its corresponding result """ url = 'https://www.google.de/search' params = { 'tbm': 'map', 'tch': 1, 'hl': 'en', 'q': query, 'pb': '!4m12!1m3!1d4005.9771522653964!2d-122.42072974863942!3d37.8077459796541!2m3!1f0!2f0!3f0!3m2!1i1125!2i976' '!4f13.1!7i20!10b1!12m6!2m3!5m1!6e2!20e3!10b1!16b1!19m3!2m2!1i392!2i106!20m61!2m2!1i203!2i100!3m2!2i4!5b1' '!6m6!1m2!1i86!2i86!1m2!1i408!2i200!7m46!1m3!1e1!2b0!3e3!1m3!1e2!2b1!3e2!1m3!1e2!2b0!3e3!1m3!1e3!2b0!3e3!' '1m3!1e4!2b0!3e3!1m3!1e8!2b0!3e3!1m3!1e3!2b1!3e2!1m3!1e9!2b1!3e2!1m3!1e10!2b0!3e3!1m3!1e10!2b1!3e2!1m3!1e' '10!2b0!3e4!2b1!4b1!9b0!22m6!1sa9fVWea_MsX8adX8j8AE%3A1!2zMWk6Mix0OjExODg3LGU6MSxwOmE5ZlZXZWFfTXNYOGFkWDh' 'qOEFFOjE!7e81!12e3!17sa9fVWea_MsX8adX8j8AE%3A564!18e15!24m15!2b1!5m4!2b1!3b1!5b1!6b1!10m1!8e3!17b1!24b1!' '25b1!26b1!30m1!2b1!36b1!26m3!2m2!1i80!2i92!30m28!1m6!1m2!1i0!2i0!2m2!1i458!2i976!1m6!1m2!1i1075!2i0!2m2!' '1i1125!2i976!1m6!1m2!1i0!2i0!2m2!1i1125!2i20!1m6!1m2!1i0!2i956!2m2!1i1125!2i976!37m1!1e81!42b1!47m0!49m1' '!3b1' } response = fetch_data(url, params) data = response.text.split('/*""*/')[0] jend = data.rfind('}') if jend >= 0: data = data[:jend + 1] jdata = json.loads(data)['d'] jdata = json.loads(jdata[4:]) # Get info from result array, has to be adapted if api changes data = get_nested_value(jdata, 0, 1, 0, 14) # Check second result if data is None: data = get_nested_value(jdata, 0, 1, 1, 14) return dict(query=query, data=data)
def parse_list(li): date = get_nested_value(li, 4) opening_time_hours = get_nested_value(li, 6, 0, 0) opening_time_minutes = get_nested_value(li, 6, 0, 1) closing_time_hours = get_nested_value(li, 6, 0, 2) closing_time_minutes = get_nested_value(li, 6, 0, 3) return dict( date=str(moment.date(date)), openingTime=str(moment.date(date).add( hours=opening_time_hours, minutes=opening_time_minutes )) if opening_time_hours is not None else None, closingTime=str(moment.date(date).add( days=1 if closing_time_hours < opening_time_hours else 0, # Necessary if closing at midnight or later hours=closing_time_hours, minutes=closing_time_minutes )) if closing_time_hours is not None else None )
def parse_result(r): data = r['data'][6] name = get_nested_value(data, 11) place_id = get_nested_value(data, 78) lat = round(get_nested_value(data, 9, 2), 7) # 7 digits equals a precision of 1 cm lng = round(get_nested_value(data, 9, 3), 7) # 7 digits equals a precision of 1 cm # noinspection PyUnresolvedReferences h3_index = h3.geo_to_h3(lat, lng, POI_RESOLUTION) address = get_nested_value(data, 2) timezone = get_nested_value(data, 30) categories = [t[0] for t in (get_nested_value(data, 76) or [])] opening_hours = parse_opening_hours(get_nested_value(data, 34, 1)) permanently_closed = get_nested_value(data, 88, 0) == 'CLOSED' temporarily_closed = get_nested_value(data, 96, 5, 0, 2) == 'Reopen this place' and not permanently_closed inside_of = get_nested_value(data, 93, 0, 0, 0, 1) phone = get_nested_value(data, 178, 0, 3) website = get_nested_value(data, 7, 0) rating_stars = get_nested_value(data, 4, 7) rating_number_of_reviews = get_nested_value(data, 4, 8) price_level = get_nested_value(data, 4, 2) popularity_data = get_nested_value(data, 84, 0) spending_time = parse_spending_time_data(get_nested_value(data, 117, 0)) popularity, waiting_time = None, None if popularity_data: popularity, waiting_time = parse_popularity_data(popularity_data, timezone) return dict( id=r['id'], data=dict( name=name, placeID=place_id, location=dict(lat=lat, lng=lng), h3Index=h3_index, address=address, timezone=timezone, categories=categories, temporarilyClosed=temporarily_closed, permanentlyClosed=permanently_closed, insideOf=inside_of, contact=dict(phone=phone, website=website), openingHours=opening_hours, rating=dict(stars=rating_stars, numberOfReviews=rating_number_of_reviews), priceLevel=len(price_level) if price_level else None, popularity=popularity, waitingTime=waiting_time, spendingTime=spending_time ) )