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
46 + if (check == false){
47 + start(eventObj.replyToken, eventObj.message.text)}
48 + else{
49 + info(eventObj.replyToken, eventObj.message.text)}
57 50
58 - rain(eventObj.replyToken, eventObj.message.text);
59 - //clothes(eventObj.replyToken, eventObj.message.text);
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)
67 + {
68 + var s = message.split(' ');
69 + for(i=0; i<region.length; i++){
70 + if (s[0] == region[i].l1 && s[1]== region[i].l2 && s[2]==region[i].l3)
74 { 71 {
75 - WEATHER_URL = WEATHER_URL_D 72 + var rx=region[i].x
76 - }else if(message == '학교'){ 73 + var ry=region[i].y
77 - WEATHER_URL = WEATHER_URL_S 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,50 +159,19 @@ function rain (replyToken, message){ ...@@ -161,50 +159,19 @@ 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 - }
176 -
177 - request.get(
178 - {
179 - url: WEATHER_URL,
180 - json:true
181 - },(error, response, body) => {
182 - if(!error && response.statusCode == 200) {
183 - console.log(body.message);
184 - for(var item of body.response.body.items.item) {
185 - if(item.category == 'TMX') {
186 - if(item.fcstValue>=28){
187 - var clothesMessage = `날씨가 매우 덥습니다. 건강에 유의해주세요.
188 - 추천 옷: 민소매, 반팔, 반바지, 여름용 치마, 린넨 소재의 옷`
189 - }else if(23<=item.fcstValue && item.fcstValue<=27){
190 - var clothesMessage = `날이 덥습니다. 가벼운 옷차림을 추천합니다.
191 - 추천 옷: 반팔, 얇은 셔츠, 반바지, 면바지 `
192 - }else if(20<=item.fcstValue && item.fcstValue<=22){
193 - var clothesMessage = `초여름/ 늦여름 날씨입니다. 일교차에 주의해주세요. 추천 옷: 블라우스, 얇은 긴팔 티, 면바지, 슬랙스, 반팔과 가디건`
194 - }else if(17<=item.fcstValue && item.fcstValue<=19){
195 - var clothesMessage=`아직 조금은 쌀쌀합니다. 건강에 유의해주세요. 추천 옷: 얇은 가디건, 니트, 맨투맨, 후드, 긴 바지`
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 } 172 }
207 173
174 + var startMessage= '특별 혹은 광역시/도 시/구/군/ 읍/면/동으로 입력해주세요. 예)서울특별시 종로구 사직동, 강원도 화천군 화천읍, 충청남도 아산시 둔포면'
208 request.post( 175 request.post(
209 { 176 {
210 url: TARGET_URL, 177 url: TARGET_URL,
...@@ -216,18 +183,14 @@ function clothes (replyToken, message){ ...@@ -216,18 +183,14 @@ function clothes (replyToken, message){
216 "messages":[ 183 "messages":[
217 { 184 {
218 "type":"text", 185 "type":"text",
219 - "text":clothesMessage 186 + "text":startMessage
220 } 187 }
221 ] 188 ]
222 } 189 }
223 },(error, response, body) => { 190 },(error, response, body) => {
224 console.log(body) 191 console.log(body)
225 }); 192 });
226 - }
227 - });
228 } 193 }
229 -*/
230 -
231 194
232 195
233 196
......
This diff could not be displayed because it is too large.