신일섭

쇼핑기능 접목중on process

Showing 1 changed file with 66 additions and 12 deletions
1 var express = require('express'); 1 var express = require('express');
2 2
3 -// ----------crawling modules---------------
4 -var puppeteer = require('puppeteer');
5 -var gmarket = require('./crawling/gmarket');
6 -var coupang = require('./crawling/coupang');
7 -var auction = require('./crawling/auction');
8 -//------------------------------------------
9 -
10 const request = require('request'); 3 const request = require('request');
4 +
5 +//--------------- Line messanger modules -------------------
11 const TARGET_URL = 'https://api.line.me/v2/bot/message/reply' 6 const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'
12 const TOKEN = 'LFi+FvOOFOydz0EKN22WRnQyiilnEiyxe2HVV1WrI54Jnght6+Gga07m7pxqSQltBJG2AV2lYnYOAk4TqxzZFKW9R36CJcQs+NaNEiNKJtgBfT/t3tEta/J6GtXxGz/DqdHnfZqSSfLFpXzun/ITTwdB04t89/1O/w1cDnyilFU=' 7 const TOKEN = 'LFi+FvOOFOydz0EKN22WRnQyiilnEiyxe2HVV1WrI54Jnght6+Gga07m7pxqSQltBJG2AV2lYnYOAk4TqxzZFKW9R36CJcQs+NaNEiNKJtgBfT/t3tEta/J6GtXxGz/DqdHnfZqSSfLFpXzun/ITTwdB04t89/1O/w1cDnyilFU='
8 +//----------------------------------------------------------
13 9
14 -//-----------------Translating moudules---------------------- 10 +//--------------- Translating moudules ----------------------
15 const PAPAGO_URL = 'https://openapi.naver.com/v1/papago/n2mt' 11 const PAPAGO_URL = 'https://openapi.naver.com/v1/papago/n2mt'
16 const PAPAGO_ID = 'r_kuebFKCqBeL3SI_dFb' 12 const PAPAGO_ID = 'r_kuebFKCqBeL3SI_dFb'
17 const PAPAGO_SECRET = 'Wdz2tudrzB' 13 const PAPAGO_SECRET = 'Wdz2tudrzB'
...@@ -19,6 +15,15 @@ var trans = require('./trans/trans') ...@@ -19,6 +15,15 @@ var trans = require('./trans/trans')
19 var trans_counter = 0; 15 var trans_counter = 0;
20 //----------------------------------------------------------- 16 //-----------------------------------------------------------
21 17
18 +// ---------- Shopping modules -------------
19 +var puppeteer = require('puppeteer');
20 +var gmarket = require('./crawling/gmarket');
21 +var coupang = require('./crawling/coupang');
22 +var auction = require('./crawling/auction');
23 +var shopping = 0; // in shopping menu identifier 0 = idle, 1 = shop selecting, 2 = select complete
24 +var shop_select = undefined // shopping-site identifier
25 +//------------------------------------------
26 +
22 const fs = require('fs'); 27 const fs = require('fs');
23 const path = require('path'); 28 const path = require('path');
24 const HTTPS = require('https'); 29 const HTTPS = require('https');
...@@ -30,10 +35,11 @@ const bodyParser = require('body-parser'); ...@@ -30,10 +35,11 @@ const bodyParser = require('body-parser');
30 35
31 var app = express(); 36 var app = express();
32 37
33 -//------middlewares------------------------------ 38 +//=============== middlewares ================
34 app.use(bodyParser.json()); 39 app.use(bodyParser.json());
35 40
36 -//--------------------Utility Selector---------------------------------------------------------------- 41 +
42 +//============== Utility Selector =========================================
37 app.post('/hook', function (req, res) { 43 app.post('/hook', function (req, res) {
38 44
39 //-------- request values --------- 45 //-------- request values ---------
...@@ -49,7 +55,16 @@ app.post('/hook', function (req, res) { ...@@ -49,7 +55,16 @@ app.post('/hook', function (req, res) {
49 console.log('[request message]', eventObj.message); 55 console.log('[request message]', eventObj.message);
50 //---------------------------------------------------------------------------- 56 //----------------------------------------------------------------------------
51 57
52 - //--------------------language identification & translation------------------- 58 + //--------------- Cancel ----------------------------------------------
59 + if(message.text.includes('/취소')){
60 + replying(eventObj.replyToken, '진행중인 기능 및 메뉴를 종료합니다.');
61 + shopping = 0;
62 + shop_select = undefined
63 + trans_counter = 0;
64 + }
65 + //---------------------------------------------------------------------
66 +
67 + //----------------------- Translation which includes language-selector -----------------------------------------------
53 if(eventObj.message.text.includes('/번역')){ 68 if(eventObj.message.text.includes('/번역')){
54 console.log('번역캐치: ', eventObj.message.text); 69 console.log('번역캐치: ', eventObj.message.text);
55 trans_counter = trans.trans_lng_selector(eventObj.message.text); // after this trans_trigger = 1 70 trans_counter = trans.trans_lng_selector(eventObj.message.text); // after this trans_trigger = 1
...@@ -57,14 +72,53 @@ app.post('/hook', function (req, res) { ...@@ -57,14 +72,53 @@ app.post('/hook', function (req, res) {
57 else if(trans_counter==1){ 72 else if(trans_counter==1){
58 trans_counter = trans.translating(eventObj.replyToken, eventObj.message.text); // after this trans_trigger = 0 73 trans_counter = trans.translating(eventObj.replyToken, eventObj.message.text); // after this trans_trigger = 0
59 } 74 }
75 + //--------------------------------------------------------------------------------------------------------------------
60 76
61 - 77 + //---------------------- linking Shoppingcart crawler ----------------------------------------------------------------
78 + if(message.text == '/쇼핑' ){
79 + replying(eventObj.replyToken, '쇼핑을 선택하셨습니다.\n원하시는 쇼핑몰 사이트를 선택하세요.\n현재 제공되는 사이트는 \n\n/g마켓\n/옥션\n/쿠팡\n\n입니다.\n/취소 로 해당 메뉴에서 퇴장이 가능합니다.');
80 + shopping = 1; // 다음 메세지에 선택하지 못할 경우 0으로 되돌릴 필요가있음
81 + }
82 + if(shopping == 1){
83 + switch(message.text){
84 + case '/g마켓': break;
85 + case '/옥션': break;
86 + case '/쿠팡': break;
87 + default: shopping == 0;
88 + }
89 + }
90 + //--------------------------------------------------------------------------------------------------------------------
62 91
63 92
64 res.sendStatus(200); 93 res.sendStatus(200);
65 }); 94 });
66 95
67 96
97 +//================== Just replying specific messages needed ===================================
98 +function replying(replyToken, sp_message){ // sp_message is message(string) that depends on the situation that user selects
99 + request.post(
100 + {
101 + url: TARGET_URL,
102 + headers: {
103 + 'Authorization': `Bearer ${TOKEN}`
104 + },
105 + json: {
106 + "replyToken":replyToken,
107 + "messages":[
108 + {
109 + "type":"text",
110 + "text":sp_message // replying message
111 + }
112 + ]
113 + }
114 + },(error, response, body) => {
115 + console.log(body)
116 + trans_trigger=0;
117 + return trans_trigger;
118 + });
119 +}
120 +
121 +//==================== Creating Server : Port = val sslport ===============================
68 try { 122 try {
69 const option = { 123 const option = {
70 ca: fs.readFileSync('/etc/letsencrypt/live/' + domain +'/fullchain.pem'), 124 ca: fs.readFileSync('/etc/letsencrypt/live/' + domain +'/fullchain.pem'),
......