Toggle navigation
Toggle navigation
This project
Loading...
Sign in
신일섭
/
ShoppingCart
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Graphs
Issues
4
Network
Create a new issue
Commits
Issue Boards
Authored by
신일섭
2020-06-13 21:02:05 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
d17390b37cd407be96fe14f2133cd0391bf24736
d17390b3
1 parent
2efcc3ab
js구조 세분화
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
170 additions
and
77 deletions
app.js
config/key.js
crawling/gmarket.js
dbcontrol.js
route/route.js
app.js
View file @
d17390b
var
express
=
require
(
'express'
);
var
express
=
require
(
'express'
);
const
request
=
require
(
'request'
);
//--------------- Line messanger modules -------------------
const
TARGET_URL
=
'https://api.line.me/v2/bot/message/reply'
const
TARGET_URL_2
=
'https://api.line.me/v2/bot/message/push'
var
USER_ID
=
' '
;
const
TOKEN
=
'LFi+FvOOFOydz0EKN22WRnQyiilnEiyxe2HVV1WrI54Jnght6+Gga07m7pxqSQltBJG2AV2lYnYOAk4TqxzZFKW9R36CJcQs+NaNEiNKJtgBfT/t3tEta/J6GtXxGz/DqdHnfZqSSfLFpXzun/ITTwdB04t89/1O/w1cDnyilFU='
const
token
=
require
(
'./config/key'
);
const
TOKEN
=
token
.
token
;
// 사용자 토큰 값
//----------------------------------------------------------
//--------------- Translating moudules ----------------------
...
...
@@ -22,19 +23,13 @@ var puppeteer = require('puppeteer');
var
gmarket
=
require
(
'./crawling/gmarket'
);
var
coupang
=
require
(
'./crawling/coupang'
);
var
auction
=
require
(
'./crawling/auction'
);
var
route
=
require
(
'./route/route'
);
var
shopping
=
0
;
// in shopping menu identifier 0 = idle, 1 = shop selecting, 2 = select complete, 3 = shop method selecting
var
shop_select
=
undefined
// shopping-site identifier
var
method_action
=
0
;
// typing count;
var
user_info
=
new
Array
();
// 유저 정보 저장용
//------------------------------------------
//----------------low db-----------------------------------
const
low
=
require
(
'lowdb'
);
const
FileSync
=
require
(
'lowdb/adapters/FileSync'
)
const
adapter
=
new
FileSync
(
'db.json'
);
const
db
=
low
(
adapter
);
const
shortid
=
require
(
'shortid'
);
//---------------------------------------------------------
const
fs
=
require
(
'fs'
);
const
path
=
require
(
'path'
);
...
...
@@ -67,17 +62,11 @@ app.post('/hook', async function (req, res) {
console
.
log
(
'[request message]'
,
eventObj
.
message
);
//----------------------------------------------------------------------------
//--------------- Cancel ----------------------------------------------
if
(
message
.
text
.
includes
(
'/취소'
)){
replying
(
eventObj
.
replyToken
,
'진행중인 기능 및 메뉴를 종료합니다.'
);
shopping
=
0
;
shop_select
=
undefined
trans_counter
=
0
;
method_action
=
0
;
user_info
.
length
=
0
;
}
//---------------------------------------------------------------------
// 취소판정
route
.
cancel
(
message
.
text
,
eventObj
.
replyToken
);
// 쇼핑몰 선택
route
.
shoppingroute
(
message
.
text
,
eventObj
.
source
.
userId
,
eventObj
.
replyToken
);
//----------------------- Translation which includes language-selector -----------------------------------------------
if
(
eventObj
.
message
.
text
.
includes
(
'/번역'
)){
console
.
log
(
'번역캐치: '
,
eventObj
.
message
.
text
);
...
...
@@ -88,59 +77,7 @@ app.post('/hook', async function (req, res) {
}
//--------------------------------------------------------------------------------------------------------------------
//---------------------- linking Shoppingcart crawler ----------------------------------------------------------------
if
(
message
.
text
==
'/쇼핑'
){
replying
(
eventObj
.
replyToken
,
'쇼핑을 선택하셨습니다.\n원하시는 쇼핑몰 사이트를 선택하세요.\n현재 제공되는 사이트는 \n\n/g마켓\n/옥션\n/쿠팡\n\n입니다.\n/취소 로 해당 메뉴에서 퇴장이 가능합니다.'
);
shopping
=
1
;
// 다음 메세지에 선택하지 못할 경우 0으로 되돌릴 필요가있음
}
if
(
shopping
==
1
){
if
(
message
.
text
==
'/g마켓'
){
replying
(
eventObj
.
replyToken
,
'g마켓을 선택하셨습니다.\n원하시는 항목을 선택하세요.\n\n/장바구니동기화\n/장바구니조회\n/장바구니추가\n/장바구니삭제'
);
shopping
=
2
;
shop_select
=
'g마켓'
;
}
else
if
(
message
.
text
==
'/옥션'
){
}
else
if
(
message
.
text
==
'쿠팡'
){
}
}
if
(
shopping
==
2
||
shopping
==
3
){
if
(
shop_select
==
'g마켓'
){
if
(
shopping
==
2
&&
message
.
text
==
'/장바구니동기화'
)
{
replying
(
eventObj
.
replyToken
,
'====장바구니동기화====\n\n장바구니를 동기화 하기 위해 쇼핑몰에 연결합니다.\n\n아이디와 패스워드를 입력해 주세요:'
);
method_action
=
2
;
shopping
=
3
;
}
else
if
(
shopping
==
3
&&
method_action
!=
0
)
{
replying
(
eventObj
.
replyToken
,
'===아이디/패스워드 입력중==='
);
user_info
[
method_action
]
=
message
.
text
;
// 아이디 패스워드를 user_info[2], user_info[1]에 저장
method_action
--
;
if
(
method_action
==
0
){
//장바구니 크롤링하는 함수
USER_ID
=
eventObj
.
source
.
userId
;
// 상대방 ID 획득
await
gmarket
.
gmarket_c
(
USER_ID
,
user_info
[
2
],
user_info
[
1
]);
// replying(eventObj.replyToken, '리스트를 출력중입니다... 출력전까지 기다려주세요\n\n\n/장바구니동기화\n장바구니조회\n/장바구니추가\n/장바구니삭제');
shopping
=
2
;
}
}
if
(
message
.
text
==
'/장바구니조회'
)
{
}
if
(
message
.
text
==
'/장바구니추가'
)
{
}
if
(
message
.
text
==
'/장바구니삭제'
)
{
}
}
}
//--------------------------------------------------------------------------------------------------------------------
res
.
sendStatus
(
200
);
...
...
config/key.js
0 → 100644
View file @
d17390b
// Line Massenger Token Variables
// 원작자 이외에 이용시 키 값을 바꿔줄것
const
token
=
'LFi+FvOOFOydz0EKN22WRnQyiilnEiyxe2HVV1WrI54Jnght6+Gga07m7pxqSQltBJG2AV2lYnYOAk4TqxzZFKW9R36CJcQs+NaNEiNKJtgBfT/t3tEta/J6GtXxGz/DqdHnfZqSSfLFpXzun/ITTwdB04t89/1O/w1cDnyilFU='
module
.
exports
.
token
=
token
;
\ No newline at end of file
crawling/gmarket.js
View file @
d17390b
...
...
@@ -11,7 +11,8 @@ const bodyParser = require('body-parser');
const
TARGET_URL
=
'https://api.line.me/v2/bot/message/reply'
const
TARGET_URL_2
=
'https://api.line.me/v2/bot/message/push'
var
USER_ID
=
' '
;
const
TOKEN
=
'LFi+FvOOFOydz0EKN22WRnQyiilnEiyxe2HVV1WrI54Jnght6+Gga07m7pxqSQltBJG2AV2lYnYOAk4TqxzZFKW9R36CJcQs+NaNEiNKJtgBfT/t3tEta/J6GtXxGz/DqdHnfZqSSfLFpXzun/ITTwdB04t89/1O/w1cDnyilFU='
const
token
=
require
(
'../config/key'
);
const
TOKEN
=
token
.
token
;
//사용자 토큰
//----------------------------------------------------------
//----------------low db-----------------------------------
...
...
@@ -21,8 +22,6 @@ const adapter = new FileSync('db.json');
const
db
=
low
(
adapter
);
//---------------------------------------------------------
//gmarket_c();
// Gmarket Cart Crawling
async
function
gmarket_c
(
user_id
,
g_id
,
g_pw
){
...
...
@@ -68,6 +67,7 @@ async function gmarket_c(user_id, g_id, g_pw){
}
await
browser
.
close
();
}
...
...
dbcontrol.js
0 → 100644
View file @
d17390b
//----------------low db-----------------------------------
const
low
=
require
(
'lowdb'
);
const
FileSync
=
require
(
'lowdb/adapters/FileSync'
)
const
adapter
=
new
FileSync
(
'db.json'
);
const
db
=
low
(
adapter
);
//---------------------------------------------------------
\ No newline at end of file
route/route.js
0 → 100644
View file @
d17390b
// 쇼핑사이트 분기점 제공용
const
request
=
require
(
'request'
);
const
fs
=
require
(
'fs'
);
const
path
=
require
(
'path'
);
const
HTTPS
=
require
(
'https'
);
//--------------- Line messanger modules -------------------
const
TARGET_URL
=
'https://api.line.me/v2/bot/message/reply'
const
TARGET_URL_2
=
'https://api.line.me/v2/bot/message/push'
var
USER_ID
=
' '
;
// pushing 용 유저아이디
const
token
=
require
(
'../config/key'
);
const
TOKEN
=
token
.
token
;
//사용자 토큰
//----------------------------------------------------------
// ---------- Shopping modules -------------
var
gmarket
=
require
(
'../crawling/gmarket'
);
var
coupang
=
require
(
'../crawling/coupang'
);
var
auction
=
require
(
'../crawling/auction'
);
var
shopping
=
0
;
// in shopping menu identifier 0 = idle, 1 = shop selecting, 2 = select complete, 3 = shop method selecting
var
shop_select
=
undefined
// shopping-site identifier
var
method_action
=
0
;
// typing count;
var
user_info
=
new
Array
();
// 유저 정보 저장용
//------------------------------------------
// ========================================= 쇼핑몰 연결 중계 =========================================
async
function
shoppingroute
(
user_message
,
user_id
,
replyToken
){
USER_ID
=
user_id
;
if
(
user_message
==
'/쇼핑'
){
replying
(
replyToken
,
'쇼핑을 선택하셨습니다.\n원하시는 쇼핑몰 사이트를 선택하세요.\n현재 제공되는 사이트는 \n\n/g마켓\n/옥션\n/쿠팡\n\n입니다.\n/취소 로 해당 메뉴에서 퇴장이 가능합니다.'
);
shopping
=
1
;
// 다음 메세지에 선택하지 못할 경우 0으로 되돌릴 필요가있음
}
if
(
shopping
==
1
){
if
(
user_message
==
'/g마켓'
){
replying
(
replyToken
,
'g마켓을 선택하셨습니다.\n원하시는 항목을 선택하세요.\n\n/장바구니동기화\n/장바구니조회\n/장바구니추가\n/장바구니삭제'
);
shopping
=
2
;
shop_select
=
'g마켓'
;
}
else
if
(
user_message
==
'/옥션'
){
}
else
if
(
user_message
==
'쿠팡'
){
}
}
if
(
shopping
==
2
||
shopping
==
3
){
if
(
shop_select
==
'g마켓'
){
if
(
shopping
==
2
&&
user_message
==
'/장바구니동기화'
)
{
replying
(
replyToken
,
'====장바구니동기화====\n\n장바구니를 동기화 하기 위해 쇼핑몰에 연결합니다.\n\n아이디와 패스워드를 입력해 주세요:'
);
method_action
=
2
;
shopping
=
3
;
}
else
if
(
shopping
==
3
&&
method_action
!=
0
)
{
replying
(
replyToken
,
'===아이디/패스워드 입력중==='
);
user_info
[
method_action
]
=
user_message
;
// 아이디 패스워드를 user_info[2], user_info[1]에 저장
method_action
--
;
if
(
method_action
==
0
){
//장바구니 크롤링하는 함수
USER_ID
=
user_id
;
// 상대방 ID 획득
await
gmarket
.
gmarket_c
(
USER_ID
,
user_info
[
2
],
user_info
[
1
]);
// replying(eventObj.replyToken, '리스트를 출력중입니다... 출력전까지 기다려주세요\n\n\n/장바구니동기화\n장바구니조회\n/장바구니추가\n/장바구니삭제');
shopping
=
2
;
}
}
if
(
user_message
==
'/장바구니조회'
)
{
}
if
(
user_message
==
'/장바구니추가'
)
{
}
if
(
user_message
==
'/장바구니삭제'
)
{
}
}
}
}
// ============================ /취소 입력시 =================================
async
function
cancel
(
user_message
,
replyToken
){
if
(
user_message
.
includes
(
'/취소'
)){
replying
(
replyToken
,
'진행중인 기능 및 메뉴를 종료합니다.'
);
shopping
=
0
;
shop_select
=
undefined
method_action
=
0
;
user_info
.
length
=
0
;
}
}
//================== Just replying specific messages needed ===================================
async
function
replying
(
replyToken
,
sp_message
){
// sp_message is message(string) that depends on the situation that user selects
request
.
post
(
{
url
:
TARGET_URL
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"replyToken"
:
replyToken
,
"messages"
:[
{
"type"
:
"text"
,
"text"
:
sp_message
// replying message
}
]
}
},(
error
,
response
,
body
)
=>
{
// console.log(body)
});
}
//================== Just pushing specific messages needed ===================================
async
function
pushing
(
sp_message
){
//push function
request
.
post
(
{
url
:
TARGET_URL_2
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"to"
:
`
${
USER_ID
}
`
,
"messages"
:[
{
"type"
:
"text"
,
"text"
:
sp_message
// replying message
}
]
}
},(
error
,
response
,
body
)
=>
{
//console.log(body)
});
}
module
.
exports
.
shoppingroute
=
shoppingroute
;
module
.
exports
.
cancel
=
cancel
;
Please
register
or
login
to post a comment