main.js 6.27 KB
// api에서 데이터 불러오기

var xml2js = require('xml-js');
var urlencode = require('urlencode');
var xmlToJson;

//var Dust_Month=0;

var Feb_Dust_2018 =0 ;
var Mar_Dust_2018 =0 ;
var April_Dust_2018 =0 ;
var May_Dust_2018 =0 ;
var June_Dust_2018 =0 ;
var Feb_Dust_2019 =0 ;
var Mar_Dust_2019 =0 ;
var April_Dust_2019 =0 ;
var May_Dust_2019 =0 ;
var June_Dust_2019 =0 ;
var Feb_Dust_2020 =0 ;
var Mar_Dust_2020 =0 ;
var April_Dust_2020 =0 ;
var May_Dust_2020 =0 ;
var June_Dust_2020 =0 ;
const request = require('request');
var url;
const Dust_URL = "http://openAPI.seoul.go.kr:8088/" //미세먼지 api주소_1
const Dust_URL2 = "/xml/MonthlyAverageAirQuality/1/5/" //미세먼지 api주소_2
const Dust_ServiceKey = "73754a53586a696d38345951716b6b" //Dust url의 key값
const Dust_Place ='/'+urlencode("강남구") //측정한 장소

//2020년 2월~6월 미세먼지 평균
function DelayNode_2020(item)
{  
  return new Promise(function(resolve,reject){
        setTimeout(function(){
        url = Dust_URL+Dust_ServiceKey+Dust_URL2+item+Dust_Place;
        request(url,function(error,res,body) {
          if(error){
            console.log('error=>${error}');
          }
          else{
            if(res.statusCode == 200) {
              var result = body;
              xmlToJson = xml2js.xml2json(result, {compact: true, spaces: 4});
              xmlToJson2 = JSON.parse(xmlToJson);
                if(item == 202002){
                  Feb_Dust_2020 = parseInt(xmlToJson2["MonthlyAverageAirQuality"]["row"]["PM10"]["_text"])
                }
                else if(item == 202003){
                  Mar_Dust_2020 = parseInt(xmlToJson2["MonthlyAverageAirQuality"]["row"]["PM10"]["_text"])
                }
                else if(item == 202004){
                  April_Dust_2020 = parseInt(xmlToJson2["MonthlyAverageAirQuality"]["row"]["PM10"]["_text"])
                }
                else if(item == 202005){
                  May_Dust_2020 = parseInt(xmlToJson2["MonthlyAverageAirQuality"]["row"]["PM10"]["_text"])
                }
                else if(item == 202006){
                  June_Dust_2020 = parseInt(xmlToJson2["MonthlyAverageAirQuality"]["row"]["PM10"]["_text"])
            }
          }
        }
      });
      resolve();        
    },500)
  })
}
async function Dust_Month_2020(Dust_Month_2020){
  for(let i=0;i<Dust_Month_2020.length;i++)
  {
    await DelayNode_2020(Dust_Month_2020[i]);
  }
}
Dust_Month_2020([202002,202003,202004,202005,202006]);

//2019년 2월~6월 미세먼지 평균
function DelayNode_2019(item)
{  
  return new Promise(function(resolve,reject){
        setTimeout(function(){
        url = Dust_URL+Dust_ServiceKey+Dust_URL2+item+Dust_Place;
        request(url,function(error,res,body) {
          if(error){
            console.log('error=>${error}');
          }
          else{
            if(res.statusCode == 200) {
              var result = body;
              xmlToJson = xml2js.xml2json(result, {compact: true, spaces: 4});
              xmlToJson2 = JSON.parse(xmlToJson);
                if(item == 201902){
                  Feb_Dust_2019 = parseInt(xmlToJson2["MonthlyAverageAirQuality"]["row"]["PM10"]["_text"])
                }
                else if(item == 201903){
                  Mar_Dust_2019 = parseInt(xmlToJson2["MonthlyAverageAirQuality"]["row"]["PM10"]["_text"])
                }
                else if(item == 201904){
                  April_Dust_2019 = parseInt(xmlToJson2["MonthlyAverageAirQuality"]["row"]["PM10"]["_text"])
                }
                else if(item == 201905){
                  May_Dust_2019 = parseInt(xmlToJson2["MonthlyAverageAirQuality"]["row"]["PM10"]["_text"])
                }
                else if(item == 201906){
                  June_Dust_2019 = parseInt(xmlToJson2["MonthlyAverageAirQuality"]["row"]["PM10"]["_text"])
            }
          }
        }
      });
      resolve();        
    },500)
  })
}
async function Dust_Month_2019(Dust_Month_2019){
  for(let i=0;i<Dust_Month_2019.length;i++)
  {
    await DelayNode_2019(Dust_Month_2019[i]);
  }
}
Dust_Month_2019([201902,201903,201904,201905,201906]);


//2018년 2월~6월 미세먼지 평균
function DelayNode_2018(item)
{  
  return new Promise(function(resolve,reject){
        setTimeout(function(){
        url = Dust_URL+Dust_ServiceKey+Dust_URL2+item+Dust_Place;
        request(url,function(error,res,body) {
          if(error){
            console.log('error=>${error}');
          }
          else{
            if(res.statusCode == 200) {
              var result = body;
              xmlToJson = xml2js.xml2json(result, {compact: true, spaces: 4});
              xmlToJson2 = JSON.parse(xmlToJson);
                if(item == 201802){
                  Feb_Dust_2018 = parseInt(xmlToJson2["MonthlyAverageAirQuality"]["row"]["PM10"]["_text"])
                }
                else if(item == 201803){
                  Mar_Dust_2018 = parseInt(xmlToJson2["MonthlyAverageAirQuality"]["row"]["PM10"]["_text"])
                }
                else if(item == 201804){
                  April_Dust_2018 = parseInt(xmlToJson2["MonthlyAverageAirQuality"]["row"]["PM10"]["_text"])
                }
                else if(item == 201805){
                  May_Dust_2018 = parseInt(xmlToJson2["MonthlyAverageAirQuality"]["row"]["PM10"]["_text"])
                }
                else if(item == 201806){
                  June_Dust_2018 = parseInt(xmlToJson2["MonthlyAverageAirQuality"]["row"]["PM10"]["_text"])
            }
          }
        }
      });
      resolve();        
    },500)
  })
}
async function Dust_Month_2018(Dust_Month_2018){
  for(let i=0;i<Dust_Month_2018.length;i++)
  {
    await DelayNode_2018(Dust_Month_2018[i]);
  }
}
Dust_Month_2018([201802,201803,201804,201805,201806]);

module.exports = function(app)
{
     app.get('/',function(req,res){
        res.render('index',{
          Feb_Dust_2018,
          Mar_Dust_2018,
          April_Dust_2018,
          May_Dust_2018,
          June_Dust_2018,
          Feb_Dust_2019,
          Mar_Dust_2019,
          April_Dust_2019,
          May_Dust_2019,
          June_Dust_2019,
          Feb_Dust_2020,
          Mar_Dust_2020,
          April_Dust_2020,
          May_Dust_2020,
          June_Dust_2020
        })
     });
     app.get('/about',function(req,res){
        res.render('about.ejs');
    });
}