У меня есть код, который собирает данные с 3 датчиков. Данные представлены в формате JSON, но в то же время они не будут работать. По одному, когда я комментирую другие 2, данные появляются. На веб-сайте PurpleAir говорится, что нужно выполнить только несколько запросов, иначе брандмауэр заблокирует ваш запрос. Можно ли получить прокси или другой способ получить эту информацию?
Я пытался найти информацию в Интернете, но безуспешно
<html>
<head>
<title>AQI for the Tahoe Basin</title>
</head>
<body>
<h1>AQI for the Tahoe Basin</h1>
<p>Incline Village: <span id="IV"></span></p>
<p>Homewood: <span id="HW"></span></p>
<p>Tahoe Keys: <span id="TK"></span></p>
<script>
const getData = () =>
fetch('https://www.purpleair.com/json?show=13165')
.then(serverResponse => serverResponse.json())
.then(apiResultObject => apiResultObject.results[0])
.then(result => JSON.parse(result.Stats))
.then(stat => stat.v)
getData()
.then(vs => document.getElementById('IV').innerHTML = aqiFromPM(vs))
const getData = () =>
fetch('https://www.purpleair.com/json?show=4452')
.then(serverResponse => serverResponse.json())
.then(apiResultObject => apiResultObject.results[0])
.then(result => JSON.parse(result.Stats))
.then(stat => stat.v)
getData()
.then(vs => document.getElementById('HW').innerHTML = vs)
const getData = () =>
fetch('https://www.purpleair.com/json?show=18421')
.then(serverResponse => serverResponse.json())
.then(apiResultObject => apiResultObject.results[0])
.then(result => JSON.parse(result.Stats))
.then(stat => stat.v)
getData()
.then(vs => document.getElementById('TK').innerHTML= aqiFromPM(vs))
function aqiFromPM(pm) {
if (isNaN(pm)) return "-";
if (pm == undefined) return "-";
if (pm < 0) return pm;
if (pm > 1000) return "-";
/*
Good 0 - 50
0.0 - 15.0 0.0 – 12.0
Moderate 51 - 100
>15.0 - 40 12.1 – 35.4
Unhealthy for Sensitive Groups 101 – 150 >40 – 65
35.5 – 55.4
Unhealthy 151 – 200
> 65 – 150 55.5 – 150.4
Very Unhealthy 201 – 300 > 150 – 250
150.5 – 250.4
Hazardous 301 – 400
> 250 – 350 250.5 – 350.4
Hazardous 401 – 500
> 350 – 500 350.5 – 500
*/
if (pm > 350.5) {
return calcAQI(pm, 500, 401, 500, 350.5);
} else if (pm > 250.5) {
return calcAQI(pm, 400, 301, 350.4, 250.5);
} else if (pm > 150.5) {
return calcAQI(pm, 300, 201, 250.4, 150.5);
} else if (pm > 55.5) {
return calcAQI(pm, 200, 151, 150.4, 55.5);
} else if (pm > 35.5) {
return calcAQI(pm, 150, 101, 55.4, 35.5);
} else if (pm > 12.1) {
return calcAQI(pm, 100, 51, 35.4, 12.1);
} else if (pm >= 0) {
return calcAQI(pm, 50, 0, 12, 0);
} else {
return undefined;
}
}
function calcAQI(Cp, Ih, Il, BPh, BPl) {
var a = (Ih - Il);
var b = (BPh - BPl);
var c = (Cp - BPl);
return Math.round((a/b) * c + Il);
}
</script>
</body>
</html>
'''