신지원

Merge remote-tracking branch 'origin/feature/YouTube_API

*.json
node_modules/
/index_Temp.js
/Info.js
\ No newline at end of file
*.json
node_modules/
vscode/
Info.js
......
const { google } = require("googleapis");
var service = google.youtube('v3');
service.playlistItems.list({
key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
part: 'snippet',
fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보.
maxResults: 10,
playlistId: 'PLfVO1GXBPp3s03voaFAWN7AkzEnpsGF1U'
}, function (err, response) {
if (err) {
console.log('The API returned an error: ', err);
return;
}
var video = response.data.items;
if (video.length == 0) {
console.log('검색된 동영상이 없습니다.');
} else {
for (var i = 0; i < 10; i++) {
console.log('{');
console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, ""));
var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId);
console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환
console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, ""));
console.log('}');
}
}
})
const { google } = require("googleapis");
var service = google.youtube('v3');
service.playlistItems.list({
key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
part: 'snippet',
fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보.
maxResults: 10,
playlistId: 'PLfVO1GXBPp3t4Wp8l-cR9s8wpWI2Fnz4g'
}, function (err, response) {
if (err) {
console.log('The API returned an error: ', err);
return;
}
var video = response.data.items;
if (video.length == 0) {
console.log('검색된 동영상이 없습니다.');
} else {
for (var i = 0; i < 10; i++) {
console.log('{');
console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, ""));
var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId);
console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환
console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, ""));
console.log('}');
}
}
})
const { google } = require("googleapis");
var service = google.youtube('v3');
service.playlistItems.list({
key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
part: 'snippet',
fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보.
maxResults: 10,
playlistId: 'PLfVO1GXBPp3vXaFB2VtbdQ2h6ljGZOSlj'
}, function (err, response) {
if (err) {
console.log('The API returned an error: ', err);
return;
}
var video = response.data.items;
if (video.length == 0) {
console.log('검색된 동영상이 없습니다.');
} else {
for (var i = 0; i < 10; i++) {
console.log('{');
console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, ""));
var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId);
console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환
console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, ""));
console.log('}');
}
}
})
const { google } = require("googleapis");
var service = google.youtube('v3');
service.playlistItems.list({
key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
part: 'snippet',
fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보.
maxResults: 10,
playlistId: 'PLfVO1GXBPp3tdasvQuIu_BmSNm4GVwnNj'
}, function (err, response) {
if (err) {
console.log('The API returned an error: ', err);
return;
}
var video = response.data.items;
if (video.length == 0) {
console.log('검색된 동영상이 없습니다.');
} else {
for (var i = 0; i < 10; i++) {
console.log('{');
console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, ""));
var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId);
console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환
console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, ""));
console.log('}');
}
}
})
const { google } = require("googleapis");
var service = google.youtube('v3');
service.playlistItems.list({
key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
part: 'snippet',
fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보.
maxResults: 10,
playlistId: 'PLfVO1GXBPp3vrR3ZcQFlCEC6oNdo_MQ_R'
}, function (err, response) {
if (err) {
console.log('The API returned an error: ', err);
return;
}
var video = response.data.items;
if (video.length == 0) {
console.log('검색된 동영상이 없습니다.');
} else {
for (var i = 0; i < 10; i++) {
console.log('{');
console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, ""));
var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId);
console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환
console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, ""));
console.log('}');
}
}
})
const { google } = require("googleapis");
var service = google.youtube('v3');
service.playlistItems.list({
key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
part: 'snippet',
fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보.
maxResults: 10,
playlistId: 'PLfVO1GXBPp3tgrwk3GDJi3v-E_Hnq3lDO'
}, function (err, response) {
if (err) {
console.log('The API returned an error: ', err);
return;
}
var video = response.data.items;
if (video.length == 0) {
console.log('검색된 동영상이 없습니다.');
} else {
for (var i = 0; i < 10; i++) {
console.log('{');
console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, ""));
var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId);
console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환
console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, ""));
console.log('}');
}
}
})
const { google } = require("googleapis");
var service = google.youtube('v3');
service.playlistItems.list({
key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
part: 'snippet',
fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보.
maxResults: 10,
playlistId: 'PLfVO1GXBPp3ubihJVPi6HSltRIuvSqSI1'
}, function (err, response) {
if (err) {
console.log('The API returned an error: ', err);
return;
}
var video = response.data.items;
if (video.length == 0) {
console.log('검색된 동영상이 없습니다.');
} else {
for (var i = 0; i < 10; i++) {
console.log('{');
console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, ""));
var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId);
console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환
console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, ""));
console.log('}');
}
}
})
const { google } = require("googleapis");
var service = google.youtube('v3');
service.playlistItems.list({
key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
part: 'snippet',
fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보.
maxResults: 10,
playlistId: 'PLfVO1GXBPp3u0ckIfYZkADGlSQ6LQoAIQ'
}, function (err, response) {
if (err) {
console.log('The API returned an error: ', err);
return;
}
var video = response.data.items;
if (video.length == 0) {
console.log('검색된 동영상이 없습니다.');
} else {
for (var i = 0; i < 10; i++) {
console.log('{');
console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, ""));
var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId);
console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환
console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, ""));
console.log('}');
}
}
})
const { google } = require("googleapis");
var service = google.youtube('v3');
service.playlistItems.list({
key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
part: 'snippet',
fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보.
maxResults: 10,
playlistId: 'PLfVO1GXBPp3vo3sivJPfFzREBECRFepVK'
}, function (err, response) {
if (err) {
console.log('The API returned an error: ', err);
return;
}
var video = response.data.items;
if (video.length == 0) {
console.log('검색된 동영상이 없습니다.');
} else {
for (var i = 0; i < 10; i++) {
console.log('{');
console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, ""));
var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId);
console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환
console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, ""));
console.log('}');
}
}
})
const { google } = require("googleapis");
var service = google.youtube('v3');
service.search.list({
key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
part: 'id, snippet',
fields: 'items(id(videoId),snippet(title,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보.
maxResults: 1, // 최상단의 1개만 출력
q: '경희대학교', // eventObj.message.text 를 input하도록 연결하시면 됩니다.
regionCode: 'KR'
}, function (err, response) {
if (err) {
console.log('The API returned an error: ', err);
return;
}
var video = response.data.items;
if (video.length == 0) {
console.log('검색된 동영상이 없습니다.');
} else {
console.log('{');
console.log(JSON.stringify(response.data.items[0].snippet.title).replace(/\"/gi, ""));
var a = JSON.stringify(response.data.items[0].id.videoId);
console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환
console.log(JSON.stringify(response.data.items[0].snippet.thumbnails.high.url).replace(/\"/gi, ""));
console.log('}');
}
})
수동으로 googleapis 를 npm install 해야합니다.
\ No newline at end of file
// 아래 주석을 참고해 플레이리스트 or 노래의 배열을 직접 만드시면 됩니다.
// 배열을 만들 때, 활용하실 id값이 플레이리스트의 id인지, 특정 노래의 id인지 구별해서 배열을 만드셔야 합니다.
// '플레이리스트'의 id라면 인덱스 500 이하로,
// '특정 노래'의 id라면 인덱스 500 이상으로 넣어주세요!
// 아래 예시를 보고 이해 안되시면, 편하게 카톡으로 말씀해주세요
// index < 500 = 플레이리스트
// index > 500 = 개별 곡
// index 100번대 = 장르 플레이리스트
// index 200번대 = 무드 플레이리스트
// index 300번대 = 가수 플레이리스트
// index 500번대 = 특정 플레이리스트의 노래 10곡
// index 101 = 장르 - 힙합
// index 102 = 장르 - 피아노
// index 103 = 장르 - 팝
// index 201 = 무드 - 익사이팅
// index 202 = 무드 - 새드
// index 301 = 가수 - 블랙핑크
// index 302 = 가수 - 아이유
// index 303 = 가수 - 레드벨벳
// index 304 = 가수 - 트와이스
// index 501 = 슬픈노래 10곡
exports.all_ids = [];
exports.all_ids[101] = 'PLfVO1GXBPp3s03voaFAWN7AkzEnpsGF1U'
exports.all_ids[102] = 'PLfVO1GXBPp3t4Wp8l-cR9s8wpWI2Fnz4g'
exports.all_ids[103] = 'PLfVO1GXBPp3vXaFB2VtbdQ2h6ljGZOSlj'
exports.all_ids[201] = 'PLfVO1GXBPp3tdasvQuIu_BmSNm4GVwnNj'
exports.all_ids[202] = 'PLfVO1GXBPp3vrR3ZcQFlCEC6oNdo_MQ_R'
exports.all_ids[301] = 'PLfVO1GXBPp3tgrwk3GDJi3v-E_Hnq3lDO'
exports.all_ids[302] = 'PLfVO1GXBPp3ubihJVPi6HSltRIuvSqSI1'
exports.all_ids[303] = 'PLfVO1GXBPp3u0ckIfYZkADGlSQ6LQoAIQ'
exports.all_ids[304] = 'PLfVO1GXBPp3vo3sivJPfFzREBECRFepVK'
exports.all_ids[501] = ['p5iu1V30myk', 'i-SBnhaZSSU', 'Etfgb6A7hSI', 'IN2mml9xs_s',
'tp1uoFAfgHE', 'Qx22TnVVIfU', '3y1QIqR115A', 'VXBI1wt8XII', 'aWMBn2--E0Q', 'HyTbgBlnLCo'];
\ No newline at end of file
var Info = require('./Info');
var ids = require('./all_ids')
const request = require('request');
const fs = require('fs');
const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'
var { google } = require('googleapis');
var service = google.youtube('v3');
exports.check = function (message, replyToken) {
const rand_0to9 = Math.floor(Math.random() * 10); // 0~9까지 난수생성
var choice;
var choose;
switch (message) {
case "슬픈 노래":
choose = 501;
choice = ids.all_ids[choose][rand_0to9]
break;
case "힙합 플레이리스트":
choose = 101;
choice = ids.all_ids[choose]
break;
case "피아노 플레이리스트":
choose = 102;
choice = ids.all_ids[choose]
break;
case "팝 플레이리스트":
choose = 103;
choice = ids.all_ids[choose]
break;
case "신나는 플레이리스트":
choose = 201;
choice = ids.all_ids[choose]
break;
case "슬픈 플레이리스트":
choose = 202;
choice = ids.all_ids[choose]
break;
case "블랙핑크 플레이리스트":
choose = 301;
choice = ids.all_ids[choose]
break;
case "아이유 플레이리스트":
choose = 302;
choice = ids.all_ids[choose]
break;
case "레드벨벳 플레이리스트":
choose = 303;
choice = ids.all_ids[choose]
break;
case "트와이스 플레이리스트":
choose = 304;
choice = ids.all_ids[choose]
break;
// 아래는 case 추가를 위한 템플릿
// case "":
// choose = ;
// choice = ids.all_ids[choose]
default:
console.log("잘못 입력했어요~ 다시 입력하세요");
choice = -1;
}
if (choose > 500) {
service.videos.list
(
{
key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
part: 'snippet',
id: choice,
fields: 'items(snippet(title))'
},
function (err, response) {
if (err) {
console.log('The API returned an error: ', err);
return;
}
var video = response.data.items;
if (video.length == 0) {
console.log('검색된 동영상이 없습니다.');
}
else {
sendMessage = JSON.stringify(response.data.items[0].snippet.title);
console.log(sendMessage);
request.post(
{
url: TARGET_URL,
headers:
{
'Authorization': `Bearer ${Info.TOKEN}`
},
json:
{
"replyToken": replyToken,
"messages":
[
{
"type": "image",
"originalContentUrl": "https://img.youtube.com/vi/" + choice + "/hqdefault.jpg",
"previewImageUrl": "https://img.youtube.com/vi/" + choice + "/hqdefault.jpg"
},
{
"type": "text",
"text": sendMessage
}
]
}
}
);
}
}
)
}
else {
if (choice == -1) {
sendMessage = "잘못 입력했어요~ 다시 입력하세요";
request.post(
{
url: TARGET_URL,
headers:
{
'Authorization': `Bearer ${Info.TOKEN}`
},
json:
{
"replyToken": replyToken,
"messages":
[
{
"type": "text",
"text": sendMessage
}
]
}
}
);
}
else {
service.playlistItems.list({
key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
part: 'snippet',
fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보.
maxResults: 10,
playlistId: choice
}, function (err, response) {
if (err) {
console.log('The API returned an error: ', err);
return;
}
var video = response.data.items;
if (video.length == 0) {
console.log('검색된 동영상이 없습니다.');
} else {
sendMessage = "";
var temp_title = [], temp_url = [], temp_url2 = [], temp_thumpnail = [];
for (var i = 0; i < 10; i++) {
temp_title[i] = JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, "");
temp_url2[i] = JSON.stringify(response.data.items[i].snippet.resourceId.videoId);
temp_url[i] = 'https://www.youtube.com/watch?v=' + (temp_url2[i].replace(/\"/gi, ""));
//temp_thumpnail[i] = "https://img.youtube.com/vi/" + JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, "") + "/hqdefault.jpg";
// 썸네일 : 사용자가 플레이리스트로 입력 시 리턴으로 너무 많은 정보들을 줘야함. 그래서 뺌.
sendMessage += temp_title[i] + "\n" +
temp_url[i] + "\n" + "\n";
// temp_thumpnail[i] + "\n" + "\n";
} console.log(sendMessage);
request.post(
{
url: TARGET_URL,
headers:
{
'Authorization': `Bearer ${Info.TOKEN}`
},
json:
{
"replyToken": replyToken,
"messages":
[
// {
// "type": "image",
// "originalContentUrl": temp_thumpnail[0],
// "previewImageUrl": temp_thumpnail[0]
// },
{
"type": "text",
"text": sendMessage
}
]
}
}
);
}
})
}
}
}
......@@ -6,54 +6,53 @@ const HTTPS = require('https');
const domain = "2020105631.oss2021.tk"
const sslport = 23023;
const bodyParser = require('body-parser');
const TARGET_URL = 'https://api.line.me/v2/bot/message/reply';
// var Info = require('./Info');
var app = express();
app.use(bodyParser.json());
<<<<<<< HEAD
var sad = require('./video_sad');
=======
var songs = require('./check');
>>>>>>> feature/YouTube_API
app.post('/hook', function (req, res) {
var eventObj = req.body.events[0];
var source = eventObj.source;
var message = eventObj.message;
// request log
console.log('======================', new Date() ,'======================');
send(eventObj.replyToken, eventObj.message.text);
console.log('======================', new Date(), '======================');
send(eventObj.replyToken, message.text);
res.sendStatus(200);
});
function send(replyToken, message){
function send(replyToken, message) {
request.post(
{
body: message
},
function() {
if (message == "슬픈노래") {
sad.check(message,replyToken);
function () {
songs.check(message, replyToken);
}
else {
sad.check(message, replyToken);
}
}
);
}
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, () => {
console.log(`[HTTPS] Server is started on port ${sslport}`);
console.log(`[HTTPS] Server is started on port ${sslport}`);
});
} catch (error) {
} catch (error) {
console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.');
console.log(error);
}
\ No newline at end of file
}
......
var express = require('express');
const request = require('request');
const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'
const TOKEN = 'Kb1/rQYz4MUhF8XyKQv7z9x0MxVQ5bX/XO8S/yt/1qQEJVAbsEFAaMvXKEOx9Umr7KhivfyDPfZHRRLFPngR0O4ZGWV2VFses8ufPE7uAdvYr4G6keBNAU69nBz5IC71HfbIrUHxXYqD7GfhVwXzpwdB04t89/1O/w1cDnyilFU='
const PAPAGO_URL = 'https://openapi.naver.com/v1/papago/n2mt'
const PAPAGO_ID = 'kwoxKGTi6azBaW9aSVxe'
const PAPAGO_SECRET = 'svB_MM61oD'
const fs = require('fs');
const path = require('path');
const HTTPS = require('https');
const domain = "2020105631.oss2021.tk"
const sslport = 23023;
const bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
var { google } = require('googleapis');
/// ----
app.post('/hook', function (req, res) {
var eventObj = req.body.events[0];
var source = eventObj.source;
var message = eventObj.message;
// request log
console.log('======================', new Date(), '======================');
console.log('[request]', req.body);
console.log('[request source] ', eventObj.source);
console.log('[request message]', eventObj.message);
trans(eventObj.replyToken, eventObj.message.text);
res.sendStatus(200);
});
function trans(replyToken, message) {
request.post(
{
url: PAPAGO_URL,
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Naver-Client-Id': `${PAPAGO_ID}`,
'X-Naver-Client-Secret': `${PAPAGO_SECRET}`
},
body: 'source=ko&target=en&text=' + message,
json: true
},
(error, response, body) => {
if (!error && response.statusCode == 200) {
// message 가 사용자에게서 입력받은 메시지 내용입니다. sendMessage 는 보낼 메시지 내용입니다.
// 위에 PAPAGO API부분은 추후 API를 연동시킬 때 맞춰서 작성하기 쉽도록 템플릿을 남겨놓았습니다. 자세한 정보는 교수님 학습 자료의 experiment의 trans 폴더를 참고하세요.
// (현재 코드에선 PAPAGO API의 작동 결과는 반영되지 않습니다.)
//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// var sendMessage;
// --------
if (message == "노래 추천해줘") {
sendMessage = "아이유의 노래를 추천드립니다.";
console.log(typeof (sendMessage));
console.log(sendMessage);
request.post(
{
url: TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`
},
json: {
"replyToken": replyToken,
"messages": [
{
"type": "text",
"text": sendMessage
}
]
}
}, (error, response, body) => {
console.log(body)
});
}
else {
// var sendMessage = "무슨 말인지 못알아먹겠습니다";
// --------
var service = google.youtube('v3');
service.videos.list({
key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
part: 'snippet,statistics',
id: 'p5iu1V30myk', // 동영상 Id
fields: 'items(snippet(title))'
}, function (err, response) {
if (err) {
console.log('The API returned an error: ', err);
return;
}
var video = response.data.items;
if (video.length == 0) {
console.log('검색된 동영상이 없습니다.');
} else {
// var sendMessage ="123";
// console.log(JSON.stringify(response.data.items[0].snippet.title));// 콘솔에 출력
// console.log(JSON.stringify(response.data.items[0].snippet));// 콘솔에 출력
// console.log(JSON.stringify(response.data.items[0]));// 콘솔에 출력
// console.log(JSON.stringify(response.data));// 콘솔에 출력
var sendMessage = JSON.stringify(response.data.items[0].snippet.title);
// sendMessage = response.data.items[0].snippet.title;
console.log(sendMessage);
console.log(typeof (sendMessage));
}
request.post(
{
url: TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`
},
json: {
"replyToken": replyToken,
"messages": [
{
"type": "text",
"text": sendMessage
}
]
}
}, (error, response, body) => {
console.log(body)
});
})
// // --------
}
}
});
}
// function trans(replyToken, message) {
// request.post(
// {
// url: PAPAGO_URL,
// headers: {
// 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
// 'X-Naver-Client-Id': `${PAPAGO_ID}`,
// 'X-Naver-Client-Secret': `${PAPAGO_SECRET}`
// },
// body: 'source=ko&target=en&text=' + message,
// json:true
// },
// (error, response, body) => {
// if(!error && response.statusCode == 200)
// {
// // message 가 사용자에게서 입력받은 메시지 내용입니다. sendMessage 는 보낼 메시지 내용입니다.
// // 위에 PAPAGO API부분은 추후 API를 연동시킬 때 맞춰서 작성하기 쉽도록 템플릿을 남겨놓았습니다. 자세한 정보는 교수님 학습 자료의 experiment의 trans 폴더를 참고하세요.
// // (현재 코드에선 PAPAGO API의 작동 결과는 반영되지 않습니다.)
// //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// var sendMessage;
// // --------
// if (message=="노래 추천해줘")
// {
// sendMessage = "아이유의 노래를 추천드립니다.";
// console.log(typeof(sendMessage));
// console.log(sendMessage);
// console.log("11111");
// console.log(body.message);
// console.log("11111");
// // console.log(typeof(response.data.items[0].snippet.title));
// request.post(
// {
// url: TARGET_URL,
// headers: {
// 'Authorization': `Bearer ${TOKEN}`
// },
// json: {
// "replyToken": replyToken,
// "messages": [
// {
// "type": "text",
// "text": sendMessage
// }
// ]
// }
// }, (error, response, body) => {
// console.log(body)
// });
// }
// else
// {
// // var sendMessage = "무슨 말인지 못알아먹겠습니다";
// // --------
// var service = google.youtube('v3');
// service.videos.list({
// key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
// part: 'snippet,statistics',
// id: 'p5iu1V30myk', // 동영상 Id
// fields: 'items(snippet(title))'
// }, function (err, response) {
// if (err) {
// console.log('The API returned an error: ', err);
// return;
// }
// var video = response.data.items;
// if (video.length == 0) {
// console.log('검색된 동영상이 없습니다.');
// } else {
// // var sendMessage ="123";
// // console.log(JSON.stringify(response.data.items[0].snippet.title));// 콘솔에 출력
// // console.log(JSON.stringify(response.data.items[0].snippet));// 콘솔에 출력
// // console.log(JSON.stringify(response.data.items[0]));// 콘솔에 출력
// // console.log(JSON.stringify(response.data));// 콘솔에 출력
// sendMessage = JSON.stringify(response.data.items[0].snippet.title);
// // sendMessage = response.data.items[0].snippet.title;
// console.log(sendMessage);
// console.log(typeof (sendMessage));
// }
// //console.log(sendMessage);
// })
// //console.log(sendMessage);
// // // --------
// /// ----
// console.log("11111");
// console.log(body.message);
// console.log("11111");
// // console.log(typeof(response.data.items[0].snippet.title));
// request.post(
// {
// url: TARGET_URL,
// headers: {
// 'Authorization': `Bearer ${TOKEN}`
// },
// json: {
// "replyToken": replyToken,
// "messages": [
// {
// "type": "text",
// "text": sendMessage
// }
// ]
// }
// }, (error, response, body) => {
// console.log(body)
// });
// }
// //↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
// }
// });
// }
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(),
};
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);
}