Toggle navigation
Toggle navigation
This project
Loading...
Sign in
백승욱
/
movie-reco-chatbot
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-06 17:43:01 +0900
Browse Files
Options
Browse Files
Download
Plain Diff
Commit
388222ca6b8a6847f6d8e450a14c47390bac9b06
388222ca
2 parents
4e229176
8c18cfcd
Merge branch 'feature/MovieRecommend'(for version 1.0)
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
34 additions
and
28 deletions
DailyBoxOfficeList.js
main.js
DailyBoxOfficeList.js
View file @
388222c
...
...
@@ -3,24 +3,23 @@ var express = require('express');
const
request
=
require
(
'request'
);
const
config
=
require
(
'./config.json'
);
//=============================================================
const
LINE_
URL
=
'https://api.line.me/v2/bot/message/reply'
;
const
LINE_
REPLY_URL
=
'https://api.line.me/v2/bot/message/reply'
const
TOKEN
=
config
.
TOKEN
;
const
KOFIC_URL
=
'http://www.kobis.or.kr/kobisopenapi/webservice/rest'
;
const
KOFIC_URL
=
'http://www.kobis.or.kr/kobisopenapi/webservice/rest'
const
KOFIC_KEY
=
config
.
KOFIC_KEY
;
//=============================================================
// 어제 기준 영화 순위(1위 ~ 5위) 출력
exports
.
ShowYesterdayRank
=
function
(
replyToken
)
{
exports
.
ShowYesterdayRank
=
function
(
replyToken
)
{
var
yesterday
=
exports
.
GetYesterday
();
request
.
get
(
{
url
:
KOFIC_URL
+
`/boxoffice/searchDailyBoxOfficeList.json?key=
${
KOFIC_KEY
}
&targetDt=
${
yesterday
}
`
,
json
:
true
},(
error
,
response
,
body
)
=>
{
if
(
!
error
&&
response
.
statusCode
==
200
)
{
console
.
log
(
body
.
boxOfficeResult
);
url
:
KOFIC_URL
+
`/boxoffice/searchDailyBoxOfficeList.json?key=
${
KOFIC_KEY
}
&targetDt=
${
yesterday
}
`
,
json
:
true
},
(
error
,
response
,
body
)
=>
{
if
(
!
error
&&
response
.
statusCode
==
200
)
{
var
movieName
=
[];
movieName
[
0
]
=
body
.
boxOfficeResult
.
dailyBoxOfficeList
[
0
].
movieNm
;
...
...
@@ -43,27 +42,35 @@ exports.ShowYesterdayRank = function(replyToken) {
movieAudiAcc
[
3
]
=
exports
.
numberWithCommas
(
body
.
boxOfficeResult
.
dailyBoxOfficeList
[
3
].
audiAcc
);
movieAudiAcc
[
4
]
=
exports
.
numberWithCommas
(
body
.
boxOfficeResult
.
dailyBoxOfficeList
[
4
].
audiAcc
);
var
movieCode
=
[];
movieCode
[
0
]
=
body
.
boxOfficeResult
.
dailyBoxOfficeList
[
0
].
movieCd
;
movieCode
[
1
]
=
body
.
boxOfficeResult
.
dailyBoxOfficeList
[
1
].
movieCd
;
movieCode
[
2
]
=
body
.
boxOfficeResult
.
dailyBoxOfficeList
[
2
].
movieCd
;
movieCode
[
3
]
=
body
.
boxOfficeResult
.
dailyBoxOfficeList
[
3
].
movieCd
;
movieCode
[
4
]
=
body
.
boxOfficeResult
.
dailyBoxOfficeList
[
4
].
movieCd
;
request
.
post
(
{
url
:
LINE_URL
,
url
:
LINE_
REPLY_
URL
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"replyToken"
:
replyToken
,
"messages"
:[
"replyToken"
:
replyToken
,
"messages"
:
[
{
"type"
:
"text"
,
"type"
:
"text"
,
"text"
:
`[1위]\n영화제목 :
${
movieName
[
0
]}
\n개봉일 :
${
movieOpenDt
[
0
]}
\n누적 관객 수 :
${
movieAudiAcc
[
0
]}
명\n\n`
+
`[2위]\n영화제목 :
${
movieName
[
1
]}
\n개봉일 :
${
movieOpenDt
[
1
]}
\n누적 관객 수 :
${
movieAudiAcc
[
1
]}
명\n\n`
+
`[3위]\n영화제목 :
${
movieName
[
2
]}
\n개봉일 :
${
movieOpenDt
[
2
]}
\n누적 관객 수 :
${
movieAudiAcc
[
2
]}
명\n\n`
+
`[4위]\n영화제목 :
${
movieName
[
3
]}
\n개봉일 :
${
movieOpenDt
[
3
]}
\n누적 관객 수 :
${
movieAudiAcc
[
3
]}
명\n\n`
+
`[5위]\n영화제목 :
${
movieName
[
4
]}
\n개봉일 :
${
movieOpenDt
[
4
]}
\n누적 관객 수 :
${
movieAudiAcc
[
4
]}
명\n\n`
`[1위]\n영화제목 :
${
movieName
[
0
]}
\n개봉일 :
${
movieOpenDt
[
0
]}
\n누적 관객 수 :
${
movieAudiAcc
[
0
]}
명\n영화코드 :
${
movieCode
[
0
]}
\n\n`
+
`[2위]\n영화제목 :
${
movieName
[
1
]}
\n개봉일 :
${
movieOpenDt
[
1
]}
\n누적 관객 수 :
${
movieAudiAcc
[
1
]}
명\n영화코드 :
${
movieCode
[
1
]}
\n\n`
+
`[3위]\n영화제목 :
${
movieName
[
2
]}
\n개봉일 :
${
movieOpenDt
[
2
]}
\n누적 관객 수 :
${
movieAudiAcc
[
2
]}
명\n영화코드 :
${
movieCode
[
2
]}
\n\n`
+
`[4위]\n영화제목 :
${
movieName
[
3
]}
\n개봉일 :
${
movieOpenDt
[
3
]}
\n누적 관객 수 :
${
movieAudiAcc
[
3
]}
명\n영화코드 :
${
movieCode
[
3
]}
\n\n`
+
`[5위]\n영화제목 :
${
movieName
[
4
]}
\n개봉일 :
${
movieOpenDt
[
4
]}
\n누적 관객 수 :
${
movieAudiAcc
[
4
]}
명\n영화코드 :
${
movieCode
[
4
]}
\n\n`
+
`영화 상세 정보를 조회하시려면, 영화코드를 입력해주세요.`
}
]
}
},(
error
,
response
,
body
)
=>
{
},
(
error
,
response
,
body
)
=>
{
console
.
log
(
body
)
});
}
...
...
@@ -72,7 +79,7 @@ exports.ShowYesterdayRank = function(replyToken) {
// 어제 날짜를 YYYYMMDD 형식(type: string)으로 반환하는 함수
exports
.
GetYesterday
=
function
()
{
exports
.
GetYesterday
=
function
()
{
var
today
=
new
Date
();
var
yesterday
=
new
Date
(
today
.
setDate
(
today
.
getDate
()
-
1
));
...
...
@@ -86,6 +93,6 @@ exports.GetYesterday = function() {
// 숫자 사이에 콤마(,) 찍고 반환하는 함수(입력, 출력 모두 문자열)
exports
.
numberWithCommas
=
function
(
x
)
{
exports
.
numberWithCommas
=
function
(
x
)
{
return
x
.
toString
().
replace
(
/
\B(?=(\d{3})
+
(?!\d))
/g
,
","
);
}
...
...
main.js
View file @
388222c
...
...
@@ -2,7 +2,6 @@
var
express
=
require
(
'express'
);
const
request
=
require
(
'request'
);
const
config
=
require
(
'./config.json'
);
const
dailyBoxOfficeList
=
require
(
'./DailyBoxOfficeList.js'
);
//=============================================================
const
LINE_URL
=
'https://api.line.me/v2/bot/message/reply'
const
TOKEN
=
config
.
TOKEN
;
...
...
@@ -28,7 +27,7 @@ app.post('/hook', function (req, res) {
var
eventObj
=
req
.
body
.
events
[
0
];
// console.log for debugging
console
.
log
(
'======================'
,
new
Date
()
,
'======================'
);
console
.
log
(
'======================'
,
new
Date
()
,
'======================'
);
console
.
log
(
'[request]'
,
req
.
body
);
console
.
log
(
'[request source] '
,
eventObj
.
source
);
console
.
log
(
'[request message]'
,
eventObj
.
message
);
...
...
@@ -40,15 +39,15 @@ app.post('/hook', function (req, res) {
// RESPONSE TO MESSAGE
function
Response
(
replyToken
,
message
){
function
Response
(
replyToken
,
message
)
{
// 사용자가 보낸 라인 메시지 문자열 안에 특정 문자열이 있으면, 특정 함수 실행
if
(
message
.
includes
(
'최신'
)
||
message
.
includes
(
'순위'
)
||
message
.
includes
(
'오늘'
)
||
message
.
includes
(
'추천'
))
{
if
(
message
.
includes
(
'최신'
)
||
message
.
includes
(
'순위'
)
||
message
.
includes
(
'오늘'
)
||
message
.
includes
(
'추천'
))
{
BoxOffice
.
ShowYesterdayRank
(
replyToken
);
}
else
if
(
isNaN
(
message
)
===
false
&&
message
.
length
===
8
)
{
// (예시) 영화 줄거리 출력
MovieInfo
.
MovieInfo
(
replyToken
,
message
);
}
else
if
(
typeof
(
message
)
===
'string'
)
{
else
if
(
typeof
(
message
)
===
'string'
)
{
// (예시) 영화 목록 출력
MovieList
.
movielist
(
replyToken
,
message
);
}
...
...
@@ -58,9 +57,9 @@ function Response(replyToken, message){
// ※ WARNING: DO NOT TOUCH THIS CODE SECTION ※
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
(),
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
(),
};
HTTPS
.
createServer
(
option
,
app
).
listen
(
sslport
,
()
=>
{
...
...
Please
register
or
login
to post a comment