bodegAI/utils/weather_utils.js
2024-11-05 21:28:29 -06:00

66 lines
1.8 KiB
JavaScript

const axios = require('axios');
const getCoordinates = async (city) => {
try {
const response = await axios.get('https://nominatim.openstreetmap.org/search', {
params: {
q: city,
format: 'json',
limit: 1
},
headers: {
'User-Agent': 'WhatsApp-Bot/1.0 (josuedavidvl18@gmail.com)' // Reemplaza con tu email
}
});
if (response.data.length === 0) {
throw new Error('Ciudad no encontrada.');
}
const { lat, lon } = response.data[0];
return { latitude: lat, longitude: lon };
} catch (error) {
throw new Error(`Error al obtener coordenadas: ${error.message}`);
}
};
const translateWeatherCode = (code) => {
const weatherCodes = {
0: 'Cielo despejado',
1: 'Parcialmente nublado',
2: 'Nublado',
3: 'Cubierto',
45: 'Niebla',
48: 'Depositos de escarcha',
51: 'Llovizna ligera',
53: 'Llovizna moderada',
55: 'Llovizna densa',
56: 'Llovizna helada ligera',
57: 'Llovizna helada densa',
61: 'Lluvia ligera',
63: 'Lluvia moderada',
65: 'Lluvia fuerte',
66: 'Lluvia helada ligera',
67: 'Lluvia helada fuerte',
71: 'Nevada ligera',
73: 'Nevada moderada',
75: 'Nevada fuerte',
77: 'Aguanieve',
80: 'Chubascos ligeros',
81: 'Chubascos moderados',
82: 'Chubascos intensos',
85: 'Aguanieve ligera',
86: 'Aguanieve fuerte',
95: 'Tormenta',
96: 'Tormenta con granizo ligero',
99: 'Tormenta con granizo fuerte'
};
return weatherCodes[code] || 'Desconocido';
};
module.exports = {
getCoordinates,
translateWeatherCode
};