엄민용

Get song information from Playlist(Singer) / Delete unnecessary files

가수와 관련된 재생목록에서 노래의 제목, 동영상 url, 썸네일(url) 정보를 가져온다
ssh 서버에서 oauth2 인증을 구현할 수 없어 oauth2 인증을 통한 구현 포기
oauth2파일을 포함해 불필요한 파일 정리
1 -{
2 - // IntelliSense를 사용하여 가능한 특성에 대해 알아보세요.
3 - // 기존 특성에 대한 설명을 보려면 가리킵니다.
4 - // 자세한 내용을 보려면 https://go.microsoft.com/fwlink/?linkid=830387을(를) 방문하세요.
5 - "version": "0.2.0",
6 - "configurations": [
7 - {
8 - "type": "pwa-node",
9 - "request": "launch",
10 - "name": "Launch Program",
11 - "skipFiles": [
12 - "<node_internals>/**"
13 - ],
14 - "program": "${workspaceFolder}/video_list_sad.js"
15 - }
16 - ]
17 -}
...\ No newline at end of file ...\ No newline at end of file
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 +})
1 -const { google } = require("googleapis");
2 -var http = require('http');
3 -var opn = require('opn');
4 -var destroyer = require('destroyer');
5 -var url = require('url');
6 -var enableDestroy = require('server-destroy');
7 -const oauth2Client = new google.auth.OAuth2(
8 - "394965702516-q817fn2gj8r8sqoudhp29k1rd71ku42j.apps.googleusercontent.com",
9 - "xgo5tcTwsmg2alNumeY1Drj_",
10 - "http://localhost:3031/api/oauth2callback"
11 -);
12 -
13 -const scopes = [
14 - 'https://www.googleapis.com/auth/youtube',
15 - 'https://www.googleapis.com/auth/youtube.force-ssl',
16 - 'https://www.googleapis.com/auth/youtube.readonly',
17 - 'https://www.googleapis.com/auth/youtubepartner'
18 -];
19 -
20 -let refreshToken = '';
21 -
22 -async function authenticate() {
23 -
24 - return new Promise((resolve, reject) => {
25 -
26 - if (refreshToken !== "") {
27 - oauth2Client.setCredentials({
28 - refresh_token: refreshToken
29 - });
30 -
31 - oauth2Client.getAccessToken((err, ttoken) => {
32 - if (err) {
33 - reject(e);
34 - }
35 - resolve(oauth2Client);
36 - });
37 - } else {
38 - const authorizeUrl = oauth2Client.generateAuthUrl({
39 - access_type: 'offline',
40 - scope: scopes.join(' '),
41 - });
42 - const server = http.createServer(async (req, res) => {
43 - try {
44 - if (req.url.indexOf('/api/oauth2callback') > -1) {
45 - const qs = new url.URL(req.url, 'http://localhost:3031').searchParams;
46 - res.end('Completed');
47 - enableDestroy(server);
48 - server.destroy();
49 -
50 - const {
51 - tokens
52 - } = await oauth2Client.getToken(qs.get('code'));
53 -
54 - refreshToken = tokens.refresh_token;
55 - oauth2Client.credentials = tokens;
56 -
57 - resolve(oauth2Client);
58 - }
59 - } catch (e) {
60 - reject(e);
61 - }
62 - }).listen(3031, () => {
63 -
64 - opn(authorizeUrl, {
65 - wait: false
66 - }).then(cp => cp.unref());
67 - });
68 -
69 - destroyer(server);
70 - }
71 - });
72 -}
73 -
74 -module.exports.refreshClient=authenticate;
...\ No newline at end of file ...\ No newline at end of file
1 -const { google } = require("googleapis");
2 -var service = google.youtube('v3');
3 -const oauth2Service = require('./oauth2');
4 -
5 -async function getPlaylistItemData(oauth2Client, playlistId) {
6 - const res = await service.playlistItems.list({
7 - auth: oauth2Client,
8 - part: 'snippet',
9 - fields: 'items(snippet(title))', //제목 정보만 필요함
10 - maxResults: 50,
11 - playlistId: playlistId
12 - });
13 -
14 - if (res.data.items == null || res.data.items.length === 0) {
15 - throw new Error("데이터가 존재하지 않습니다.");
16 - }
17 -
18 - return res.data;
19 -}
20 -
21 -oauth2Service.refreshClient() //getPlaylistItemData(client, 재생목록의 주소) 예시로 슬픈노래 재생목록을 가져옴.
22 - .then(client => getPlaylistItemData(client, 'PLJrlhDfEQCMD0SG8WCSbUjztMAYnVyuuY'))
23 - .then(data => {
24 - console.log(JSON.stringify(data.items, null, 4));
25 - })
26 - .catch(error => console.error);
...\ No newline at end of file ...\ No newline at end of file
1 -var {google} =require('googleapis');
2 -
3 -//1
4 -var service = google.youtube('v3');
5 -service.videos.list({
6 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
7 - part: 'snippet',
8 - id: '8ykMyNHAdKk', // 동영상 Id 팔레트
9 - fields: 'items(snippet(title))'
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 - console.log(JSON.stringify(response.data.items[0],null,4));
21 - }
22 -})
23 -//2
24 -service.videos.list({
25 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
26 - part: 'snippet',
27 - id: '6744glqD6lk', // 동영상 Id 밤편지
28 - fields: 'items(snippet(title))'
29 -}, function(err, response) {
30 - if (err) {
31 - console.log('The API returned an error: ',err);
32 - return;
33 - }
34 -
35 - var video =response.data.items;
36 - if(video.length ==0){
37 - console.log('검색된 동영상이 없습니다.');
38 - } else {
39 - console.log(JSON.stringify(response.data.items[0],null,4));
40 - }
41 -})
42 -//3
43 -service.videos.list({
44 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
45 - part: 'snippet',
46 - id: 'he2C4lx63M0', // 동영상 Id 마음
47 - fields: 'items(snippet(title))'
48 -}, function(err, response) {
49 - if (err) {
50 - console.log('The API returned an error: ',err);
51 - return;
52 - }
53 -
54 - var video =response.data.items;
55 - if(video.length ==0){
56 - console.log('검색된 동영상이 없습니다.');
57 - } else {
58 - console.log(JSON.stringify(response.data.items[0],null,4));
59 - }
60 -})
61 -//4
62 -service.videos.list({
63 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
64 - part: 'snippet',
65 - id: 'xKZ3U8viuIU', // 동영상 Id 금요일에 만나요
66 - fields: 'items(snippet(title))'
67 -}, function(err, response) {
68 - if (err) {
69 - console.log('The API returned an error: ',err);
70 - return;
71 - }
72 -
73 - var video =response.data.items;
74 - if(video.length ==0){
75 - console.log('검색된 동영상이 없습니다.');
76 - } else {
77 - console.log(JSON.stringify(response.data.items[0],null,4));
78 - }
79 -})
80 -//5
81 -service.videos.list({
82 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
83 - part: 'snippet',
84 - id: 'seFr4qWykgY', // 동영상 Id 너랑나
85 - fields: 'items(snippet(title))'
86 -}, function(err, response) {
87 - if (err) {
88 - console.log('The API returned an error: ',err);
89 - return;
90 - }
91 -
92 - var video =response.data.items;
93 - if(video.length ==0){
94 - console.log('검색된 동영상이 없습니다.');
95 - } else {
96 - console.log(JSON.stringify(response.data.items[0],null,4));
97 - }
98 -})
99 -//6
100 -service.videos.list({
101 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
102 - part: 'snippet',
103 - id: 'r_-GQjN9Tpc', // 동영상 Id 내 손을 잡아
104 - fields: 'items(snippet(title))'
105 -}, function(err, response) {
106 - if (err) {
107 - console.log('The API returned an error: ',err);
108 - return;
109 - }
110 -
111 - var video =response.data.items;
112 - if(video.length ==0){
113 - console.log('검색된 동영상이 없습니다.');
114 - } else {
115 - console.log(JSON.stringify(response.data.items[0],null,4));
116 - }
117 -})
118 -//7
119 -service.videos.list({
120 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
121 - part: 'snippet',
122 - id: 'OIHlzvEKncQ', // 동영상 Id 좋은날
123 - fields: 'items(snippet(title))'
124 -}, function(err, response) {
125 - if (err) {
126 - console.log('The API returned an error: ',err);
127 - return;
128 - }
129 -
130 - var video =response.data.items;
131 - if(video.length ==0){
132 - console.log('검색된 동영상이 없습니다.');
133 - } else {
134 - console.log(JSON.stringify(response.data.items[0],null,4));
135 - }
136 -})
137 -//8
138 -service.videos.list({
139 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
140 - part: 'snippet',
141 - id: '04tYkKUPPv4', // 동영상 Id 라일락
142 - fields: 'items(snippet(title))'
143 -}, function(err, response) {
144 - if (err) {
145 - console.log('The API returned an error: ',err);
146 - return;
147 - }
148 -
149 - var video =response.data.items;
150 - if(video.length ==0){
151 - console.log('검색된 동영상이 없습니다.');
152 - } else {
153 - console.log(JSON.stringify(response.data.items[0],null,4));
154 - }
155 -})
156 -//9
157 -service.videos.list({
158 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
159 - part: 'snippet',
160 - id: '0ldJaGupC1o', // 동영상 Id 사랑이 잘
161 - fields: 'items(snippet(title))'
162 -}, function(err, response) {
163 - if (err) {
164 - console.log('The API returned an error: ',err);
165 - return;
166 - }
167 -
168 - var video =response.data.items;
169 - if(video.length ==0){
170 - console.log('검색된 동영상이 없습니다.');
171 - } else {
172 - console.log(JSON.stringify(response.data.items[0],null,4));
173 - }
174 -})
175 -//10
176 -service.videos.list({
177 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
178 - part: 'snippet',
179 - id: 'l0rcWimJmQ8', // 동영상 Id 봄 사랑, 벛꽃 말고
180 - fields: 'items(snippet(title))'
181 -}, function(err, response) {
182 - if (err) {
183 - console.log('The API returned an error: ',err);
184 - return;
185 - }
186 -
187 - var video =response.data.items;
188 - if(video.length ==0){
189 - console.log('검색된 동영상이 없습니다.');
190 - } else {
191 - console.log(JSON.stringify(response.data.items[0],null,4));
192 - }
193 -})
1 -var {google} =require('googleapis');
2 -
3 -//1
4 -var service = google.youtube('v3');
5 -service.videos.list({
6 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
7 - part: 'snippet',
8 - id: 'j-seAiANLG8', // 동영상 Id
9 - fields: 'items(snippet(title))'
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 - console.log(JSON.stringify(response.data.items[0],null,4));
21 - }
22 -})
23 -//2
24 -service.videos.list({
25 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
26 - part: 'snippet',
27 - id: 'F8c8f2nK82w', // 동영상 Id
28 - fields: 'items(snippet(title))'
29 -}, function(err, response) {
30 - if (err) {
31 - console.log('The API returned an error: ',err);
32 - return;
33 - }
34 -
35 - var video =response.data.items;
36 - if(video.length ==0){
37 - console.log('검색된 동영상이 없습니다.');
38 - } else {
39 - console.log(JSON.stringify(response.data.items[0],null,4));
40 - }
41 -})
42 -//3
43 -service.videos.list({
44 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
45 - part: 'snippet',
46 - id: 'IfemyZEhfpY', // 동영상 Id
47 - fields: 'items(snippet(title))'
48 -}, function(err, response) {
49 - if (err) {
50 - console.log('The API returned an error: ',err);
51 - return;
52 - }
53 -
54 - var video =response.data.items;
55 - if(video.length ==0){
56 - console.log('검색된 동영상이 없습니다.');
57 - } else {
58 - console.log(JSON.stringify(response.data.items[0],null,4));
59 - }
60 -})
61 -//4
62 -service.videos.list({
63 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
64 - part: 'snippet',
65 - id: '86suvlS1pGM', // 동영상 Id
66 - fields: 'items(snippet(title))'
67 -}, function(err, response) {
68 - if (err) {
69 - console.log('The API returned an error: ',err);
70 - return;
71 - }
72 -
73 - var video =response.data.items;
74 - if(video.length ==0){
75 - console.log('검색된 동영상이 없습니다.');
76 - } else {
77 - console.log(JSON.stringify(response.data.items[0],null,4));
78 - }
79 -})
80 -//5
81 -service.videos.list({
82 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
83 - part: 'snippet',
84 - id: 'ztmOmJrTF5c', // 동영상 Id
85 - fields: 'items(snippet(title))'
86 -}, function(err, response) {
87 - if (err) {
88 - console.log('The API returned an error: ',err);
89 - return;
90 - }
91 -
92 - var video =response.data.items;
93 - if(video.length ==0){
94 - console.log('검색된 동영상이 없습니다.');
95 - } else {
96 - console.log(JSON.stringify(response.data.items[0],null,4));
97 - }
98 -})
99 -//6
100 -service.videos.list({
101 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
102 - part: 'snippet',
103 - id: '6jAHysZVtwI', // 동영상 Id
104 - fields: 'items(snippet(title))'
105 -}, function(err, response) {
106 - if (err) {
107 - console.log('The API returned an error: ',err);
108 - return;
109 - }
110 -
111 - var video =response.data.items;
112 - if(video.length ==0){
113 - console.log('검색된 동영상이 없습니다.');
114 - } else {
115 - console.log(JSON.stringify(response.data.items[0],null,4));
116 - }
117 -})
118 -//7
119 -service.videos.list({
120 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
121 - part: 'snippet',
122 - id: 'fFZ1__X-kKs', // 동영상 Id
123 - fields: 'items(snippet(title))'
124 -}, function(err, response) {
125 - if (err) {
126 - console.log('The API returned an error: ',err);
127 - return;
128 - }
129 -
130 - var video =response.data.items;
131 - if(video.length ==0){
132 - console.log('검색된 동영상이 없습니다.');
133 - } else {
134 - console.log(JSON.stringify(response.data.items[0],null,4));
135 - }
136 -})
137 -//8
138 -service.videos.list({
139 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
140 - part: 'snippet',
141 - id: 'ei0k_1Uro-U', // 동영상 Id
142 - fields: 'items(snippet(title))'
143 -}, function(err, response) {
144 - if (err) {
145 - console.log('The API returned an error: ',err);
146 - return;
147 - }
148 -
149 - var video =response.data.items;
150 - if(video.length ==0){
151 - console.log('검색된 동영상이 없습니다.');
152 - } else {
153 - console.log(JSON.stringify(response.data.items[0],null,4));
154 - }
155 -})
156 -//9
157 -service.videos.list({
158 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
159 - part: 'snippet',
160 - id: 'mCtVrf2x5BQ', // 동영상 Id
161 - fields: 'items(snippet(title))'
162 -}, function(err, response) {
163 - if (err) {
164 - console.log('The API returned an error: ',err);
165 - return;
166 - }
167 -
168 - var video =response.data.items;
169 - if(video.length ==0){
170 - console.log('검색된 동영상이 없습니다.');
171 - } else {
172 - console.log(JSON.stringify(response.data.items[0],null,4));
173 - }
174 -})
175 -//10
176 -service.videos.list({
177 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
178 - part: 'snippet',
179 - id: 'FV003QMWhNM', // 동영상 Id
180 - fields: 'items(snippet(title))'
181 -}, function(err, response) {
182 - if (err) {
183 - console.log('The API returned an error: ',err);
184 - return;
185 - }
186 -
187 - var video =response.data.items;
188 - if(video.length ==0){
189 - console.log('검색된 동영상이 없습니다.');
190 - } else {
191 - console.log(JSON.stringify(response.data.items[0],null,4));
192 - }
193 -})
1 -var {google} =require('googleapis');
2 -
3 -//1
4 -var service = google.youtube('v3');
5 -service.videos.list({
6 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
7 - part: 'snippet',
8 - id: 'p5iu1V30myk', // 동영상 Id
9 - fields: 'items(snippet(title))'
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 - console.log(JSON.stringify(response.data.items[0],null,4));
21 - }
22 -})
23 -//2
24 -service.videos.list({
25 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
26 - part: 'snippet',
27 - id: 'i-SBnhaZSSU', // 동영상 Id
28 - fields: 'items(snippet(title))'
29 -}, function(err, response) {
30 - if (err) {
31 - console.log('The API returned an error: ',err);
32 - return;
33 - }
34 -
35 - var video =response.data.items;
36 - if(video.length ==0){
37 - console.log('검색된 동영상이 없습니다.');
38 - } else {
39 - console.log(JSON.stringify(response.data.items[0],null,4));
40 - }
41 -})
42 -//3
43 -service.videos.list({
44 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
45 - part: 'snippet',
46 - id: 'Etfgb6A7hSI', // 동영상 Id
47 - fields: 'items(snippet(title))'
48 -}, function(err, response) {
49 - if (err) {
50 - console.log('The API returned an error: ',err);
51 - return;
52 - }
53 -
54 - var video =response.data.items;
55 - if(video.length ==0){
56 - console.log('검색된 동영상이 없습니다.');
57 - } else {
58 - console.log(JSON.stringify(response.data.items[0],null,4));
59 - }
60 -})
61 -//4
62 -service.videos.list({
63 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
64 - part: 'snippet',
65 - id: 'IN2mml9xs_s', // 동영상 Id
66 - fields: 'items(snippet(title))'
67 -}, function(err, response) {
68 - if (err) {
69 - console.log('The API returned an error: ',err);
70 - return;
71 - }
72 -
73 - var video =response.data.items;
74 - if(video.length ==0){
75 - console.log('검색된 동영상이 없습니다.');
76 - } else {
77 - console.log(JSON.stringify(response.data.items[0],null,4));
78 - }
79 -})
80 -//5
81 -service.videos.list({
82 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
83 - part: 'snippet',
84 - id: 'tp1uoFAfgHE', // 동영상 Id
85 - fields: 'items(snippet(title))'
86 -}, function(err, response) {
87 - if (err) {
88 - console.log('The API returned an error: ',err);
89 - return;
90 - }
91 -
92 - var video =response.data.items;
93 - if(video.length ==0){
94 - console.log('검색된 동영상이 없습니다.');
95 - } else {
96 - console.log(JSON.stringify(response.data.items[0],null,4));
97 - }
98 -})
99 -//6
100 -service.videos.list({
101 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
102 - part: 'snippet',
103 - id: 'Qx22TnVVIfU', // 동영상 Id
104 - fields: 'items(snippet(title))'
105 -}, function(err, response) {
106 - if (err) {
107 - console.log('The API returned an error: ',err);
108 - return;
109 - }
110 -
111 - var video =response.data.items;
112 - if(video.length ==0){
113 - console.log('검색된 동영상이 없습니다.');
114 - } else {
115 - console.log(JSON.stringify(response.data.items[0],null,4));
116 - }
117 -})
118 -//7
119 -service.videos.list({
120 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
121 - part: 'snippet',
122 - id: '3y1QIqR115A', // 동영상 Id
123 - fields: 'items(snippet(title))'
124 -}, function(err, response) {
125 - if (err) {
126 - console.log('The API returned an error: ',err);
127 - return;
128 - }
129 -
130 - var video =response.data.items;
131 - if(video.length ==0){
132 - console.log('검색된 동영상이 없습니다.');
133 - } else {
134 - console.log(JSON.stringify(response.data.items[0],null,4));
135 - }
136 -})
137 -//8
138 -service.videos.list({
139 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
140 - part: 'snippet',
141 - id: 'VXBI1wt8XII', // 동영상 Id
142 - fields: 'items(snippet(title))'
143 -}, function(err, response) {
144 - if (err) {
145 - console.log('The API returned an error: ',err);
146 - return;
147 - }
148 -
149 - var video =response.data.items;
150 - if(video.length ==0){
151 - console.log('검색된 동영상이 없습니다.');
152 - } else {
153 - console.log(JSON.stringify(response.data.items[0],null,4));
154 - }
155 -})
156 -//9
157 -service.videos.list({
158 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
159 - part: 'snippet',
160 - id: 'aWMBn2--E0Q', // 동영상 Id
161 - fields: 'items(snippet(title))'
162 -}, function(err, response) {
163 - if (err) {
164 - console.log('The API returned an error: ',err);
165 - return;
166 - }
167 -
168 - var video =response.data.items;
169 - if(video.length ==0){
170 - console.log('검색된 동영상이 없습니다.');
171 - } else {
172 - console.log(JSON.stringify(response.data.items[0],null,4));
173 - }
174 -})
175 -//10
176 -service.videos.list({
177 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
178 - part: 'snippet',
179 - id: 'HyTbgBlnLCo', // 동영상 Id
180 - fields: 'items(snippet(title))'
181 -}, function(err, response) {
182 - if (err) {
183 - console.log('The API returned an error: ',err);
184 - return;
185 - }
186 -
187 - var video =response.data.items;
188 - if(video.length ==0){
189 - console.log('검색된 동영상이 없습니다.');
190 - } else {
191 - console.log(JSON.stringify(response.data.items[0],null,4));
192 - }
193 -})
1 -var {google} =require('googleapis');
2 -
3 -var service = google.youtube('v3');
4 -service.videos.list({
5 - key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
6 - part: 'snippet',
7 - id: 'p5iu1V30myk', // 동영상 Id
8 - fields: 'items(snippet(title))'
9 -}, function(err, response) {
10 - if (err) {
11 - console.log('The API returned an error: ',err);
12 - return;
13 - }
14 -
15 - var video =response.data.items;
16 - if(video.length ==0){
17 - console.log('검색된 동영상이 없습니다.');
18 - } else {
19 - console.log(JSON.stringify(response.data.items[0],null,4)); // 콘솔에 출력
20 - }
21 -})
...\ No newline at end of file ...\ No newline at end of file
1 -내가 할 일 : ( api를 통해 얻어온 유튜브 영상 제목 모두 ) or ( 랜덤하게 한개 ) 를 라인을 통해 사용자에게 보내는 방법 찾기
2 -
3 -
4 -
5 -ex)
6 -사용자: 슬픈 노래 추천해줘
7 -챗봇: 재생목록에서 받아온 노래 n개 출력 or 랜덤하게 한개 출력.
...\ No newline at end of file ...\ No newline at end of file
1 -oauth2.js 실행할 필요 없이 playlistbyid.js 만 실행하셔도 될 것 같습니다.
2 -
3 -실행하기 이전에, 제가 package 파일을 다루는걸 몰라서
4 -
5 -아직은 수동으로 npm install 을 진행해주셔야 할 것 같습니다.
6 -
7 -oauth2.js 와 playlistbyid.js 에 있는 require 항목들을 모두 install 해주시고 진행해주시면 됩니다.
8 -
9 -playlistbyid.js를 실행하시면 브라우저 창에서 구글 아이디를 통해 유튜브 api를 이용할 수 있도록 인증하는 절차를 거치게 됩니다.
10 -
11 -확인되지 않은 앱이라고 뜨시면 고급으로 이동하여 안전하지 않은 페이지로 이동하시면 됩니다.
12 -
13 -모든 인증이 끝나면 Completed 라는 메시지가 뜹니다.
14 -
15 -재생목록의 주소를 입력하면 재생목록의 영상 제목을 출력하도록 하였습니다.
...\ No newline at end of file ...\ No newline at end of file
1 +수동으로 googleapis 를 npm install 해야합니다.
...\ No newline at end of file ...\ No newline at end of file
......