Merge remote-tracking branch 'origin/feature/YouTube_API
Showing
16 changed files
with
279 additions
and
596 deletions
1 | -const { google } = require("googleapis"); | ||
2 | -var service = google.youtube('v3'); | ||
3 | - | ||
4 | -service.playlistItems.list({ | ||
5 | - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518', | ||
6 | - part: 'snippet', | ||
7 | - fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보. | ||
8 | - maxResults: 10, | ||
9 | - playlistId: 'PLfVO1GXBPp3s03voaFAWN7AkzEnpsGF1U' | ||
10 | -}, function (err, response) { | ||
11 | - if (err) { | ||
12 | - console.log('The API returned an error: ', err); | ||
13 | - return; | ||
14 | - } | ||
15 | - | ||
16 | - var video = response.data.items; | ||
17 | - if (video.length == 0) { | ||
18 | - console.log('검색된 동영상이 없습니다.'); | ||
19 | - } else { | ||
20 | - for (var i = 0; i < 10; i++) { | ||
21 | - console.log('{'); | ||
22 | - console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, "")); | ||
23 | - var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId); | ||
24 | - console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환 | ||
25 | - console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, "")); | ||
26 | - console.log('}'); | ||
27 | - } | ||
28 | - } | ||
29 | -}) |
1 | -const { google } = require("googleapis"); | ||
2 | -var service = google.youtube('v3'); | ||
3 | - | ||
4 | -service.playlistItems.list({ | ||
5 | - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518', | ||
6 | - part: 'snippet', | ||
7 | - fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보. | ||
8 | - maxResults: 10, | ||
9 | - playlistId: 'PLfVO1GXBPp3t4Wp8l-cR9s8wpWI2Fnz4g' | ||
10 | -}, function (err, response) { | ||
11 | - if (err) { | ||
12 | - console.log('The API returned an error: ', err); | ||
13 | - return; | ||
14 | - } | ||
15 | - | ||
16 | - var video = response.data.items; | ||
17 | - if (video.length == 0) { | ||
18 | - console.log('검색된 동영상이 없습니다.'); | ||
19 | - } else { | ||
20 | - for (var i = 0; i < 10; i++) { | ||
21 | - console.log('{'); | ||
22 | - console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, "")); | ||
23 | - var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId); | ||
24 | - console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환 | ||
25 | - console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, "")); | ||
26 | - console.log('}'); | ||
27 | - } | ||
28 | - } | ||
29 | -}) |
1 | -const { google } = require("googleapis"); | ||
2 | -var service = google.youtube('v3'); | ||
3 | - | ||
4 | -service.playlistItems.list({ | ||
5 | - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518', | ||
6 | - part: 'snippet', | ||
7 | - fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보. | ||
8 | - maxResults: 10, | ||
9 | - playlistId: 'PLfVO1GXBPp3vXaFB2VtbdQ2h6ljGZOSlj' | ||
10 | -}, function (err, response) { | ||
11 | - if (err) { | ||
12 | - console.log('The API returned an error: ', err); | ||
13 | - return; | ||
14 | - } | ||
15 | - | ||
16 | - var video = response.data.items; | ||
17 | - if (video.length == 0) { | ||
18 | - console.log('검색된 동영상이 없습니다.'); | ||
19 | - } else { | ||
20 | - for (var i = 0; i < 10; i++) { | ||
21 | - console.log('{'); | ||
22 | - console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, "")); | ||
23 | - var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId); | ||
24 | - console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환 | ||
25 | - console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, "")); | ||
26 | - console.log('}'); | ||
27 | - } | ||
28 | - } | ||
29 | -}) |
1 | -const { google } = require("googleapis"); | ||
2 | -var service = google.youtube('v3'); | ||
3 | - | ||
4 | -service.playlistItems.list({ | ||
5 | - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518', | ||
6 | - part: 'snippet', | ||
7 | - fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보. | ||
8 | - maxResults: 10, | ||
9 | - playlistId: 'PLfVO1GXBPp3tdasvQuIu_BmSNm4GVwnNj' | ||
10 | -}, function (err, response) { | ||
11 | - if (err) { | ||
12 | - console.log('The API returned an error: ', err); | ||
13 | - return; | ||
14 | - } | ||
15 | - | ||
16 | - var video = response.data.items; | ||
17 | - if (video.length == 0) { | ||
18 | - console.log('검색된 동영상이 없습니다.'); | ||
19 | - } else { | ||
20 | - for (var i = 0; i < 10; i++) { | ||
21 | - console.log('{'); | ||
22 | - console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, "")); | ||
23 | - var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId); | ||
24 | - console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환 | ||
25 | - console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, "")); | ||
26 | - console.log('}'); | ||
27 | - } | ||
28 | - } | ||
29 | -}) |
1 | -const { google } = require("googleapis"); | ||
2 | -var service = google.youtube('v3'); | ||
3 | - | ||
4 | -service.playlistItems.list({ | ||
5 | - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518', | ||
6 | - part: 'snippet', | ||
7 | - fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보. | ||
8 | - maxResults: 10, | ||
9 | - playlistId: 'PLfVO1GXBPp3vrR3ZcQFlCEC6oNdo_MQ_R' | ||
10 | -}, function (err, response) { | ||
11 | - if (err) { | ||
12 | - console.log('The API returned an error: ', err); | ||
13 | - return; | ||
14 | - } | ||
15 | - | ||
16 | - var video = response.data.items; | ||
17 | - if (video.length == 0) { | ||
18 | - console.log('검색된 동영상이 없습니다.'); | ||
19 | - } else { | ||
20 | - for (var i = 0; i < 10; i++) { | ||
21 | - console.log('{'); | ||
22 | - console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, "")); | ||
23 | - var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId); | ||
24 | - console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환 | ||
25 | - console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, "")); | ||
26 | - console.log('}'); | ||
27 | - } | ||
28 | - } | ||
29 | -}) |
1 | -const { google } = require("googleapis"); | ||
2 | -var service = google.youtube('v3'); | ||
3 | - | ||
4 | -service.playlistItems.list({ | ||
5 | - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518', | ||
6 | - part: 'snippet', | ||
7 | - fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보. | ||
8 | - maxResults: 10, | ||
9 | - playlistId: 'PLfVO1GXBPp3tgrwk3GDJi3v-E_Hnq3lDO' | ||
10 | -}, function (err, response) { | ||
11 | - if (err) { | ||
12 | - console.log('The API returned an error: ', err); | ||
13 | - return; | ||
14 | - } | ||
15 | - | ||
16 | - var video = response.data.items; | ||
17 | - if (video.length == 0) { | ||
18 | - console.log('검색된 동영상이 없습니다.'); | ||
19 | - } else { | ||
20 | - for (var i = 0; i < 10; i++) { | ||
21 | - console.log('{'); | ||
22 | - console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, "")); | ||
23 | - var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId); | ||
24 | - console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환 | ||
25 | - console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, "")); | ||
26 | - console.log('}'); | ||
27 | - } | ||
28 | - } | ||
29 | -}) |
1 | -const { google } = require("googleapis"); | ||
2 | -var service = google.youtube('v3'); | ||
3 | - | ||
4 | -service.playlistItems.list({ | ||
5 | - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518', | ||
6 | - part: 'snippet', | ||
7 | - fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보. | ||
8 | - maxResults: 10, | ||
9 | - playlistId: 'PLfVO1GXBPp3ubihJVPi6HSltRIuvSqSI1' | ||
10 | -}, function (err, response) { | ||
11 | - if (err) { | ||
12 | - console.log('The API returned an error: ', err); | ||
13 | - return; | ||
14 | - } | ||
15 | - | ||
16 | - var video = response.data.items; | ||
17 | - if (video.length == 0) { | ||
18 | - console.log('검색된 동영상이 없습니다.'); | ||
19 | - } else { | ||
20 | - for (var i = 0; i < 10; i++) { | ||
21 | - console.log('{'); | ||
22 | - console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, "")); | ||
23 | - var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId); | ||
24 | - console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환 | ||
25 | - console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, "")); | ||
26 | - console.log('}'); | ||
27 | - } | ||
28 | - } | ||
29 | -}) |
1 | -const { google } = require("googleapis"); | ||
2 | -var service = google.youtube('v3'); | ||
3 | - | ||
4 | -service.playlistItems.list({ | ||
5 | - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518', | ||
6 | - part: 'snippet', | ||
7 | - fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보. | ||
8 | - maxResults: 10, | ||
9 | - playlistId: 'PLfVO1GXBPp3u0ckIfYZkADGlSQ6LQoAIQ' | ||
10 | -}, function (err, response) { | ||
11 | - if (err) { | ||
12 | - console.log('The API returned an error: ', err); | ||
13 | - return; | ||
14 | - } | ||
15 | - | ||
16 | - var video = response.data.items; | ||
17 | - if (video.length == 0) { | ||
18 | - console.log('검색된 동영상이 없습니다.'); | ||
19 | - } else { | ||
20 | - for (var i = 0; i < 10; i++) { | ||
21 | - console.log('{'); | ||
22 | - console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, "")); | ||
23 | - var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId); | ||
24 | - console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환 | ||
25 | - console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, "")); | ||
26 | - console.log('}'); | ||
27 | - } | ||
28 | - } | ||
29 | -}) |
1 | -const { google } = require("googleapis"); | ||
2 | -var service = google.youtube('v3'); | ||
3 | - | ||
4 | -service.playlistItems.list({ | ||
5 | - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518', | ||
6 | - part: 'snippet', | ||
7 | - fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보. | ||
8 | - maxResults: 10, | ||
9 | - playlistId: 'PLfVO1GXBPp3vo3sivJPfFzREBECRFepVK' | ||
10 | -}, function (err, response) { | ||
11 | - if (err) { | ||
12 | - console.log('The API returned an error: ', err); | ||
13 | - return; | ||
14 | - } | ||
15 | - | ||
16 | - var video = response.data.items; | ||
17 | - if (video.length == 0) { | ||
18 | - console.log('검색된 동영상이 없습니다.'); | ||
19 | - } else { | ||
20 | - for (var i = 0; i < 10; i++) { | ||
21 | - console.log('{'); | ||
22 | - console.log(JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, "")); | ||
23 | - var a = JSON.stringify(response.data.items[i].snippet.resourceId.videoId); | ||
24 | - console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환 | ||
25 | - console.log(JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, "")); | ||
26 | - console.log('}'); | ||
27 | - } | ||
28 | - } | ||
29 | -}) |
Youtube API/Search.js
deleted
100644 → 0
1 | -const { google } = require("googleapis"); | ||
2 | -var service = google.youtube('v3'); | ||
3 | - | ||
4 | -service.search.list({ | ||
5 | - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518', | ||
6 | - part: 'id, snippet', | ||
7 | - fields: 'items(id(videoId),snippet(title,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보. | ||
8 | - maxResults: 1, // 최상단의 1개만 출력 | ||
9 | - q: '경희대학교', // eventObj.message.text 를 input하도록 연결하시면 됩니다. | ||
10 | - regionCode: 'KR' | ||
11 | -}, function (err, response) { | ||
12 | - if (err) { | ||
13 | - console.log('The API returned an error: ', err); | ||
14 | - return; | ||
15 | - } | ||
16 | - | ||
17 | - var video = response.data.items; | ||
18 | - if (video.length == 0) { | ||
19 | - console.log('검색된 동영상이 없습니다.'); | ||
20 | - } else { | ||
21 | - | ||
22 | - console.log('{'); | ||
23 | - console.log(JSON.stringify(response.data.items[0].snippet.title).replace(/\"/gi, "")); | ||
24 | - var a = JSON.stringify(response.data.items[0].id.videoId); | ||
25 | - console.log('https://www.youtube.com/watch?v=' + a.replace(/\"/gi, "")); //JSON stringify 큰따옴표 제거후 URL로 전환 | ||
26 | - console.log(JSON.stringify(response.data.items[0].snippet.thumbnails.high.url).replace(/\"/gi, "")); | ||
27 | - console.log('}'); | ||
28 | - | ||
29 | - } | ||
30 | -}) |
Youtube API/주의 사항.txt
deleted
100644 → 0
1 | -수동으로 googleapis 를 npm install 해야합니다. | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
all_ids.js
0 → 100644
1 | +// 아래 주석을 참고해 플레이리스트 or 노래의 배열을 직접 만드시면 됩니다. | ||
2 | +// 배열을 만들 때, 활용하실 id값이 플레이리스트의 id인지, 특정 노래의 id인지 구별해서 배열을 만드셔야 합니다. | ||
3 | +// '플레이리스트'의 id라면 인덱스 500 이하로, | ||
4 | +// '특정 노래'의 id라면 인덱스 500 이상으로 넣어주세요! | ||
5 | +// 아래 예시를 보고 이해 안되시면, 편하게 카톡으로 말씀해주세요 | ||
6 | + | ||
7 | + | ||
8 | +// index < 500 = 플레이리스트 | ||
9 | +// index > 500 = 개별 곡 | ||
10 | + | ||
11 | +// index 100번대 = 장르 플레이리스트 | ||
12 | +// index 200번대 = 무드 플레이리스트 | ||
13 | +// index 300번대 = 가수 플레이리스트 | ||
14 | +// index 500번대 = 특정 플레이리스트의 노래 10곡 | ||
15 | + | ||
16 | +// index 101 = 장르 - 힙합 | ||
17 | +// index 102 = 장르 - 피아노 | ||
18 | +// index 103 = 장르 - 팝 | ||
19 | + | ||
20 | +// index 201 = 무드 - 익사이팅 | ||
21 | +// index 202 = 무드 - 새드 | ||
22 | + | ||
23 | +// index 301 = 가수 - 블랙핑크 | ||
24 | +// index 302 = 가수 - 아이유 | ||
25 | +// index 303 = 가수 - 레드벨벳 | ||
26 | +// index 304 = 가수 - 트와이스 | ||
27 | + | ||
28 | +// index 501 = 슬픈노래 10곡 | ||
29 | + | ||
30 | +exports.all_ids = []; | ||
31 | + | ||
32 | +exports.all_ids[101] = 'PLfVO1GXBPp3s03voaFAWN7AkzEnpsGF1U' | ||
33 | +exports.all_ids[102] = 'PLfVO1GXBPp3t4Wp8l-cR9s8wpWI2Fnz4g' | ||
34 | +exports.all_ids[103] = 'PLfVO1GXBPp3vXaFB2VtbdQ2h6ljGZOSlj' | ||
35 | + | ||
36 | +exports.all_ids[201] = 'PLfVO1GXBPp3tdasvQuIu_BmSNm4GVwnNj' | ||
37 | +exports.all_ids[202] = 'PLfVO1GXBPp3vrR3ZcQFlCEC6oNdo_MQ_R' | ||
38 | + | ||
39 | +exports.all_ids[301] = 'PLfVO1GXBPp3tgrwk3GDJi3v-E_Hnq3lDO' | ||
40 | +exports.all_ids[302] = 'PLfVO1GXBPp3ubihJVPi6HSltRIuvSqSI1' | ||
41 | +exports.all_ids[303] = 'PLfVO1GXBPp3u0ckIfYZkADGlSQ6LQoAIQ' | ||
42 | +exports.all_ids[304] = 'PLfVO1GXBPp3vo3sivJPfFzREBECRFepVK' | ||
43 | + | ||
44 | +exports.all_ids[501] = ['p5iu1V30myk', 'i-SBnhaZSSU', 'Etfgb6A7hSI', 'IN2mml9xs_s', | ||
45 | + 'tp1uoFAfgHE', 'Qx22TnVVIfU', '3y1QIqR115A', 'VXBI1wt8XII', 'aWMBn2--E0Q', 'HyTbgBlnLCo']; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
check.js
0 → 100644
1 | +var Info = require('./Info'); | ||
2 | +var ids = require('./all_ids') | ||
3 | +const request = require('request'); | ||
4 | +const fs = require('fs'); | ||
5 | +const TARGET_URL = 'https://api.line.me/v2/bot/message/reply' | ||
6 | +var { google } = require('googleapis'); | ||
7 | +var service = google.youtube('v3'); | ||
8 | + | ||
9 | + | ||
10 | +exports.check = function (message, replyToken) { | ||
11 | + | ||
12 | + const rand_0to9 = Math.floor(Math.random() * 10); // 0~9까지 난수생성 | ||
13 | + | ||
14 | + var choice; | ||
15 | + var choose; | ||
16 | + | ||
17 | + switch (message) { | ||
18 | + case "슬픈 노래": | ||
19 | + choose = 501; | ||
20 | + choice = ids.all_ids[choose][rand_0to9] | ||
21 | + break; | ||
22 | + case "힙합 플레이리스트": | ||
23 | + choose = 101; | ||
24 | + choice = ids.all_ids[choose] | ||
25 | + break; | ||
26 | + case "피아노 플레이리스트": | ||
27 | + choose = 102; | ||
28 | + choice = ids.all_ids[choose] | ||
29 | + break; | ||
30 | + case "팝 플레이리스트": | ||
31 | + choose = 103; | ||
32 | + choice = ids.all_ids[choose] | ||
33 | + break; | ||
34 | + case "신나는 플레이리스트": | ||
35 | + choose = 201; | ||
36 | + choice = ids.all_ids[choose] | ||
37 | + break; | ||
38 | + case "슬픈 플레이리스트": | ||
39 | + choose = 202; | ||
40 | + choice = ids.all_ids[choose] | ||
41 | + break; | ||
42 | + case "블랙핑크 플레이리스트": | ||
43 | + choose = 301; | ||
44 | + choice = ids.all_ids[choose] | ||
45 | + break; | ||
46 | + case "아이유 플레이리스트": | ||
47 | + choose = 302; | ||
48 | + choice = ids.all_ids[choose] | ||
49 | + break; | ||
50 | + case "레드벨벳 플레이리스트": | ||
51 | + choose = 303; | ||
52 | + choice = ids.all_ids[choose] | ||
53 | + break; | ||
54 | + case "트와이스 플레이리스트": | ||
55 | + choose = 304; | ||
56 | + choice = ids.all_ids[choose] | ||
57 | + break; | ||
58 | + | ||
59 | + // 아래는 case 추가를 위한 템플릿 | ||
60 | + // case "": | ||
61 | + // choose = ; | ||
62 | + // choice = ids.all_ids[choose] | ||
63 | + | ||
64 | + default: | ||
65 | + console.log("잘못 입력했어요~ 다시 입력하세요"); | ||
66 | + choice = -1; | ||
67 | + } | ||
68 | + | ||
69 | + if (choose > 500) { | ||
70 | + | ||
71 | + service.videos.list | ||
72 | + ( | ||
73 | + { | ||
74 | + key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518', | ||
75 | + part: 'snippet', | ||
76 | + id: choice, | ||
77 | + fields: 'items(snippet(title))' | ||
78 | + }, | ||
79 | + function (err, response) { | ||
80 | + if (err) { | ||
81 | + console.log('The API returned an error: ', err); | ||
82 | + return; | ||
83 | + } | ||
84 | + | ||
85 | + var video = response.data.items; | ||
86 | + | ||
87 | + if (video.length == 0) { | ||
88 | + console.log('검색된 동영상이 없습니다.'); | ||
89 | + } | ||
90 | + else { | ||
91 | + sendMessage = JSON.stringify(response.data.items[0].snippet.title); | ||
92 | + console.log(sendMessage); | ||
93 | + request.post( | ||
94 | + { | ||
95 | + url: TARGET_URL, | ||
96 | + headers: | ||
97 | + { | ||
98 | + 'Authorization': `Bearer ${Info.TOKEN}` | ||
99 | + }, | ||
100 | + json: | ||
101 | + { | ||
102 | + "replyToken": replyToken, | ||
103 | + "messages": | ||
104 | + [ | ||
105 | + { | ||
106 | + "type": "image", | ||
107 | + "originalContentUrl": "https://img.youtube.com/vi/" + choice + "/hqdefault.jpg", | ||
108 | + "previewImageUrl": "https://img.youtube.com/vi/" + choice + "/hqdefault.jpg" | ||
109 | + }, | ||
110 | + { | ||
111 | + "type": "text", | ||
112 | + "text": sendMessage | ||
113 | + } | ||
114 | + ] | ||
115 | + } | ||
116 | + } | ||
117 | + ); | ||
118 | + } | ||
119 | + } | ||
120 | + | ||
121 | + ) | ||
122 | + } | ||
123 | + | ||
124 | + else { | ||
125 | + if (choice == -1) { | ||
126 | + sendMessage = "잘못 입력했어요~ 다시 입력하세요"; | ||
127 | + request.post( | ||
128 | + { | ||
129 | + url: TARGET_URL, | ||
130 | + headers: | ||
131 | + { | ||
132 | + 'Authorization': `Bearer ${Info.TOKEN}` | ||
133 | + }, | ||
134 | + json: | ||
135 | + { | ||
136 | + "replyToken": replyToken, | ||
137 | + "messages": | ||
138 | + [ | ||
139 | + { | ||
140 | + "type": "text", | ||
141 | + "text": sendMessage | ||
142 | + } | ||
143 | + ] | ||
144 | + } | ||
145 | + } | ||
146 | + ); | ||
147 | + } | ||
148 | + else { | ||
149 | + service.playlistItems.list({ | ||
150 | + key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518', | ||
151 | + part: 'snippet', | ||
152 | + fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보. | ||
153 | + maxResults: 10, | ||
154 | + playlistId: choice | ||
155 | + }, function (err, response) { | ||
156 | + if (err) { | ||
157 | + console.log('The API returned an error: ', err); | ||
158 | + return; | ||
159 | + } | ||
160 | + | ||
161 | + var video = response.data.items; | ||
162 | + if (video.length == 0) { | ||
163 | + console.log('검색된 동영상이 없습니다.'); | ||
164 | + } else { | ||
165 | + sendMessage = ""; | ||
166 | + var temp_title = [], temp_url = [], temp_url2 = [], temp_thumpnail = []; | ||
167 | + for (var i = 0; i < 10; i++) { | ||
168 | + | ||
169 | + temp_title[i] = JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, ""); | ||
170 | + | ||
171 | + temp_url2[i] = JSON.stringify(response.data.items[i].snippet.resourceId.videoId); | ||
172 | + temp_url[i] = 'https://www.youtube.com/watch?v=' + (temp_url2[i].replace(/\"/gi, "")); | ||
173 | + | ||
174 | + //temp_thumpnail[i] = "https://img.youtube.com/vi/" + JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, "") + "/hqdefault.jpg"; | ||
175 | + // 썸네일 : 사용자가 플레이리스트로 입력 시 리턴으로 너무 많은 정보들을 줘야함. 그래서 뺌. | ||
176 | + | ||
177 | + sendMessage += temp_title[i] + "\n" + | ||
178 | + temp_url[i] + "\n" + "\n"; | ||
179 | + // temp_thumpnail[i] + "\n" + "\n"; | ||
180 | + } console.log(sendMessage); | ||
181 | + request.post( | ||
182 | + { | ||
183 | + url: TARGET_URL, | ||
184 | + headers: | ||
185 | + { | ||
186 | + 'Authorization': `Bearer ${Info.TOKEN}` | ||
187 | + }, | ||
188 | + json: | ||
189 | + { | ||
190 | + "replyToken": replyToken, | ||
191 | + "messages": | ||
192 | + [ | ||
193 | + // { | ||
194 | + // "type": "image", | ||
195 | + // "originalContentUrl": temp_thumpnail[0], | ||
196 | + // "previewImageUrl": temp_thumpnail[0] | ||
197 | + // }, | ||
198 | + { | ||
199 | + "type": "text", | ||
200 | + "text": sendMessage | ||
201 | + } | ||
202 | + ] | ||
203 | + } | ||
204 | + } | ||
205 | + ); | ||
206 | + } | ||
207 | + }) | ||
208 | + } | ||
209 | + } | ||
210 | + | ||
211 | + | ||
212 | + | ||
213 | + | ||
214 | +} |
... | @@ -6,54 +6,53 @@ const HTTPS = require('https'); | ... | @@ -6,54 +6,53 @@ const HTTPS = require('https'); |
6 | const domain = "2020105631.oss2021.tk" | 6 | const domain = "2020105631.oss2021.tk" |
7 | const sslport = 23023; | 7 | const sslport = 23023; |
8 | const bodyParser = require('body-parser'); | 8 | const bodyParser = require('body-parser'); |
9 | +const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'; | ||
10 | +// var Info = require('./Info'); | ||
9 | var app = express(); | 11 | var app = express(); |
10 | app.use(bodyParser.json()); | 12 | app.use(bodyParser.json()); |
13 | +<<<<<<< HEAD | ||
11 | 14 | ||
12 | var sad = require('./video_sad'); | 15 | var sad = require('./video_sad'); |
13 | 16 | ||
17 | +======= | ||
18 | +var songs = require('./check'); | ||
19 | +>>>>>>> feature/YouTube_API | ||
14 | 20 | ||
15 | 21 | ||
16 | app.post('/hook', function (req, res) { | 22 | app.post('/hook', function (req, res) { |
17 | 23 | ||
18 | var eventObj = req.body.events[0]; | 24 | var eventObj = req.body.events[0]; |
19 | - var source = eventObj.source; | ||
20 | var message = eventObj.message; | 25 | var message = eventObj.message; |
21 | 26 | ||
22 | // request log | 27 | // request log |
23 | - console.log('======================', new Date() ,'======================'); | 28 | + console.log('======================', new Date(), '======================'); |
24 | - send(eventObj.replyToken, eventObj.message.text); | 29 | + send(eventObj.replyToken, message.text); |
25 | res.sendStatus(200); | 30 | res.sendStatus(200); |
26 | }); | 31 | }); |
27 | -function send(replyToken, message){ | 32 | +function send(replyToken, message) { |
28 | 33 | ||
29 | request.post( | 34 | request.post( |
30 | { | 35 | { |
31 | body: message | 36 | body: message |
32 | }, | 37 | }, |
33 | 38 | ||
34 | - function() { | 39 | + function () { |
35 | - if (message == "슬픈노래") { | 40 | + songs.check(message, replyToken); |
36 | - sad.check(message,replyToken); | ||
37 | 41 | ||
38 | } | 42 | } |
39 | - else { | ||
40 | - sad.check(message, replyToken); | ||
41 | - } | ||
42 | - } | ||
43 | ); | 43 | ); |
44 | } | 44 | } |
45 | try { | 45 | try { |
46 | const option = { | 46 | const option = { |
47 | - ca: fs.readFileSync('/etc/letsencrypt/live/' + domain +'/fullchain.pem'), | 47 | + ca: fs.readFileSync('/etc/letsencrypt/live/' + domain + '/fullchain.pem'), |
48 | - key: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/privkey.pem'), 'utf8').toString(), | 48 | + key: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain + '/privkey.pem'), 'utf8').toString(), |
49 | - cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/cert.pem'), 'utf8').toString(), | 49 | + cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain + '/cert.pem'), 'utf8').toString(), |
50 | }; | 50 | }; |
51 | 51 | ||
52 | HTTPS.createServer(option, app).listen(sslport, () => { | 52 | HTTPS.createServer(option, app).listen(sslport, () => { |
53 | console.log(`[HTTPS] Server is started on port ${sslport}`); | 53 | console.log(`[HTTPS] Server is started on port ${sslport}`); |
54 | }); | 54 | }); |
55 | - } catch (error) { | 55 | +} catch (error) { |
56 | console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.'); | 56 | console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.'); |
57 | console.log(error); | 57 | console.log(error); |
58 | - } | ||
59 | - | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
58 | +} | ... | ... |
index_Temp.js
deleted
100644 → 0
1 | -var express = require('express'); | ||
2 | -const request = require('request'); | ||
3 | -const TARGET_URL = 'https://api.line.me/v2/bot/message/reply' | ||
4 | -const TOKEN = 'Kb1/rQYz4MUhF8XyKQv7z9x0MxVQ5bX/XO8S/yt/1qQEJVAbsEFAaMvXKEOx9Umr7KhivfyDPfZHRRLFPngR0O4ZGWV2VFses8ufPE7uAdvYr4G6keBNAU69nBz5IC71HfbIrUHxXYqD7GfhVwXzpwdB04t89/1O/w1cDnyilFU=' | ||
5 | -const PAPAGO_URL = 'https://openapi.naver.com/v1/papago/n2mt' | ||
6 | -const PAPAGO_ID = 'kwoxKGTi6azBaW9aSVxe' | ||
7 | -const PAPAGO_SECRET = 'svB_MM61oD' | ||
8 | -const fs = require('fs'); | ||
9 | -const path = require('path'); | ||
10 | -const HTTPS = require('https'); | ||
11 | -const domain = "2020105631.oss2021.tk" | ||
12 | -const sslport = 23023; | ||
13 | -const bodyParser = require('body-parser'); | ||
14 | -var app = express(); | ||
15 | -app.use(bodyParser.json()); | ||
16 | - | ||
17 | -var { google } = require('googleapis'); | ||
18 | - | ||
19 | -/// ---- | ||
20 | - | ||
21 | - | ||
22 | -app.post('/hook', function (req, res) { | ||
23 | - | ||
24 | - var eventObj = req.body.events[0]; | ||
25 | - var source = eventObj.source; | ||
26 | - var message = eventObj.message; | ||
27 | - | ||
28 | - // request log | ||
29 | - console.log('======================', new Date(), '======================'); | ||
30 | - console.log('[request]', req.body); | ||
31 | - console.log('[request source] ', eventObj.source); | ||
32 | - console.log('[request message]', eventObj.message); | ||
33 | - | ||
34 | - trans(eventObj.replyToken, eventObj.message.text); | ||
35 | - | ||
36 | - | ||
37 | - res.sendStatus(200); | ||
38 | -}); | ||
39 | -function trans(replyToken, message) { | ||
40 | - | ||
41 | - request.post( | ||
42 | - | ||
43 | - { | ||
44 | - url: PAPAGO_URL, | ||
45 | - headers: { | ||
46 | - 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', | ||
47 | - 'X-Naver-Client-Id': `${PAPAGO_ID}`, | ||
48 | - 'X-Naver-Client-Secret': `${PAPAGO_SECRET}` | ||
49 | - }, | ||
50 | - body: 'source=ko&target=en&text=' + message, | ||
51 | - json: true | ||
52 | - }, | ||
53 | - | ||
54 | - (error, response, body) => { | ||
55 | - if (!error && response.statusCode == 200) { | ||
56 | - // message 가 사용자에게서 입력받은 메시지 내용입니다. sendMessage 는 보낼 메시지 내용입니다. | ||
57 | - // 위에 PAPAGO API부분은 추후 API를 연동시킬 때 맞춰서 작성하기 쉽도록 템플릿을 남겨놓았습니다. 자세한 정보는 교수님 학습 자료의 experiment의 trans 폴더를 참고하세요. | ||
58 | - // (현재 코드에선 PAPAGO API의 작동 결과는 반영되지 않습니다.) | ||
59 | - //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ | ||
60 | - // var sendMessage; | ||
61 | - | ||
62 | - // -------- | ||
63 | - if (message == "노래 추천해줘") { | ||
64 | - sendMessage = "아이유의 노래를 추천드립니다."; | ||
65 | - console.log(typeof (sendMessage)); | ||
66 | - console.log(sendMessage); | ||
67 | - | ||
68 | - request.post( | ||
69 | - { | ||
70 | - url: TARGET_URL, | ||
71 | - headers: { | ||
72 | - 'Authorization': `Bearer ${TOKEN}` | ||
73 | - }, | ||
74 | - json: { | ||
75 | - "replyToken": replyToken, | ||
76 | - "messages": [ | ||
77 | - { | ||
78 | - "type": "text", | ||
79 | - "text": sendMessage | ||
80 | - } | ||
81 | - ] | ||
82 | - } | ||
83 | - }, (error, response, body) => { | ||
84 | - console.log(body) | ||
85 | - }); | ||
86 | - | ||
87 | - } | ||
88 | - else { | ||
89 | - // var sendMessage = "무슨 말인지 못알아먹겠습니다"; | ||
90 | - | ||
91 | - // -------- | ||
92 | - var service = google.youtube('v3'); | ||
93 | - service.videos.list({ | ||
94 | - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518', | ||
95 | - part: 'snippet,statistics', | ||
96 | - id: 'p5iu1V30myk', // 동영상 Id | ||
97 | - fields: 'items(snippet(title))' | ||
98 | - }, function (err, response) { | ||
99 | - if (err) { | ||
100 | - console.log('The API returned an error: ', err); | ||
101 | - return; | ||
102 | - } | ||
103 | - | ||
104 | - var video = response.data.items; | ||
105 | - if (video.length == 0) { | ||
106 | - console.log('검색된 동영상이 없습니다.'); | ||
107 | - } else { | ||
108 | - // var sendMessage ="123"; | ||
109 | - // console.log(JSON.stringify(response.data.items[0].snippet.title));// 콘솔에 출력 | ||
110 | - // console.log(JSON.stringify(response.data.items[0].snippet));// 콘솔에 출력 | ||
111 | - // console.log(JSON.stringify(response.data.items[0]));// 콘솔에 출력 | ||
112 | - // console.log(JSON.stringify(response.data));// 콘솔에 출력 | ||
113 | - | ||
114 | - | ||
115 | - var sendMessage = JSON.stringify(response.data.items[0].snippet.title); | ||
116 | - // sendMessage = response.data.items[0].snippet.title; | ||
117 | - console.log(sendMessage); | ||
118 | - console.log(typeof (sendMessage)); | ||
119 | - } | ||
120 | - request.post( | ||
121 | - { | ||
122 | - url: TARGET_URL, | ||
123 | - headers: { | ||
124 | - 'Authorization': `Bearer ${TOKEN}` | ||
125 | - }, | ||
126 | - json: { | ||
127 | - "replyToken": replyToken, | ||
128 | - "messages": [ | ||
129 | - { | ||
130 | - "type": "text", | ||
131 | - "text": sendMessage | ||
132 | - } | ||
133 | - ] | ||
134 | - } | ||
135 | - }, (error, response, body) => { | ||
136 | - console.log(body) | ||
137 | - }); | ||
138 | - }) | ||
139 | - // // -------- | ||
140 | - } | ||
141 | - | ||
142 | - } | ||
143 | - }); | ||
144 | -} | ||
145 | -// function trans(replyToken, message) { | ||
146 | -// request.post( | ||
147 | -// { | ||
148 | -// url: PAPAGO_URL, | ||
149 | -// headers: { | ||
150 | -// 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', | ||
151 | -// 'X-Naver-Client-Id': `${PAPAGO_ID}`, | ||
152 | -// 'X-Naver-Client-Secret': `${PAPAGO_SECRET}` | ||
153 | -// }, | ||
154 | -// body: 'source=ko&target=en&text=' + message, | ||
155 | -// json:true | ||
156 | -// }, | ||
157 | - | ||
158 | -// (error, response, body) => { | ||
159 | -// if(!error && response.statusCode == 200) | ||
160 | -// { | ||
161 | -// // message 가 사용자에게서 입력받은 메시지 내용입니다. sendMessage 는 보낼 메시지 내용입니다. | ||
162 | -// // 위에 PAPAGO API부분은 추후 API를 연동시킬 때 맞춰서 작성하기 쉽도록 템플릿을 남겨놓았습니다. 자세한 정보는 교수님 학습 자료의 experiment의 trans 폴더를 참고하세요. | ||
163 | -// // (현재 코드에선 PAPAGO API의 작동 결과는 반영되지 않습니다.) | ||
164 | -// //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ | ||
165 | - | ||
166 | - | ||
167 | - | ||
168 | -// var sendMessage; | ||
169 | -// // -------- | ||
170 | -// if (message=="노래 추천해줘") | ||
171 | -// { | ||
172 | -// sendMessage = "아이유의 노래를 추천드립니다."; | ||
173 | -// console.log(typeof(sendMessage)); | ||
174 | -// console.log(sendMessage); | ||
175 | - | ||
176 | - | ||
177 | -// console.log("11111"); | ||
178 | -// console.log(body.message); | ||
179 | -// console.log("11111"); | ||
180 | -// // console.log(typeof(response.data.items[0].snippet.title)); | ||
181 | - | ||
182 | -// request.post( | ||
183 | -// { | ||
184 | -// url: TARGET_URL, | ||
185 | -// headers: { | ||
186 | -// 'Authorization': `Bearer ${TOKEN}` | ||
187 | -// }, | ||
188 | -// json: { | ||
189 | -// "replyToken": replyToken, | ||
190 | -// "messages": [ | ||
191 | -// { | ||
192 | -// "type": "text", | ||
193 | -// "text": sendMessage | ||
194 | -// } | ||
195 | -// ] | ||
196 | -// } | ||
197 | -// }, (error, response, body) => { | ||
198 | -// console.log(body) | ||
199 | -// }); | ||
200 | -// } | ||
201 | -// else | ||
202 | -// { | ||
203 | -// // var sendMessage = "무슨 말인지 못알아먹겠습니다"; | ||
204 | -// // -------- | ||
205 | -// var service = google.youtube('v3'); | ||
206 | - | ||
207 | -// service.videos.list({ | ||
208 | -// key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518', | ||
209 | -// part: 'snippet,statistics', | ||
210 | -// id: 'p5iu1V30myk', // 동영상 Id | ||
211 | -// fields: 'items(snippet(title))' | ||
212 | -// }, function (err, response) { | ||
213 | -// if (err) { | ||
214 | -// console.log('The API returned an error: ', err); | ||
215 | -// return; | ||
216 | -// } | ||
217 | - | ||
218 | -// var video = response.data.items; | ||
219 | -// if (video.length == 0) { | ||
220 | -// console.log('검색된 동영상이 없습니다.'); | ||
221 | -// } else { | ||
222 | -// // var sendMessage ="123"; | ||
223 | -// // console.log(JSON.stringify(response.data.items[0].snippet.title));// 콘솔에 출력 | ||
224 | -// // console.log(JSON.stringify(response.data.items[0].snippet));// 콘솔에 출력 | ||
225 | -// // console.log(JSON.stringify(response.data.items[0]));// 콘솔에 출력 | ||
226 | -// // console.log(JSON.stringify(response.data));// 콘솔에 출력 | ||
227 | - | ||
228 | -// sendMessage = JSON.stringify(response.data.items[0].snippet.title); | ||
229 | -// // sendMessage = response.data.items[0].snippet.title; | ||
230 | -// console.log(sendMessage); | ||
231 | -// console.log(typeof (sendMessage)); | ||
232 | -// } | ||
233 | -// //console.log(sendMessage); | ||
234 | -// }) | ||
235 | -// //console.log(sendMessage); | ||
236 | -// // // -------- | ||
237 | -// /// ---- | ||
238 | - | ||
239 | - | ||
240 | -// console.log("11111"); | ||
241 | -// console.log(body.message); | ||
242 | -// console.log("11111"); | ||
243 | -// // console.log(typeof(response.data.items[0].snippet.title)); | ||
244 | - | ||
245 | -// request.post( | ||
246 | -// { | ||
247 | -// url: TARGET_URL, | ||
248 | -// headers: { | ||
249 | -// 'Authorization': `Bearer ${TOKEN}` | ||
250 | -// }, | ||
251 | -// json: { | ||
252 | -// "replyToken": replyToken, | ||
253 | -// "messages": [ | ||
254 | -// { | ||
255 | -// "type": "text", | ||
256 | -// "text": sendMessage | ||
257 | -// } | ||
258 | -// ] | ||
259 | -// } | ||
260 | -// }, (error, response, body) => { | ||
261 | -// console.log(body) | ||
262 | -// }); | ||
263 | -// } | ||
264 | -// //↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ | ||
265 | - | ||
266 | -// } | ||
267 | -// }); | ||
268 | -// } | ||
269 | - | ||
270 | -try { | ||
271 | - const option = { | ||
272 | - ca: fs.readFileSync('/etc/letsencrypt/live/' + domain + '/fullchain.pem'), | ||
273 | - key: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain + '/privkey.pem'), 'utf8').toString(), | ||
274 | - cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain + '/cert.pem'), 'utf8').toString(), | ||
275 | - }; | ||
276 | - | ||
277 | - HTTPS.createServer(option, app).listen(sslport, () => { | ||
278 | - console.log(`[HTTPS] Server is started on port ${sslport}`); | ||
279 | - }); | ||
280 | -} catch (error) { | ||
281 | - console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.'); | ||
282 | - console.log(error); | ||
283 | -} |
-
Please register or login to post a comment