66 lines
1.8 KiB
JavaScript
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
|
|
};
|