Toggle navigation
Toggle navigation
This project
Loading...
Sign in
ShinSeungMin
/
Multiplex_Ticketing_Platform
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
이혜인
2022-06-03 15:25:41 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
60497e005edd9f3496e07b8a0dbbaf8a0f5f9ce5
60497e00
1 parent
eb44c5c9
commit to clone for chatbot
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
169 additions
and
0 deletions
Chatbot/Megabox.js
Chatbot/app.js
Chatbot/package.json
Chatbot/Megabox.js
0 → 100644
View file @
60497e0
const
request
=
require
(
'request'
);
const
cheerio
=
require
(
'cheerio'
);
const
puppeteer
=
require
(
'puppeteer'
);
const
{
Builder
,
until
}
=
require
(
'selenium-webdriver'
);
//모듈 불러오기
var
webdriver
=
require
(
'selenium-webdriver'
);
var
By
=
webdriver
.
By
;
const
chrome
=
require
(
'selenium-webdriver/chrome'
);
//크롬 사용시
const
async
=
require
(
'async'
)
let
express
=
require
(
'express'
);
let
app
=
express
();
let
bodyParser
=
require
(
'body-parser'
);
const
{
timeout
}
=
require
(
'async'
);
app
.
use
(
bodyParser
.
urlencoded
({
extended
:
false
}));
app
.
use
(
bodyParser
.
json
());
const
booking_url
=
"https://megabox.co.kr/booking"
;
const
rate_url
=
"https://www.megabox.co.kr/movie"
;
let
r
=
0
;
let
movie_data
=
[];
exports
.
movie_data
=
movie_data
;
let
location_data
=
[];
let
index
=
0
;
exports
.
init
=
()
=>
{
async
.
waterfall
([
//for 동기적 처리
async
()
=>
{
const
driver
=
new
webdriver
.
Builder
().
forBrowser
(
'chrome'
).
setChromeOptions
(
new
chrome
.
Options
().
headless
()).
build
();
//
driver
.
get
(
booking_url
);
driver
.
switchTo
().
frame
(
0
)
//frameBokdMBooking 프레임 가져옴
let
seoul
=
await
driver
.
wait
(
until
.
elementsLocated
(
By
.
css
(
'#mCSB_4_container>ul>li>#btn'
)));
let
Gyeonggi
=
await
driver
.
wait
(
until
.
elementsLocated
(
By
.
css
(
'#mCSB_5_container>ul>li>#btn'
)));
const
Incheon
=
await
driver
.
wait
(
until
.
elementsLocated
(
By
.
css
(
'#mCSB_6_container>ul>li>#btn'
)));
const
DCS
=
await
driver
.
wait
(
until
.
elementsLocated
(
By
.
css
(
'#mCSB_7_container>ul>li>#btn'
)));
//Daejeon Chungcheong Sejong
const
BDG
=
await
driver
.
wait
(
until
.
elementsLocated
(
By
.
css
(
'#mCSB_8_container>ul>li>#btn'
)));
//Busan Daegu Gyeongsang
const
GJ
=
await
driver
.
wait
(
until
.
elementsLocated
(
By
.
css
(
'#mCSB_9_container>ul>li>#btn'
)));
//gwangju_jeonla
const
Gangwon
=
await
driver
.
wait
(
until
.
elementsLocated
(
By
.
css
(
'#mCSB_10_container>ul>li>#btn'
)));
const
location_list
=
[
seoul
,
Gyeonggi
,
Incheon
,
DCS
,
BDG
,
GJ
,
Gangwon
]
//
for
(
let
i
=
0
;
i
<
location_list
.
length
;
i
++
){
for
(
item
of
location_list
[
i
])
{
location_data
[
index
++
]
=
{
'LocationName'
:
await
item
.
getAttribute
(
"brch-nm"
),
'LocationNUm'
:
await
item
.
getAttribute
(
"brch-no"
)
}
// let location_name = await item.getAttribute("brch-nm");
// let location_num = await item.getAttribute("brch-no");
// let obj = {};
// obj[location_name]= location_num
// location_data[index++] = obj;
}
}
let
movie_list
=
await
driver
.
wait
(
until
.
elementsLocated
(
By
.
css
(
'#mCSB_1_container>ul>li>.btn'
)));
r
=
0
;
for
(
item
of
movie_list
)
{
//Using getAttribute to get the data
movie_data
[
r
++
]
=
{
'rank'
:
r
,
'title'
:
await
item
.
getAttribute
(
"movie-nm"
),
'movie_num'
:
await
item
.
getAttribute
(
"movie-no"
),
}
}
driver
.
close
();
},
async
()
=>
{
r
=
0
;
const
browser
=
await
puppeteer
.
launch
({
headless
:
true
});
const
page
=
await
browser
.
newPage
();
await
page
.
goto
(
rate_url
);
const
content
=
await
page
.
content
();
const
$
=
cheerio
.
load
(
content
);
const
$rate_lists
=
$
(
"ol.list>li"
);
$rate_lists
.
each
((
index
,
list
)
=>
{
const
name
=
$
(
list
).
find
(
'div.tit-area > p.tit'
).
attr
(
'title'
);
const
rate
=
$
(
list
).
find
(
'div.rate-date > span.rate'
).
text
();
if
(
movie_data
[
r
].
title
===
name
){
movie_data
[
r
++
][
'rate'
]
=
rate
;
}
});
for
(
i
of
movie_data
){
if
(
Object
.
keys
(
i
).
length
==
3
){
movie_data
[
r
++
][
'rate'
]
=
'예매율 0%'
;
}
}
browser
.
close
();
},
])}
let
userData
=
{
'Date'
:
''
,
'location'
:
''
};
// const _sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay));
app
.
get
(
'/Megabox'
,
(
req
,
res
)
=>
{
res
.
send
(
movie_data
);
})
const
appdriver
=
new
webdriver
.
Builder
().
forBrowser
(
'chrome'
).
setChromeOptions
(
new
chrome
.
Options
().
headless
()).
build
();
//.setChromeOptions(new chrome.Options().headless())
app
.
post
(
'/Megabox'
,
(
req
,
res
)
=>
{
//사용자에게 Date와 location(영화관 장소) 받아옴
userData
[
'Date'
]
=
req
.
body
.
Date
;
for
(
i
of
location_data
){
if
(
i
[
'LocationName'
]
==
req
.
body
.
location
){
userData
[
'location'
]
=
i
[
'LocationNUm'
];
break
;
}
}
let
PlayingMovieURL
=
booking_url
+
'?brchNo1='
+
userData
[
'location'
]
+
'&playDe='
+
userData
[
'Date'
];
//사용자 정보 바탕으로 해당 일자 영화관 영화 상영 여부 확인
appdriver
.
get
(
PlayingMovieURL
);
appdriver
.
switchTo
().
frame
(
0
)
//frameBokdMBooking 프레임 가져옴
res
.
send
(
movie_data
);
})
app
.
get
(
'/Megabox/GetPlayingMovie'
,
async
(
req
,
res
,
next
)
=>
{
//영화 상영 여부 객체에 넣음
let
movie_list
=
await
appdriver
.
wait
(
until
.
elementsLocated
(
By
.
css
(
'#mCSB_1_container>ul>li>.btn'
)));
let
n
=
0
;
for
(
item
of
movie_list
)
{
movie_data
[
n
++
][
'running'
]
=
await
item
.
getAttribute
(
'form-at'
)
}
res
.
send
(
movie_data
);
})
app
.
listen
(
23023
);
\ No newline at end of file
Chatbot/app.js
0 → 100644
View file @
60497e0
let
megabox
=
require
(
'./Megabox.js'
);
megabox
.
init
();
Chatbot/package.json
0 → 100644
View file @
60497e0
{
"name"
:
"megabox"
,
"version"
:
"1.0.0"
,
"description"
:
""
,
"main"
:
"app.js"
,
"scripts"
:
{
"test"
:
"echo
\"
Error: no test specified
\"
&& exit 1"
},
"keywords"
:
[],
"author"
:
""
,
"license"
:
"ISC"
,
"dependencies"
:
{
"async"
:
"^3.2.3"
,
"body-parser"
:
"^1.20.0"
,
"cheerio"
:
"^1.0.0-rc.11"
,
"express"
:
"^4.18.1"
,
"puppeteer"
:
"^14.1.1"
,
"selenium-webdriver"
:
"^4.1.2"
}
}
Please
register
or
login
to post a comment