Ubuntu

모든지역가능, 띄어쓰기등은 수정필요

...@@ -2,30 +2,18 @@ var express = require('express');//express 모듈을 사용 ...@@ -2,30 +2,18 @@ var express = require('express');//express 모듈을 사용
2 var qs = require('querystring') 2 var qs = require('querystring')
3 const request = require('request');//request 모듈을 사용 3 const request = require('request');//request 모듈을 사용
4 const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'//라인 api 4 const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'//라인 api
5 - 5 +const fs = require('fs')
6 var NOW = new Date() 6 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().padStart(4, '0') + MONTH.toString().padStart(2, '0') + DATE.toString().padStart(2, '0') 10 var NOWDATE= YEAR.toString().padStart(4, '0') + MONTH.toString().padStart(2, '0') + DATE.toString().padStart(2, '0')
11 +var 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=60&ny=120&dataType=JSON`
11 12
12 - 13 +var region = JSON.parse(fs.readFileSync('region.json', 'utf8'));
13 -//var dic = {'대구': {'x': 90, 'y': 90}, '학교':{'x':62, 'y'}}
14 -/*
15 -var dic={}
16 -var [schoolx]='62'
17 -var [schooly]='120'
18 -대구 수성구 x 90\
19 -대구 수성구 y 90
20 -*/
21 -//var dic = {'대구': {'x': 90, 'y': 90}, '학교':{'x':62,'y':120}}
22 -const WEATHER_URL_D=`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=90&ny=90&dataType=JSON`
23 -const WEATHER_URL_S=`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=62&ny=120&dataType=JSON`
24 -
25 14
26 const TOKEN = 'RbPAXRYWub0evg2yyi7oiHytZsZsE0JtbZgRYZNZDU1vjpJkOwGqwh+aKTYKVhVHh6LZOUVZLl84NQQlNWNbXR9hUhPEiLEK0cie4O3OlKUuEe/3wAsjPu7HbRi1zn9BsR3Qr4pcqmiIKP8HRUKvEwdB04t89/1O/w1cDnyilFU=' 15 const TOKEN = 'RbPAXRYWub0evg2yyi7oiHytZsZsE0JtbZgRYZNZDU1vjpJkOwGqwh+aKTYKVhVHh6LZOUVZLl84NQQlNWNbXR9hUhPEiLEK0cie4O3OlKUuEe/3wAsjPu7HbRi1zn9BsR3Qr4pcqmiIKP8HRUKvEwdB04t89/1O/w1cDnyilFU='
27 16
28 -const fs = require('fs');
29 const path = require('path'); 17 const path = require('path');
30 const HTTPS = require('https'); 18 const HTTPS = require('https');
31 const domain = "www.osschat.tk" 19 const domain = "www.osschat.tk"
...@@ -33,12 +21,13 @@ const sslport = 23023; ...@@ -33,12 +21,13 @@ const sslport = 23023;
33 const bodyParser = require('body-parser'); 21 const bodyParser = require('body-parser');
34 var app = express(); 22 var app = express();
35 var premessage='premessage' 23 var premessage='premessage'
36 -var start ='start' 24 +var check = false
37 -var check = true
38 -
39 25
40 app.use(bodyParser.json()); 26 app.use(bodyParser.json());
41 -app.use(express.static('statics')); 27 +
28 +fs.readFile('region.json', 'utf8', function(err, data){
29 + console.log(data);
30 + });
42 31
43 32
44 33
...@@ -54,9 +43,11 @@ app.post('/hook', function (req, res) { ...@@ -54,9 +43,11 @@ app.post('/hook', function (req, res) {
54 console.log('[request source] ', eventObj.source); 43 console.log('[request source] ', eventObj.source);
55 console.log('[request message]', eventObj.message); 44 console.log('[request message]', eventObj.message);
56 45
57 - 46 + if (check == false){
58 - rain(eventObj.replyToken, eventObj.message.text); 47 + start(eventObj.replyToken, eventObj.message.text)}
59 - //clothes(eventObj.replyToken, eventObj.message.text); 48 + else{
49 + info(eventObj.replyToken, eventObj.message.text)}
50 +
60 51
61 52
62 res.sendStatus(200); 53 res.sendStatus(200);
...@@ -64,17 +55,26 @@ app.post('/hook', function (req, res) { ...@@ -64,17 +55,26 @@ app.post('/hook', function (req, res) {
64 55
65 56
66 57
67 -function rain (replyToken, message){ 58 +function info (replyToken, message){
68 - if(message != '대구' && message != '학교') 59 +
60 + if(check==false)
69 { 61 {
70 return 62 return
71 } 63 }
72 - 64 +
73 - if(message == '대구') 65 +
66 + if(check == true)
74 { 67 {
75 - WEATHER_URL = WEATHER_URL_D 68 + var s = message.split(' ');
76 - }else if(message == '학교'){ 69 + for(i=0; i<region.length; i++){
77 - WEATHER_URL = WEATHER_URL_S 70 + if (s[0] == region[i].l1 && s[1]== region[i].l2 && s[2]==region[i].l3)
71 + {
72 + var rx=region[i].x
73 + var ry=region[i].y
74 + 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=${rx}&ny=${ry}&dataType=JSON`
75 +
76 + }
77 + }
78 } 78 }
79 request.get( 79 request.get(
80 { 80 {
...@@ -110,8 +110,6 @@ function rain (replyToken, message){ ...@@ -110,8 +110,6 @@ function rain (replyToken, message){
110 var watermessage =" 너무 습합니다." 110 var watermessage =" 너무 습합니다."
111 } 111 }
112 } 112 }
113 -
114 - //for(var item of body.response.body.items.item) {
115 if(item.category == 'TMX') { 113 if(item.category == 'TMX') {
116 if(item.fcstValue>=28){ 114 if(item.fcstValue>=28){
117 var clothesMessage = `날씨가 매우 덥습니다. 건강에 유의해주세요. 115 var clothesMessage = `날씨가 매우 덥습니다. 건강에 유의해주세요.
...@@ -133,7 +131,7 @@ function rain (replyToken, message){ ...@@ -133,7 +131,7 @@ function rain (replyToken, message){
133 var clothesMessage= `날씨가 매우 춥습니다. 건강에 유의하세요 .추천 옷: 패딩, 두꺼운 코트, 누빔 옷, 기모 소재의 옷, 히트텍, 목도리, 장갑` 131 var clothesMessage= `날씨가 매우 춥습니다. 건강에 유의하세요 .추천 옷: 패딩, 두꺼운 코트, 누빔 옷, 기모 소재의 옷, 히트텍, 목도리, 장갑`
134 } 132 }
135 } 133 }
136 - //} 134 +
137 } 135 }
138 request.post( 136 request.post(
139 { 137 {
...@@ -161,73 +159,38 @@ function rain (replyToken, message){ ...@@ -161,73 +159,38 @@ function rain (replyToken, message){
161 }); 159 });
162 } 160 }
163 161
164 -/* 162 +
165 -function clothes (replyToken, message){ 163 +function start (replyToken, message){
166 - if(message != '대구' && message != '학교') 164 + if(message != '시작')
167 { 165 {
166 + check = false
168 return 167 return
169 } 168 }
170 169
171 - if(message == '대구'){ 170 + if(message == '시작'){
172 - WEATHER_URL = WEATHER_URL_D 171 + check= true
173 - }else if(message == '학교'){
174 - WEATHER_URL = WEATHER_URL_S
175 } 172 }
176 - 173 +
177 - request.get( 174 + var startMessage= '특별 혹은 광역시/도 시/구/군/ 읍/면/동으로 입력해주세요. 예)서울특별시 종로구 사직동, 강원도 화천군 화천읍, 충청남도 아산시 둔포면'
178 - { 175 + request.post(
179 - url: WEATHER_URL, 176 + {
180 - json:true 177 + url: TARGET_URL,
181 - },(error, response, body) => { 178 + headers: {
182 - if(!error && response.statusCode == 200) { 179 + 'Authorization': `Bearer ${TOKEN}`
183 - console.log(body.message); 180 + },
184 - for(var item of body.response.body.items.item) { 181 + json: {
185 - if(item.category == 'TMX') { 182 + "replyToken":replyToken,
186 - if(item.fcstValue>=28){ 183 + "messages":[
187 - var clothesMessage = `날씨가 매우 덥습니다. 건강에 유의해주세요. 184 + {
188 - 추천 옷: 민소매, 반팔, 반바지, 여름용 치마, 린넨 소재의 옷` 185 + "type":"text",
189 - }else if(23<=item.fcstValue && item.fcstValue<=27){ 186 + "text":startMessage
190 - var clothesMessage = `날이 덥습니다. 가벼운 옷차림을 추천합니다. 187 + }
191 - 추천 옷: 반팔, 얇은 셔츠, 반바지, 면바지 ` 188 + ]
192 - }else if(20<=item.fcstValue && item.fcstValue<=22){ 189 + }
193 - var clothesMessage = `초여름/ 늦여름 날씨입니다. 일교차에 주의해주세요. 추천 옷: 블라우스, 얇은 긴팔 티, 면바지, 슬랙스, 반팔과 가디건` 190 + },(error, response, body) => {
194 - }else if(17<=item.fcstValue && item.fcstValue<=19){ 191 + console.log(body)
195 - var clothesMessage=`아직 조금은 쌀쌀합니다. 건강에 유의해주세요. 추천 옷: 얇은 가디건, 니트, 맨투맨, 후드, 긴 바지` 192 + });
196 - }else if(12<=item.fcstValue && item.fcstValue<=16){
197 - var clothesMessage=`날이 쌀쌀합니다. 추천 옷: 자켓, 가디건, 청자켓, 니트, 청바지`
198 - }else if(9<=item.fcstValue && item.fcstValue<=11){
199 - var clothesMessage =`날이 아직 춥습니다. 따뜻한 옷이 좋습니다. 추천 옷: 트렌치코트, 야상, 점퍼, 기모바지`
200 - }else if(5<=item.fcstValue && item.fcstValue<=8){
201 - var clothesMessage =` 날이 춥습니다. 따뜻하게 입어주세요. 추천 옷: 두꺼운 코트, 히트텍, 가죽 옷, 기모 소재의 옷`
202 - }else{
203 - var clothesMessage= `날씨가 매우 춥습니다. 건강에 유의하세요 .추천 옷: 패딩, 두꺼운 코트, 누빔 옷, 기모 소재의 옷, 히트텍, 목도리, 장갑`
204 - }
205 - }
206 - }
207 -
208 - request.post(
209 - {
210 - url: TARGET_URL,
211 - headers: {
212 - 'Authorization': `Bearer ${TOKEN}`
213 - },
214 - json: {
215 - "replyToken":replyToken,
216 - "messages":[
217 - {
218 - "type":"text",
219 - "text":clothesMessage
220 - }
221 - ]
222 - }
223 - },(error, response, body) => {
224 - console.log(body)
225 - });
226 - }
227 - });
228 } 193 }
229 -*/
230 -
231 194
232 195
233 196
......
This diff could not be displayed because it is too large.