node.js로 Youtube 다루기

Youtube가 무엇인지는 따로 설명하지 않아도 대부분의 사람들이 알것이라고 생각합니다.
이 youtube도 구글에서 OpenAPI를 제공하고 있어서 Node.js에서 활용을 할 수 가 있습니다. 동영상을 업로드하거나 업데이트하거나 또는 검색어를 통해 리스트를 받아볼 수도 있습니다.
이런기능을 잘 활용하면 유의미한 APP을 개발할 수 있습니다.

이번 포스팅에서는 간단하게 Youtube Data API를 활용하여 원하는 검색어로 검색을 하는 일련의 과정을 작성하도록 하겠습니다.

0.1. Youtube API 키 발급받기

Youtube API를 사용하기 위해서는 먼저 구글에 해당 API를 사용하겠다고 등록을 하고 Youtube API 키를 발급받아야 합니다.

Youtube API뿐만아니라 OpenAPI를 사용하기 위해서는 대부분 API 키를 발급받아야 합니다. API키는 구글개발자센터(https://console.developers.google.com)에서 신청을 할 수 있습니다.

처음 API 사용 신청하는 것이라면 구글개발자센터에 접속하면 아래와 같은 화면을 볼 수 있습니다.

  1. 처음 접속 일 경우 바로 해당화면이 나오며 그렇지 않은경우 좌측에 있는 메뉴 중 라이브러리메뉴 선택
  2. Youtube Data API 항목 선택

tistory-image

API는 프로젝트단위로 발급이 되기 떄문에 프로젝트가 없는 경우는 프로젝트를 먼저 생성해야 합니다. 프로젝트는 상황에 맞게 복수개를 생성할 수 있습니다.

  1. 프로젝트 만들기 버튼 선택

tistory-image

프로젝트는 간단하게 프로젝트 이름만 만들면 됩니다.

  1. 프로젝트 이름에 원하는 이름을 작성
  2. 만들기 버튼 선택

tistory-image

프로젝트가 생성이 되었으면 Youtube Data API사용하겠다는 의사표시를 합니다. 나중에 사용하지 않을 경우는 삭제를 하지 않고 사용중지를 할 수도 있습니다.

  1. 사용설정 링크 선택

tistory-image

사용설정이 되었으면 이제 사용자 인증정보를 만들어야 합니다. 사용자인증정보에서 설정하는 조건에 대해 API 키값이 생성됩니다.

  1. 사용자 인증정보 만들기 버튼 선택

tistory-image

사용자인증정보를 만들기 위해 몇가지 간단한 설정을 해야 합니다.

여기서는 node.js로 테스트하는 것이기 때문에 웹서버 항목을 선택했습니다. 웹브라우저나 , 안드로이드, IOS등 다양한 용도로 설정을 할 수 있습니다.

  1. Youtube Data API v3을 선택
  2. 웹서버(예:node.js,Tomcat)을 선택
  3. 완료 버튼 클릭 (이미지상에는 버튼이 가려져 있네요 –;)

tistory-image

드디어 API키가 생성되었습니다. 해당 키값을 기억했다가 사용하면 됩니다.

  1. API키 값 확인
  2. 완료 버튼 선택

tistory-image

내 계정의 프로젝트명에 해당하는 모든 API키값은 좌측 메뉴의 사용자 인증정보 메뉴에서 확인할 수 있습니다.

  1. 사용자 인증정보 메뉴 선택
  2. API키 값 확인

tistory-image

0.2. youtube-node 모듈 설치

node.js에서 유튜브 API를 사용할 수 있게 해주는 모듈을 설치합니다.

npm install youtube-node

0.3. Youtube 검색하기

Youtube API 키를 발급받았으면 Node.js 프로그램으로 특정 검색어의 검색결과를 리스트 하도록 하겠습니다.

var Youtube = require('youtube-node');
var youtube = new Youtube();

var word = '강아지'; // 검색어 지정
var limit = 10;  // 출력 갯수

youtube.setKey('발급받은 API키 입력'); // API 키 입력

//// 검색 옵션 시작
youtube.addParam('order', 'rating'); // 평점 순으로 정렬
youtube.addParam('type', 'video');   // 타입 지정
youtube.addParam('videoLicense', 'creativeCommon'); // 크리에이티브 커먼즈 아이템만 불러옴
//// 검색 옵션 끝

youtube.search(word, limit, function (err, result) { // 검색 실행
    if (err) { console.log(err); return; } // 에러일 경우 에러공지하고 빠져나감

    console.log(JSON.stringify(result, null, 2)); // 받아온 전체 리스트 출력

    var items = result["items"]; // 결과 중 items 항목만 가져옴
    for (var i in items) { 
        var it = items[i];
        var title = it["snippet"]["title"];
        var video_id = it["id"]["videoId"];
        var url = "https://www.youtube.com/watch?v=" + video_id;
        console.log("제목 : " + title);
        console.log("URL : " + url);
        console.log("-----------");
    }
});

위와같이 작성한 프로그램을 cmd 또는 shell화면에서 아래와 같이 실행 시킵니다.

$ node youtube-test.js

그러면 아래와같이 리스트가 나오면 정상입니다.

tistory-image

0.4. Youtube API 검색 옵션

Youtube API 검색 옵션은 youtube.addParam('옵션명', '값')형태로 지정을 합니다.

youtube.addParam('order', 'rating'); // 평점 순으로 정렬
youtube.addParam('type', 'video');   // 타입 지정
youtube.addParam('videoLicense', 'creativeCommon'); // 크리에이티브 커먼즈 아이템만 불러옴

0.4.1. 검색 옵션

아래와 같은 대표적인 검색옵션이 있습니다.

옵션 설명
order date, rating, relevance, title, videoCount, viewCount 정렬 조건 지정
regionCode kr, jp, us… 국가 지정
safeSearch none, moderate, strict 제한된 컨텐츠를 포함할지 여부 지정
type channel, playlist, video 검색 대상 유형 지정
videoDuration any, long, medium, short 검색 동영상의 길이 지정
videoLicense any, creativeCommon, youtube 검색 동영상의 라이선스 지정

Similar Posts

  • CSS3로 타이틀바 꾸미기 5가지

    HTML과 CSS로 탬플릿 디자인을 할때 타이틀 제목으로 사용할 태그에 대해서 미리 꾸며 놓는 경우가 있습니다. 저같은 경우는 블로그를 작성할때 Markdown으로 작성을 하는데 Headline 테그에 미리 CSS로 꾸며 놓으면 쉽고 빠르게 아름다운 글 모양을 나타낼 수 있습니다. 보통 h1 ~ h6 사이의 테그를 크기와 두께 라인 등을 이용하여 꾸밉니다. 아래에 정보를 남기니 참조해서 사용하시면 됩니다. h1 […]

  • XEICON 아이콘 폰트 사용하기

    아이콘 폰트인 XEICON을 사용하는 방법입니다. 아이콘폰트가 무엇인지 궁금하면 이전에 포스팅한 아이콘 폰트(Icon font) 자유자제로 사용하기를 먼저 읽어 보시는 것을 추천합니다. XEICON XEICON 홈페이지 바로가기 한 시대를 풍미했던 PHP 무료게시판 서비스인 제로보드가 네이버의 서포트를 받으면서 Xpressengine 바뀌었습니다. XEICON은 그 Xpressengine에서 서비스를 제공하고 있는 아이콘 폰트 서비스 입니다. 제공하는 방법과 사용 방법이 폰트어썸 (Font Awesome)과 거의 흡사하여 […]

  • 구글 스프레드시트에서 연속데이터 복사하는 방법

    엑셀에서는 사용방법을 아는데 구글 스프레드시트에서는 사용방법이 애매한 경우가 있습니다. 물론 알고 나면 쉽지만 모르면 상당히 어려운 기능 입니다. 저도 이것 때문에 고생하다가 겨우 알게 되었기에 블로그를 통해 공유를 하려고 합니다. MS엑셀에서 연속데이터 복사하기 MS 엑셀에는 상당히 쉬운면서 단순 노가다를 극적으로 해결해 주는 상당히 유용한 기능이 있는데요. 1~10번까지 순차적으로 자동 입력, 또는 날짜를 순차적으로 연속해서 데이터를 […]

  • Angular에서 사용되는 타입스크립트 문법

    타입스크립트에 대한 간단한 문법을 정리하려고 합니다. 타입과 문자열 선언자 var : javascript에서 전통적으로 사용해온 선언자로 모든 타입을 허용 let : typescript에서 특화시킨 선언자로 타입을 지정해야 함 배열타입 배열의 타입을 아래와 같이 설정하며 배열에 값을 입력할때는 push()를 사용함 let fruits: string[] = [“바나나”,”사과”,”오렌지”]; let num1:Array = [1,2,3]; let num2:Array = new Array(); num2.push(1); num2.push(2); num2.push(3); 유니언타입 […]

  • CSS3의 선택자 정리

    Front-end개발을 한다고 하면서 CSS3를 사용하는데.. 주로 사용하는 선택자들은 쉽게 사용하는데.. 많이 사용하지 않는 선택자에 대해서는 가끔씩 잊어버리거나 사용법을 잊어버리는 경우가 있습니다. 그래서 항상 참조할 수 있게 간단히 정리를 해 보려고 합니다. 선택자는 크게 기본 선택자, 속성 선택자, 상태 선택자로 나눌수 있습니다. 기본 선택자 CSS3를 다루기 위해서는 반드시 알아야 하는 선택자 입니다. 서식 설명 CSS레벨 * […]

  • VisualStudio Code 에디터의 설치와 유용한 확장프로그램(플러그인)

    SublimeText나 Atom에디터등 텍스트기반 에디터가 유행을 하자 MS에서도 Visual Studio를 기반으로 한 텍스트에디터를 출시하였고 다른 에디터들과 마찬가지로 무료로 서비스를 제공하고 있습니다. 저는 Notepadd++, SublimeText, Atom, Brackets, VisualStudioCode 에디터등을 두루두루 써보다가 VisualStudioCode에 정착을 했습니다. 원래는 Notepadd++를 요긴하게 잘 사용해 왔으나 플러그인 등이 부족하고 현재의 유행하는 편리한 기능의 에디터와는 다르기 때문에 좀더 편리한 에디터를 찾고자 했습니다. 그래서 여러가지 […]

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다