Ubuntu

0614 온도에 따른 옷 추천 추가

...@@ -7,8 +7,8 @@ var NOW = new Date() ...@@ -7,8 +7,8 @@ var NOW = new Date()
7 var YEAR = NOW.getFullYear() 7 var YEAR = NOW.getFullYear()
8 var MONTH= NOW.getMonth()+1 8 var MONTH= NOW.getMonth()+1
9 var DATE= NOW.getDate(); 9 var DATE= NOW.getDate();
10 -var NOWDATE= YEAR.toString() + MONTH.toString() + DATE.toString() 10 +var NOWDATE= YEAR.toString().padStart(4, '0') + MONTH.toString().padStart(2, '0') + DATE.toString().padStart(2, '0')
11 -const WEATHER_URL=`http://apis.data.go.kr/1360000/VilageFcstInfoService/getVilageFcst?serviceKey=StHx15%2FPZFKIJvR5AtCu8uyowAtnEYHpAXR%2B5XYYN6OWDt%2BCz15z%2Fxn%2FDiV%2FLN9%2BY5YSPZUPUnCq982CiBupmw%3D%3D&numOfRows=10&pageNo=1&base_date=${NOWDATE}&base_time=0230&nx=55&ny=127&dataType=JSON` 11 +const WEATHER_URL=`http://apis.data.go.kr/1360000/VilageFcstInfoService/getVilageFcst?serviceKey=StHx15%2FPZFKIJvR5AtCu8uyowAtnEYHpAXR%2B5XYYN6OWDt%2BCz15z%2Fxn%2FDiV%2FLN9%2BY5YSPZUPUnCq982CiBupmw%3D%3D&numOfRows=1000&pageNo=1&base_date=${NOWDATE}&base_time=0230&nx=55&ny=127&dataType=JSON`
12 12
13 13
14 const TOKEN = 'RbPAXRYWub0evg2yyi7oiHytZsZsE0JtbZgRYZNZDU1vjpJkOwGqwh+aKTYKVhVHh6LZOUVZLl84NQQlNWNbXR9hUhPEiLEK0cie4O3OlKUuEe/3wAsjPu7HbRi1zn9BsR3Qr4pcqmiIKP8HRUKvEwdB04t89/1O/w1cDnyilFU=' 14 const TOKEN = 'RbPAXRYWub0evg2yyi7oiHytZsZsE0JtbZgRYZNZDU1vjpJkOwGqwh+aKTYKVhVHh6LZOUVZLl84NQQlNWNbXR9hUhPEiLEK0cie4O3OlKUuEe/3wAsjPu7HbRi1zn9BsR3Qr4pcqmiIKP8HRUKvEwdB04t89/1O/w1cDnyilFU='
...@@ -22,6 +22,7 @@ const bodyParser = require('body-parser'); ...@@ -22,6 +22,7 @@ const bodyParser = require('body-parser');
22 var app = express(); 22 var app = express();
23 var premessage='premessage' 23 var premessage='premessage'
24 var start ='start' 24 var start ='start'
25 +var check = true
25 26
26 27
27 app.use(bodyParser.json()); 28 app.use(bodyParser.json());
...@@ -41,16 +42,18 @@ app.post('/hook', function (req, res) { ...@@ -41,16 +42,18 @@ app.post('/hook', function (req, res) {
41 console.log('[request source] ', eventObj.source); 42 console.log('[request source] ', eventObj.source);
42 console.log('[request message]', eventObj.message); 43 console.log('[request message]', eventObj.message);
43 44
45 +
44 rain(eventObj.replyToken, eventObj.message.text); 46 rain(eventObj.replyToken, eventObj.message.text);
47 + clothes(eventObj.replyToken, eventObj.message.text);
45 48
46 49
47 res.sendStatus(200); 50 res.sendStatus(200);
48 }); 51 });
49 52
50 53
51 - 54 +// 비 말고도 날씨 정보 추가
52 function rain (replyToken, message){ 55 function rain (replyToken, message){
53 - if(message != '오늘 옷') 56 + if(message != '날씨')
54 { 57 {
55 return 58 return
56 } 59 }
...@@ -61,11 +64,16 @@ function rain (replyToken, message){ ...@@ -61,11 +64,16 @@ function rain (replyToken, message){
61 },(error, response, body) => { 64 },(error, response, body) => {
62 if(!error && response.statusCode == 200) { 65 if(!error && response.statusCode == 200) {
63 console.log(body.message); 66 console.log(body.message);
64 - if(body.POP>=50){ 67 + for(var item of body.response.body.items.item) {
68 + if(item.category == 'POP') {
69 + if(item.fcstValue >= 50) {
65 var rainMessage = "꼭! 우산을 챙기세요"; 70 var rainMessage = "꼭! 우산을 챙기세요";
66 - }else{ 71 + }
72 + else {
67 var rainMessage= "우산이 굳이 필요하지는 않습니다." 73 var rainMessage= "우산이 굳이 필요하지는 않습니다."
68 } 74 }
75 + }
76 + }
69 request.post( 77 request.post(
70 { 78 {
71 url: TARGET_URL, 79 url: TARGET_URL,
...@@ -88,26 +96,42 @@ function rain (replyToken, message){ ...@@ -88,26 +96,42 @@ function rain (replyToken, message){
88 }); 96 });
89 } 97 }
90 98
91 - 99 +function clothes (replyToken, message){
92 -/* 100 + if(message != '옷')
93 -
94 -function trans(replyToken, message) {
95 -
96 - if( message != '길찾기')
97 { 101 {
98 return 102 return
99 } 103 }
100 - premessage=message
101 -
102 request.get( 104 request.get(
103 { 105 {
104 - url: MAP_URL, 106 + url: WEATHER_URL,
105 - headers: { 107 + json:true
106 - 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 108 + },(error, response, body) => {
107 - 'X-NCP-APIGW-API-KEY-ID': `${MAP_ID}`, 109 + if(!error && response.statusCode == 200) {
108 - 'X-NCP-APIGW-API-KEY': `${MAP_SECRET}` 110 + console.log(body.message);
111 + for(var item of body.response.body.items.item) {
112 + if(item.category == 'TMX') {
113 + if(item.fcstValue>=28){
114 + var clothesMessage = `날씨가 매우 덥습니다. 건강에 유의해주세요.
115 + 추천 옷: 민소매, 반팔, 반바지, 여름용 치마, 린넨 소재의 옷`
116 + }else if(23<=item.fcstValue && item.fcstValue<=27){
117 + var clothesMessage = `날이 덥습니다. 가벼운 옷차림을 추천합니다.
118 + 추천 옷: 반팔, 얇은 셔츠, 반바지, 면바지 `
119 + }else if(20<=item.fcstValue && item.fcstValue<=22){
120 + var clothesMessage = `초여름/ 늦여름 날씨입니다. 일교차에 주의해주세요. 추천 옷: 블라우스, 얇은 긴팔 티, 면바지, 슬랙스, 반팔과 가디건`
121 + }else if(17<=item.fcstValue && item.fcstValue<=19){
122 + var clothesMessage=`아직 조금은 쌀쌀합니다. 건강에 유의해주세요. 추천 옷: 얇은 가디건, 니트, 맨투맨, 후드, 긴 바지`
123 + }else if(12<=item.fcstValue && item.fcstValue<=16){
124 + var clothesMessage=`날이 쌀쌀합니다. 추천 옷: 자켓, 가디건, 청자켓, 니트, 청바지`
125 + }else if(9<=item.fcstValue && item.fcstValue<=11){
126 + var clothesMessage =`날이 아직 춥습니다. 따뜻한 옷이 좋습니다. 추천 옷: 트렌치코트, 야상, 점퍼, 기모바지`
127 + }else if(5<=item.fcstValue && item.fcstValue<=8){
128 + var clothesMessage =` 날이 춥습니다. 따뜻하게 입어주세요. 추천 옷: 두꺼운 코트, 히트텍, 가죽 옷, 기모 소재의 옷`
129 + }else{
130 + var clothesMessage= `날씨가 매우 춥습니다. 건강에 유의하세요 .추천 옷: 패딩, 두꺼운 코트, 누빔 옷, 기모 소재의 옷, 히트텍, 목도리, 장갑`
131 + }
132 + }
109 } 133 }
110 - }).pipe(fs.createWriteStream('statics/replymap.jpg')).on('close', function() { 134 +
111 request.post( 135 request.post(
112 { 136 {
113 url: TARGET_URL, 137 url: TARGET_URL,
...@@ -118,19 +142,21 @@ function trans(replyToken, message) { ...@@ -118,19 +142,21 @@ function trans(replyToken, message) {
118 "replyToken":replyToken, 142 "replyToken":replyToken,
119 "messages":[ 143 "messages":[
120 { 144 {
121 - "type": "image", 145 + "type":"text",
122 - "originalContentUrl": "https://www.osschat.tk:23023/replymap.jpg", 146 + "text":clothesMessage
123 - "previewImageUrl": "https://www.osschat.tk:23023/replymap.jpg" 147 + }
124 - }//message
125 ] 148 ]
126 - }//json 149 + }
127 },(error, response, body) => { 150 },(error, response, body) => {
128 console.log(body) 151 console.log(body)
129 }); 152 });
153 + }
130 }); 154 });
131 -
132 } 155 }
133 -*/ 156 +
157 +
158 +
159 +
134 160
135 try { 161 try {
136 const option = { 162 const option = {
......