์นด์นด์ค๋ทฐ ์๋ ๋ฐํ์ ๊ณ ๋ฏผํ๋ฉด์ ๋ค์ ๋ด์ค N๊ฐ, ๋ค์ด๋ฒ ๋ด์ค N๊ฐ, ํฐ์คํ ๋ฆฌ N๊ฐ, ๋ค์ด๋ฒ ๋ธ๋ก๊ทธ N๊ฐ, ์ ํ๋ธ N๊ฐ ์ด๋ ๊ฒ ์ค์ ํ์ฌ ๋ฐํ ๊ฐ๋ฅํ๋๋ก ์๊ฐํ์๋ค. ๋งค์ผ 00:00๋ฉด ์๋์ผ๋ก playlist ๋ณด๋๋ฅผ ๋ฐํํ์๋๋ฐ ์ด๊ฒ์ ์ด์ ์๋์ผ๋ก ํ ์์ ์ด๋ค.
Google cloud console์ ์ ์ํ์ฌ ์ ํ๋ธ api ์ฌ์ฉ์ ํ์ฉ
๋งํฌ : https://console.cloud.google.com/apis/library/youtube.googleapis.com?hl=ko
๊ด๋ฆฌ์ ๋ค์ด๊ฐ์ ์ธ์ฆ์ ๋ณด๋ฅผ ์์ฑํ๋ค. api key๋ฅผ ๋ฐ๊ธํ๋ค๋ ์๊ธฐ์ด๋ค. ์ ํ ์ฌํญ์ ๊ฑธ์ด๋๋ฉด ๋ณด์์ ์ข๋ค๊ณ ํ์ฌ ๊ฑธ์๋ค.
๋ฐ๊ธ๋ฐ์ api key๋ฅผ ์๋ ์์ค์์ ์ ์ฉํ๋ค.
function getYoutube(playlist){
var API_KEY = 'apikey';
var url = "https://www.googleapis.com/youtube/v3/search?part=snippet&q=" + playlist
+ "&eventType=completed" //์ด๋ฏธ ์
๋ก๋ ๋
+ "&order=date&type=video" //๋ ์ง์ ์ ๋ ฌ ๋ฐ type์ video
+ "&videoDefinition=high" //๊ณ ํ์ง
+ "&videoEmbeddable=true" //์ฌ์ฉ ํ์ฉ
+ "&maxResults=2" //๊ฒ์ ๊ฒฐ๊ณผ ์
+ "®ionCode=KR" //๊ตญ๊ฐ ์ฝ๋
+ "&videoDimension=2d" //3d ์์ ์ ์ธ ํ๊ธฐ ์ํด, 2d๋ง
+ "&videoDuration=long" //20๋ถ ์ด์์ ๊ณก
+ "&key="+ API_KEY ; //๋์ ๊ตฌ๊ธ API KEY
var response = UrlFetchApp.fetch(url);
var resData = response.getContentText();
resData = JSON.parse(resData);
var arrInfo = new Array();
var arrTitle = new Array();
var arrLink = new Array();
var arrContent = new Array();
var arrDate = new Array();
for(var i = 0 ; i < 1; i ++ )
{
arrTitle.push(replaceTitle(removeEmojis(resData.items[i].snippet.title)));
arrLink.push("https://www.youtube.com/watch?v="+ resData.items[i].id.videoId);
arrContent.push(replaceTitle(removeEmojis(resData.items[i].snippet.description)));
arrDate.push(resData.items[i].snippet.publishedAt);
}
arrInfo.push(arrTitle);
arrInfo.push(arrLink);
arrInfo.push(arrContent);
arrInfo.push(arrDate);
var transposed = Array.from({ length: arrTitle.length }, () => new Array(2).fill(0))
for (var o=0; o< arrInfo.length; o++) {
for (var v=0; v<arrInfo[0].length; v++) {
[transposed[v][o]] = [arrInfo[o][v]];
}
}
return transposed;
}
url์ ์๋ ์ต์ ๊ฐ ์ค type=video๋ฅผ ๊ฐ์ ๋ก ๋ฃ์ง ์์ผ๋ฉด video ์ต์ ์ ์ค์ ํด๋ 403์๋ฌ๊ฐ ๋ฐ์ํ๋ ์ฃผ์ ๋ฐ๋๋ค.
var url = "https://www.googleapis.com/youtube/v3/search?part=snippet&q=" + playlist
+ "&eventType=completed" //์ด๋ฏธ ์
๋ก๋ ๋
+ "&order=date&type=video" //๋ ์ง์ ์ ๋ ฌ ๋ฐ type์ video
+ "&videoDefinition=high" //๊ณ ํ์ง
+ "&videoEmbeddable=true" //์ฌ์ฉ ํ์ฉ
+ "&maxResults=2" //๊ฒ์ ๊ฒฐ๊ณผ ์
+ "®ionCode=KR" //๊ตญ๊ฐ ์ฝ๋
+ "&videoDimension=2d" //3d ์์ ์ ์ธ ํ๊ธฐ ์ํด, 2d๋ง
+ "&videoDuration=long" //20๋ถ ์ด์์ ๊ณก
+ "&key="+ API_KEY ; //๋์ ๊ตฌ๊ธ API KEY
param ๊ด๋ จํ ์ ๋ณด๊ฐ ๋์์๋ ๊ฐ์ด๋ ๋งํฌ๋ฅผ ์ ๋ฌ๋๋ฆฐ๋ค.
keyword๋ฅผ ๊ทธ๋ ๊ทธ๋ ๋ณ๊ฒฝํ ์ ์๋ค๊ณ ์๊ฐํด์ ํค์๋ ์ค์ ๋ฐ ํด๋น ํค์๋๋ณ ๋ฆฌ์คํธ๋ฅผ 2๊ฐ์ฉ ๊ฐ์ ธ์ค๋๋ก ํด๋์๋ค.
์ ํ์ ์ผ๋ก ๋ณด๋ ๋ฐํ ํ ์์ ์ด๋ค.
์ฌ๋ฌ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํด์, ์ข์ ์ฝํ ์ธ ๋ฅผ ์์ฑํ๊ฑฐ๋ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ๋ ธ๋ ฅํด์ผ๊ฒ ๋ค. ์ง๊ธ๊น์ง ์ ํ๋ธ(Youtube) API ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ํธ์ด์์ต๋๋ค.
*์ฐธ๊ณ ๋ก ์์ , ์ ๋ก๋, ์ญ์ ๋ฑ์ OAuth ์ธ์ฆ์ ๋ณด๋ ์ฌ์ฉํด์ผํฉ๋๋ค. ๋ฌด๋ฃ๋ก ์ ๊ณต ์ ํธ์ถ ์ ํ์ด ์์ต๋๋ค. ์ด๊ณผ ๋ ๊ฒฝ์ฐ #ERROR๊ฐ ๋ฐ์ํฉ๋๋ค.
*5์ ์ถ๊ฐ ๊ณ ๋ฏผ ์ฌํญ : ์๊ฐ๋ณด๋ค ์ข์ playlist๊ฐ ๊ฒ์์ด ์๋์ ํน์ ์ฑ๋ ๊ธฐ์ค์ผ๋ก ๋ฆฌ์คํธ์ ํด์ผํ ์ง ๊ณ ๋ฏผํ๊ณ ์์ต๋๋ค.
'๋์งํธ ๊ฟํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
WebRTC ๊ฐ๋ ์๋ฆฌ > chrome://chrome-urls/ (0) | 2022.04.30 |
---|---|
๋๋ง์ ์์๋ ์์ฑํ๊ธฐ (feat, ๋ฒ๋ก & SW๊ธฐํ์) (0) | 2022.04.24 |
WebRTC ๊ฐ๋ ์๋ฆฌ > ๋ฏธ๋์ด ์ฐ๊ฒฐ ๋ฐฉ์ (0) | 2022.04.22 |
๋๊ธ