diff --git a/dark-sky.js b/dark-sky.js index 8c0f08e..3299358 100644 --- a/dark-sky.js +++ b/dark-sky.js @@ -11,7 +11,10 @@ const TABLE_CONFIG = { // }, border: getBorderCharacters(`ramac`) } -const CREDIT_MSG = "Powered by Dark Sky: https://darksky.net/poweredby/" +const HIDE_PRECIP_LESS_THAN = 10 +// const CREDIT_MSG = "Powered by Dark Sky: https://darksky.net/poweredby/" +// const CREDIT_MSG = "https://darksky.net/poweredby • https://smol.gq/wthr-src\n" +const CREDIT_MSG = "darksky.net/poweredby • smol.gq/wthr-src\n" // https://medium.com/@osiolabs/read-write-json-files-with-node-js-92d03cc82824 const jsonReader = (filePath, cb) => { @@ -28,6 +31,8 @@ const jsonReader = (filePath, cb) => { }) } +const round5 = x => { return Math.ceil(x / 5) * 5 } + const logWeatherJson = (jsonFile, loc) => { return new Promise((resolve, reject) => { jsonReader(jsonFile, (err, weatherInfo) => { @@ -37,34 +42,44 @@ const logWeatherJson = (jsonFile, loc) => { log(loc) + weatherInfo['hourly']['data'][0] = weatherInfo['currently'] if (argv.v) { - const infoList = [['H', '°C', '%P']] + const infoList = [['H', '°C', 'R','%P']] for (let i = 0; i < 12; i++) { const hourInfo = weatherInfo['hourly']['data'][i] const date = new Date(hourInfo['time'] * 1000) - infoList.push([date.getHours(), + const precipProbability = round5(hourInfo['precipProbability'] * 100) + const precipText = ((precipProbability < HIDE_PRECIP_LESS_THAN) + ? '' : precipProbability) + infoList.push([ + date.getHours(), Math.floor(hourInfo['apparentTemperature']), - Math.floor(hourInfo['precipProbability'])]) + ((hourInfo['summary'].includes('Rain')) ? 'Y' : ''), + precipText, + ]) } log(table(infoList, TABLE_CONFIG)); } else { // horizontal const hoursList = ['H'] const tempsList = ['°C'] + const rainList = ['R'] const precipList = ['%P'] for (let i = 0; i < 16; i += 2) { const hourInfo = weatherInfo['hourly']['data'][i] const date = new Date(hourInfo['time'] * 1000) hoursList.push(date.getHours()) tempsList.push(Math.floor(hourInfo['apparentTemperature'])) - const precipProbability = Math.floor(hourInfo['precipProbability']) - precipList.push((precipProbability < 20) ? '' : precipProbability) + rainList.push((hourInfo['summary'].includes('Rain')) ? 'Y' : '') + const precipProbability = round5(hourInfo['precipProbability'] * 100) + precipList.push((precipProbability < HIDE_PRECIP_LESS_THAN) + ? '' : precipProbability) } const maxTempIndex = tempsList.indexOf(Math.max(...tempsList.slice(1))) const minTempIndex = tempsList.indexOf(Math.min(...tempsList.slice(1))) tempsList[maxTempIndex] = `${tempsList[maxTempIndex]}+` tempsList[minTempIndex] = `${tempsList[minTempIndex]}-` - log(table([hoursList, tempsList, precipList], TABLE_CONFIG)); + log(table([hoursList, tempsList, rainList, precipList], TABLE_CONFIG)); } resolve() }) @@ -72,14 +87,9 @@ const logWeatherJson = (jsonFile, loc) => { } const formatTimeUnit = unit => { return ((unit < 10) ? '0' : '') + unit } - +log(CREDIT_MSG) logTablePromises = [ logWeatherJson('./toronto.json', 'Toronto'), logWeatherJson('./markham.json', 'Markham'), ] -Promise.all(logTablePromises).then(results => { - // const now = new Date() - // const lastUpdatedTime = `${formatTimeUnit(now.getHours())}:${formatTimeUnit(now.getMinutes())}` - // log(`${CREDIT_MSG}\n\nLast updated: ${lastUpdatedTime}`) - log(CREDIT_MSG) -}) +Promise.all(logTablePromises).then(results => {})