예제 #1
0
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)
예제 #2
0
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]
예제 #3
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
예제 #4
0
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
    }
예제 #5
0
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
예제 #6
0
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]
예제 #7
0
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]