From 373c88302710365552d204bd8c7c71a308b56f97 Mon Sep 17 00:00:00 2001 From: lanxu Date: Sat, 7 May 2022 15:29:37 +0300 Subject: [PATCH] Re-enable PenaTemperatures and improve reliability --- plugins/weather.js | 56 ++++++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/plugins/weather.js b/plugins/weather.js index 25a88b5..faacb39 100644 --- a/plugins/weather.js +++ b/plugins/weather.js @@ -4,7 +4,7 @@ var BasePlugin = require('./base.js') const logger = require('../logger') class Weather extends BasePlugin { - constructor (config) { + constructor(config) { super(config) this.name = 'Weather' @@ -31,19 +31,19 @@ class Weather extends BasePlugin { } } - help () { + help() { // | Command | Description return '.saa Antaa sään maapallon tärkeimmistä sijainneista' } - test (input) { + test(input) { if (input.match(/^\.saa(.*)/i)) { return true } return false } - getTemperature (city, code) { + getTemperature(city, code) { var language = 'fi' var urlArgs = { @@ -57,7 +57,7 @@ class Weather extends BasePlugin { return promise } - getTemperatures (cities, code) { + getTemperatures(cities, code) { logger.info('getting temperatures ', cities, code) if (typeof code === 'undefined') { code = 'fi' @@ -76,11 +76,13 @@ class Weather extends BasePlugin { 'APPID': this.apikey } var url = 'http://api.openweathermap.org/data/2.5/group' - var promise = requestPromise(url, urlArgs) + var promise = requestPromise(url, urlArgs).catch(e => { + logger.error('Failed to retrieve openweathermap data') + }) return promise } - getPenaTemperatures (start, stop, limit) { + getPenaTemperatures(start, stop, limit) { logger.info('getting pena', start, stop, limit) var urlArgs = {} @@ -96,41 +98,47 @@ class Weather extends BasePlugin { urlArgs.stop = stop } - var url = 'http://masa.dy.fi/api/temperature.php' + var url = 'https://masa.dy.fi/api/temperature.php' - var promise = requestPromise(url, urlArgs) + var promise = requestPromise(url, urlArgs).catch(e => { + logger.error('Failed to retrieve pena temperatures data') + }) return promise } - getTemperatureString (owmCityIds) { + getTemperatureString(owmCityIds) { let that = this var promise = new Promise(function (resolve, reject) { Promise.all([ that.getTemperatures(owmCityIds), - // that.getPenaTemperatures() + that.getPenaTemperatures() ]).then(function (results) { var resultString = '' // OWM - results[0].list.forEach(function (data) { - var city = data.name - var temp = (data.main.temp - 273.15).toFixed(1) - var code = data.weather[0].icon - - resultString += '' + city + ' (' + temp + ' °C, ' + that.iconCodeToText[code] + '), ' - }) - - /*if (results[1].length > 0) { - var temp = Number(results[1][0].temp).toFixed(1) - resultString += 'Aura (' + temp + ' °C)' - }*/ + let weatherData = [] + if (results[0] !== undefined) { + results[0].list.forEach((data) => { + var city = data.name + var temp = (data.main.temp - 273.15).toFixed(1) + var code = data.weather[0].icon + weatherData.push(city + ' (' + temp + ' °C, ' + that.iconCodeToText[code] + ')') + }) + } + if (results[1] !== undefined) { + if (results[1].length > 0) { + var temp = Number(results[1][0].temp).toFixed(1) + weatherData.push('Aura (' + temp + ' °C)') + } + } + resultString = weatherData.join(', ') resolve(resultString) }, (str) => reject(str)) }) return promise } - result (input) { + result(input) { // Different cases let that = this