Ubuntu

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

......@@ -2,30 +2,18 @@ var express = require('express');//express 모듈을 사용
var qs = require('querystring')
const request = require('request');//request 모듈을 사용
const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'//라인 api
const fs = require('fs')
var NOW = new Date()
var YEAR = NOW.getFullYear()
var MONTH= NOW.getMonth()+1
var DATE= NOW.getDate();
var NOWDATE= YEAR.toString().padStart(4, '0') + MONTH.toString().padStart(2, '0') + DATE.toString().padStart(2, '0')
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`
//var dic = {'대구': {'x': 90, 'y': 90}, '학교':{'x':62, 'y'}}
/*
var dic={}
var [schoolx]='62'
var [schooly]='120'
대구 수성구 x 90\
대구 수성구 y 90
*/
//var dic = {'대구': {'x': 90, 'y': 90}, '학교':{'x':62,'y':120}}
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`
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`
var region = JSON.parse(fs.readFileSync('region.json', 'utf8'));
const TOKEN = 'RbPAXRYWub0evg2yyi7oiHytZsZsE0JtbZgRYZNZDU1vjpJkOwGqwh+aKTYKVhVHh6LZOUVZLl84NQQlNWNbXR9hUhPEiLEK0cie4O3OlKUuEe/3wAsjPu7HbRi1zn9BsR3Qr4pcqmiIKP8HRUKvEwdB04t89/1O/w1cDnyilFU='
const fs = require('fs');
const path = require('path');
const HTTPS = require('https');
const domain = "www.osschat.tk"
......@@ -33,12 +21,13 @@ const sslport = 23023;
const bodyParser = require('body-parser');
var app = express();
var premessage='premessage'
var start ='start'
var check = true
var check = false
app.use(bodyParser.json());
app.use(express.static('statics'));
fs.readFile('region.json', 'utf8', function(err, data){
console.log(data);
});
......@@ -54,9 +43,11 @@ app.post('/hook', function (req, res) {
console.log('[request source] ', eventObj.source);
console.log('[request message]', eventObj.message);
rain(eventObj.replyToken, eventObj.message.text);
//clothes(eventObj.replyToken, eventObj.message.text);
if (check == false){
start(eventObj.replyToken, eventObj.message.text)}
else{
info(eventObj.replyToken, eventObj.message.text)}
res.sendStatus(200);
......@@ -64,17 +55,26 @@ app.post('/hook', function (req, res) {
function rain (replyToken, message){
if(message != '대구' && message != '학교')
function info (replyToken, message){
if(check==false)
{
return
}
if(message == '대구')
if(check == true)
{
WEATHER_URL = WEATHER_URL_D
}else if(message == '학교'){
WEATHER_URL = WEATHER_URL_S
var s = message.split(' ');
for(i=0; i<region.length; i++){
if (s[0] == region[i].l1 && s[1]== region[i].l2 && s[2]==region[i].l3)
{
var rx=region[i].x
var ry=region[i].y
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`
}
}
}
request.get(
{
......@@ -110,8 +110,6 @@ function rain (replyToken, message){
var watermessage =" 너무 습합니다."
}
}
//for(var item of body.response.body.items.item) {
if(item.category == 'TMX') {
if(item.fcstValue>=28){
var clothesMessage = `날씨가 매우 덥습니다. 건강에 유의해주세요.
......@@ -133,7 +131,7 @@ function rain (replyToken, message){
var clothesMessage= `날씨가 매우 춥습니다. 건강에 유의하세요 .추천 옷: 패딩, 두꺼운 코트, 누빔 옷, 기모 소재의 옷, 히트텍, 목도리, 장갑`
}
}
//}
}
request.post(
{
......@@ -161,73 +159,38 @@ function rain (replyToken, message){
});
}
/*
function clothes (replyToken, message){
if(message != '대구' && message != '학교')
function start (replyToken, message){
if(message != '시작')
{
check = false
return
}
if(message == '대구'){
WEATHER_URL = WEATHER_URL_D
}else if(message == '학교'){
WEATHER_URL = WEATHER_URL_S
if(message == '시작'){
check= true
}
request.get(
{
url: WEATHER_URL,
json:true
},(error, response, body) => {
if(!error && response.statusCode == 200) {
console.log(body.message);
for(var item of body.response.body.items.item) {
if(item.category == 'TMX') {
if(item.fcstValue>=28){
var clothesMessage = `날씨가 매우 덥습니다. 건강에 유의해주세요.
추천 옷: 민소매, 반팔, 반바지, 여름용 치마, 린넨 소재의 옷`
}else if(23<=item.fcstValue && item.fcstValue<=27){
var clothesMessage = `날이 덥습니다. 가벼운 옷차림을 추천합니다.
추천 옷: 반팔, 얇은 셔츠, 반바지, 면바지 `
}else if(20<=item.fcstValue && item.fcstValue<=22){
var clothesMessage = `초여름/ 늦여름 날씨입니다. 일교차에 주의해주세요. 추천 옷: 블라우스, 얇은 긴팔 티, 면바지, 슬랙스, 반팔과 가디건`
}else if(17<=item.fcstValue && item.fcstValue<=19){
var clothesMessage=`아직 조금은 쌀쌀합니다. 건강에 유의해주세요. 추천 옷: 얇은 가디건, 니트, 맨투맨, 후드, 긴 바지`
}else if(12<=item.fcstValue && item.fcstValue<=16){
var clothesMessage=`날이 쌀쌀합니다. 추천 옷: 자켓, 가디건, 청자켓, 니트, 청바지`
}else if(9<=item.fcstValue && item.fcstValue<=11){
var clothesMessage =`날이 아직 춥습니다. 따뜻한 옷이 좋습니다. 추천 옷: 트렌치코트, 야상, 점퍼, 기모바지`
}else if(5<=item.fcstValue && item.fcstValue<=8){
var clothesMessage =` 날이 춥습니다. 따뜻하게 입어주세요. 추천 옷: 두꺼운 코트, 히트텍, 가죽 옷, 기모 소재의 옷`
}else{
var clothesMessage= `날씨가 매우 춥습니다. 건강에 유의하세요 .추천 옷: 패딩, 두꺼운 코트, 누빔 옷, 기모 소재의 옷, 히트텍, 목도리, 장갑`
}
}
}
request.post(
{
url: TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`
},
json: {
"replyToken":replyToken,
"messages":[
{
"type":"text",
"text":clothesMessage
}
]
}
},(error, response, body) => {
console.log(body)
});
}
});
var startMessage= '특별 혹은 광역시/도 시/구/군/ 읍/면/동으로 입력해주세요. 예)서울특별시 종로구 사직동, 강원도 화천군 화천읍, 충청남도 아산시 둔포면'
request.post(
{
url: TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`
},
json: {
"replyToken":replyToken,
"messages":[
{
"type":"text",
"text":startMessage
}
]
}
},(error, response, body) => {
console.log(body)
});
}
*/
......
This diff could not be displayed because it is too large.