박하늘

Merge branch 'server'

app.js : basic funtion updated
//app.js
var express = require('express');
const request = require('request');
const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'
const TOKEN = 'OVIxKODBqM8Pn2dpFtFeSLsDbBvApfTu88rh8wFGOzfvgvPjmBH0A4XKii97VxIDO9shYyTix4qGq32vwvL895Rbss5VSVEiU/XG5lOdyTLgECkSQKOdObSetZwcVHbGmzZJ+0Cz5vZrB5KuImOwrwdB04t89/1O/w1cDnyilFU='
const fs = require('fs');
const path = require('path');
const HTTPS = require('https');
const domain = "2017103989.oss2021.tk"
const sslport = 23023;
const bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.post('/hook', function (req, res) {
var eventObj = req.body.events[0];
var source = eventObj.source;
var message = eventObj.message;
var pystring;
const spawn = require("child_process").spawn;
const process = spawn("python", ["basic.py", eventObj.message.text]);
const Callback = (data) => {
console.log("Data :", data.toString());
pystring = data.toString();
// request log
console.log('======================', new Date() ,'======================');
console.log('[request]', req.body);
console.log('[request source] ', eventObj.source);
console.log('[request message]', eventObj.message);
request.post(
{
url: TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`
},
json: {
"replyToken":eventObj.replyToken,
"messages":[
{
"type":"text",
"text":pystring
},
{
"type":"text",
"text":"May I help you?"
}
]
}
},(error, response, body) => {
console.log(body)
});
app.use(express.urlencoded({ extended: false }));
app.use(express.json());
res.sendStatus(200);
app.get('/keyboard', (req, res) => {
var data = {'type': 'text'}
res.json(data);
};
process.stdout.on("data", Callback);
});
app.post('/message', (req, res) => {
var question = req.body.userRequest.utterance;
var goMain = '처음으로';
try {
const option = {
ca: fs.readFileSync('/etc/letsencrypt/live/' + domain +'/fullchain.pem'),
key: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/privkey.pem'), 'utf8').toString(),
cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/cert.pem'), 'utf8').toString(),
};
if (question === '테스트') {
var data = {
'version': '2.0',
'template': {
'outputs': [{
'simpleText': {
'text': '테스트'
}
}],
'quickReplies': [{
'label': goMain,
'action': 'message',
'messageText': goMain
}]
}
}
HTTPS.createServer(option, app).listen(sslport, () => {
console.log(`[HTTPS] Server is started on port ${sslport}`);
});
} catch (error) {
console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.');
console.log(error);
}
res.json(data);
});
app.listen(3000, () => console.log('node on 3000'));
\ No newline at end of file
......
import FinanceDataReader as fdr
import pandas as pd
import sys
def basicinform(input):
stocks = pd.read_csv('stockcodename.csv', index_col=0)
symbol = ''
for i in enumerate(stocks.Name):
if i[1] == input:
symbol = (stocks.iloc[i[0]].Symbol)
break
df = fdr.DataReader(symbol)
ror_df = df.Close.pct_change()
volume = df.Volume.iloc[-1]
price = df.Close.iloc[-1]
ror = ror_df[-1]
value = {
"현재가": price,
"거래랑": volume,
"전일 대비 수익률:": ror
}
return value
# print(basicinform('삼성전자'))
args = sys.argv
print(basicinform(args[1]))