def retrieve_destinations(origin, budget_query, departure_date, duration): # Query for flights via Amadeus flights = Flights(AMADEUS_API_KEY) # Find flights from origin origin_iata = flights.auto_complete(term=origin)[0]['value'] r = flights.inspiration_search(origin=origin_iata, departure_date=departure_date, max_price=budget_query, duration=duration) # Cap number of experiences results = r['results'][:NUM_EXPERIENCES] # Map IATA codes from Amadeus API to human-readable places destinations = [] for iata in results: destination = IATA2CITY.get(iata['destination'], None) if destination is not None: # Return a tuple of HRF city, dates, and price of flight destinations.append((destination, origin_iata, iata['destination'], iata['departure_date'], iata['return_date'], float(iata['price']))) return destinations
def GenerateListsFromCity(ciudadElegidaUsuario, primerDiaPosibleSalida, ultimoDiaPosibleSalida, duracion, currencyByUser): # importamos los modulos necesarios de amadeus y le pasamos la pw from amadeus import Flights flights = Flights('fdNSGaHphktgPWytHqHqBVhcQVVs4uVr') from amadeus import Hotels hotels = Hotels('fdNSGaHphktgPWytHqHqBVhcQVVs4uVr') #aseguramos que las fechas van con guiones primerDiaPosibleSalida_Corregido = primerDiaPosibleSalida.replace("/", "-") ultimoDiaPosibleSalida_Corregido = ultimoDiaPosibleSalida.replace("/", "-") #calculo fecha regreso <- de momento no se emplea primerDiaPosibleSalida_datetime = datetime.datetime.strptime( primerDiaPosibleSalida, '%Y-%m-%d') primerDiaPosibleVuelta_datetime = primerDiaPosibleSalida_datetime + datetime.timedelta( days=duracion) primerDiaPosibleVuelta = (str(primerDiaPosibleVuelta_datetime)[:10]) ultimoDiaPosibleSalida_datetime = datetime.datetime.strptime( ultimoDiaPosibleSalida, '%Y-%m-%d') ultimoDiaPosibleVuelta_datetime = ultimoDiaPosibleSalida_datetime + datetime.timedelta( days=duracion) ultimoDiaPosibleVuelta = (str(ultimoDiaPosibleVuelta_datetime)[:10]) #Obtener codigo ciudad salida respCity = flights.auto_complete(term=ciudadElegidaUsuario) print(respCity) codigoCiudadSalida = respCity[0]['value'] print("Buscando vuelos desde", codigoCiudadSalida) # Buscar vuelos flights = Flights('fdNSGaHphktgPWytHqHqBVhcQVVs4uVr') respVuelos = flights.inspiration_search( origin=codigoCiudadSalida, departure_date=primerDiaPosibleSalida_Corregido + "--" + ultimoDiaPosibleSalida_Corregido, duration=6, max_price=200) print(respVuelos) # Generar listas con resultados listadoDestinosNfila = [] listadoDestinosLargo = [] listadoDestinosCodigo = [] listadoDestinosFechaSalida = [] listadoDestinosFechaVuelta = [] listadoDestinosPrecioVuelo = [] listadoDestinosLats = [] listadoDestinosLons = [] listadoDestinosPais = [] listadoDestinosPrecioHoteles = [] #for i in range (len(respVuelos['results'])): # print(RecuperarNumeroFromIataCode(respVuelos['results'][i]['destination']),respVuelos['results'][i]['destination'],respVuelos['results'][i]['price']) for i in range(len(respVuelos['results'])): print(i) posicionEnListas = RecuperarNumeroFromIataCode( respVuelos['results'][i]['destination']) listadoDestinosNfila.append(posicionEnListas) listadoDestinosLargo.append( listaMunicipalityAirports[posicionEnListas]) listadoDestinosCodigo.append(respVuelos['results'][i]['destination']) listadoDestinosFechaSalida.append( respVuelos['results'][i]['departure_date']) listadoDestinosFechaVuelta.append( respVuelos['results'][i]['return_date']) listadoDestinosPrecioVuelo.append(respVuelos['results'][i]['price']) listadoDestinosLats.append(listaLatsAirports[posicionEnListas]) listadoDestinosLons.append(listaLongsAirports[posicionEnListas]) listadoDestinosPais.append(listaCountryAirports[posicionEnListas]) #print("inciando busqueda hotel cerca de",listaLatsAirports[posicionEnListas],",",listaLongsAirports[posicionEnListas] ) respHoteles = hotels.search_circle( check_in=respVuelos['results'][i]['departure_date'], check_out=respVuelos['results'][i]['return_date'], latitude=float(listaLatsAirports[posicionEnListas]), longitude=float(listaLongsAirports[posicionEnListas]), currency=currencyByUser, radius=30) #km from coordenates=km from airport #print(respHoteles) precioMedioHoteles = 0 numeroHotelesConsiderar = min( len(respHoteles['results']), 5) #max number of hotels to consider in mean price if numeroHotelesConsiderar == 0: precioMedioHoteles = 1000 * duracion else: for h in range(numeroHotelesConsiderar): precioDeCadaHotel = respHoteles['results'][h]['total_price'][ 'amount'] # print(precioDeCadaHotel) # print(respHoteles['results'][h]['location']['latitude']) # print(respHoteles['results'][h]['location']['longitude']) precioMedioHoteles = precioMedioHoteles + float( precioDeCadaHotel) precioMedioHoteles = round( precioMedioHoteles / numeroHotelesConsiderar, 2) listadoDestinosPrecioHoteles.append(precioMedioHoteles) return (listadoDestinosNfila, listadoDestinosLargo, listadoDestinosCodigo, listadoDestinosFechaSalida, listadoDestinosFechaVuelta, listadoDestinosPrecioVuelo, listadoDestinosLats, listadoDestinosLons, listadoDestinosPais, listadoDestinosPrecioHoteles)