Получение погодных данных с разных метеостанций
-
Используем API wunderground. Сначала открываете карту: https://www.wunderground.com/wundermap?lat=37.769699&lon=-122.393303&zoom=10&type=terrain&tl.play=0&tl.spd=2&extremes=0&fault=0&femaflood=0&fire=0&firewfas=0&fissures=0&fronts=0&hurrevac=0&hur=0&lightning=0&livesurge=0&mm=0&ndfd=0&rad=1&rad.num=1&rad.spd=25&rad.opa=81&rad.type=00Q&rad.type2=&rad.smo=1&rad.stm=0&dir=1&dir.mode=driving&sst=0&sat=0&seismicrisk=0&svr=0&ski=0&snowfall=0&stormreports=0&tor=0&tfk=0&tsunami=0&riv=0&wxsn=1&wxsn.mode=temp&wxsn.opa=50&wxsn.bcdgtemp=0&wxsn.rf=1&cams=0&pix=0
Выбираете ближайшие к себе погоднуе станции: https://www.wunderground.com/dashboard/pws/IFIRSANO5
Там, нажимаем F12 выбираем ссылку на API по которому берутся данные и которые можно регулярным выражением разобрать:
https://api.weather.com/v2/pws/observations/current?apiKey=6532d6454b8aa370768e63d6ba5a832e&stationId=IFIRSANO5&format=json&units=e
Это проделываем для всех погодных станций.
Далее в сниппете обращаемся ко всем погодным станциям в порядке возрастания приоритета. Таким образом, в устройство попадет информация с ближайшей доступной метеостанции./** * New snippet */ module.exports = callback => { const cookie = /pressure":(\d*.\d*)/gm; require('https').get('https://api.weather.com/v2/pws/observations/current?apiKey=6532d6454b8aa370768e63d6ba5a832e&stationId=IMOSCOW303&numericPrecision=decimal&format=json&units=m', res => { if (res.statusCode == 200) { let rawData = ''; res.on('data', chunk => { rawData += chunk; }); res.on('end', () => { const arr = cookie.exec(rawData); if (arr && arr.length>1) { callback(null, arr[1]); // Данные получены, парсинг удачен loc = 'z'; } }); } }); require('https').get('https://api.weather.com/v2/pws/observations/current?apiKey=6532d6454b8aa370768e63d6ba5a832e&stationId=IMOSCOWO2&numericPrecision=decimal&format=json&units=m', res => { if (res.statusCode == 200) { let rawData = ''; res.on('data', chunk => { rawData += chunk; }); res.on('end', () => { const arr = cookie.exec(rawData); if (arr && arr.length>1) { callback(null, arr[1]); // Данные получены, парсинг удачен loc = 'i'; } }); } }); require('https').get('https://api.weather.com/v2/pws/observations/current?apiKey=6532d6454b8aa370768e63d6ba5a832e&stationId=IFIRSANO5&format=json&units=m', res => { if (res.statusCode == 200) { let rawData = ''; res.on('data', chunk => { rawData += chunk; }); res.on('end', () => { const arr = cookie.exec(rawData); if (arr && arr.length>1) { callback(null, arr[1]); // Данные получены, парсинг удачен loc = 'd'; } }); } }); };