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 항목 선택

구글개발자센터 대시보드

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

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

프로젝트 생성하기

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

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

프로젝트 이름 지정하기

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

  1. 사용설정 링크 선택

프로젝트 사용설정 활성화 하기

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

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

사용자 인증정보 만들기

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

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

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

사용자 인증정보 조건값 설정하기

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

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

API 키값 생성

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

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

사용자 인증정보 메뉴에서 API값 확인하기

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

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

유투브 검색프로그램 실행 결과화면

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 검색 동영상의 라이선스 지정

Comments

Popular posts from this blog

CSS에서 ellipsis('...')를 처리하는 방법

nano에디터 소개 및 사용법

Google 스프레드시트로 구글캘린더에 일정 연동하는 방법