Add rain information
This commit is contained in:
38
dark-sky.js
38
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 => {})
|
||||
|
||||
Reference in New Issue
Block a user