Есть ли способ получить 3 запроса от фиолетового сервера одновременно, не будучи заблокированным? - PullRequest
0 голосов
/ 03 июля 2019

У меня есть код, который собирает данные с 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>
'''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...