def get_data_from_auto_complete(text, lang="en"): payload = {'languagecode': lang, "text": text} uri = "/bookings.autocomplete" data = get_booking_api_response(uri, payload) get_cities_id_list = set() for i in data: if i["city_ufi"]: get_cities_id_list.add(i["city_ufi"]) return list(get_cities_id_list)
def get_data_from_auto_complete(text, lang="en"): payload = {'languagecode': lang, "text": text} uri = "/bookings.autocomplete" data = get_booking_api_response(uri, payload) get_cities_id_list = [] for i in data: if "longitude" not in i or "latitude" not in i: continue get_cities_id_list.append({ "longitude": i["longitude"], "latitude": i["latitude"], }) return get_cities_id_list[0]
def get_data_from_hotels(cities, limits=3, lang="en"): payload = { 'languagecode': lang, "rows": limits, "city_ids": ",".join(cities) } uri = "/bookings.getHotels" data = get_booking_api_response(uri, payload) get_hotels_id = [] for i in data: get_hotels_id.append(i["hotel_id"]) return get_hotels_id
def main(place, checkin, checkout, stars=1, min_review_score=1, min_price=50, max_price=2000): pos = get_data_from_auto_complete(place) payload = { "checkin": checkin, "checkout": checkout, "longitude": pos["longitude"], "latitude": pos["latitude"], "room1": "A,A", "min_price": int(min_price), "max_price": int(max_price), "output": "hotel_details", "rows": 1, "stars": stars, "min_review_score": min_review_score, "radius": 50, "order_by": "price", "currency_code": "TWD" } uri = "/getHotelAvailabilityV2" data = get_booking_api_response(uri, payload) if not data: return None hotel_id = data["hotels"][0]["hotel_id"] price = data["hotels"][0]["price"] hotel_name = data["hotels"][0]["hotel_name"] review_score = data["hotels"][0]["review_score"] photos = [get_hotels_photo(hotel_id)[0],get_hotels_photo(hotel_id)[1],get_hotels_photo(hotel_id)[2]] url = get_hotels_url_by_id(hotel_id) return { "title": hotel_name, "subtitle": "review_score: {review_score}, price: {price}".format(review_score=review_score, price=price), "image_urls": photos, "hotel_url": url, "hotel_id": hotel_id }
def get_hotels(hotels, arrival_date, departure_date): uri = "/bookings.getBlockAvailability" payload = { 'arrival_date': arrival_date, "departure_date": departure_date, "hotel_ids": ",".join(hotels) } data = get_booking_api_response(uri, payload) result = [] for i in data: hotel_id = i["hotel_id"] currency = "" min_prices = [] for b in i["block"]: min_prices.append(b["min_price"]["price"]) currency = b["min_price"]["currency"] result.append({ "hotel_id": hotel_id, "currency": currency, "min_price": sorted(min_prices)[0] # lowest price }) return result
def get_hotels_photo(hotel): payload = {"hotel_ids": hotel} uri = "/bookings.getHotelDescriptionPhotos" data = get_booking_api_response(uri, payload) return [i["url_original"] for i in data]
def get_hotels_url_by_id(hotel_ids, lang="en"): payload = {'languagecode': lang, "hotel_ids": hotel_ids} uri = "/bookings.getHotels" data = get_booking_api_response(uri, payload) return [i["url"] for i in data]