본문 바로가기

Node.js

Node js로 유튜브 동영상 다운로드 받기

Node js로 유튜브 동영상을 다운받아보자.

항상 Nodejs 모듈을 배울 때 가장 좋은 것은 공식 홈페이지의 설명서를 제대로 읽어보는 것, 따라해보는 것이다.

Google에 youtube dl nodejs 라고 검색한뒤

이 모듈의 npm 사이트에 들어가자.


Youtube-dl??

참고로 youtube-dl은

youtube video의 url을 이용해 youtube의 video를 내 컴퓨터에 스트림을 이용해 다운받을 수 있게 해주는 모듈이다.

nodejs 에서 쓸 수도 있고 그냥 command line 응용프로그램으로 쓸 수도 있다.



설치법이 나와있다.

자기 프로젝트의 디렉토리로 가서

콘솔에서 npm install youtube-dl을 입력해주자.



무사히 설치가 되었다.

[ Windows 유저의 경우 이따가 js파일 node로 실행하면 오류남 ]

https://stackoverflow.com/questions/49770196/nodejs-youtube-spawn-unknown-error/49771147#49771147

에 아주 잘 나와있으니 참고!


이제 이 모듈의 사용법을 읽어보자.


youtube-dl 모듈 초간단사용법


▲ 공식홈페이지에 나온 사용법


line 3 :

var video = youtubedl(url, [옵션 args로서의 배열]

, child_process를 위한 추가적 인자(안줘도 되더라고요.)

);

로 해당 url에 대한 비디오 및 모듈을 거친 설정들이 video변수에 담긴다.


info이벤트는 비디오 다운로드가 시작되면 호출된답니다.

그리고 video.pipe(출력스트림)을 통해 스트림을 연결하여 다운로드한다!

아주 간단!



예시로 동영상을 하나 다운받아보겠다.

youtube에 "request 모듈"이라 친 뒤 한 영상의 링크를 따온다. 동영상에서 우클릭하면 됨.


실행결과 동영상이 성공적으로 다운받아졌다.

여기까진 초간단 사용법이다.


다음은 추가적으로 format 설정하는 법을 알아보겠다.

youtube-dl프로그램을 nodejs에서 쓰기위해 매핑한 npm사이트가 아닌

youtube-dl프로그램 자체의 github페이지 에서FORMAT SELECTION란에 가보면 대충은 나와있다.

아마 쓸만한 거는 best 밖에 없을듯. 

그냥 숫자로 22나 18이렇게 주어도됨. 22는 고화질 18은 저화질인듯.


(https://unix.stackexchange.com/questions/272868/download-only-format-mp4-on-youtube-dl

이 곳에 한 동영상에 대한 available format 예제가 나와있는데 nodejs로 매핑한 모듈로 볼 수 있는 게 아니라 command line 프로그램으로 실행해서 -F url 옵션을 줘야 볼 수 있는 것 같음.)



아까 그 동영상을 예시로 -F옵션을 실행해봤다.

( 참고로 command line 응용프로그램으로서의 youtube-dl은 

자기가 youtube-dl모듈 설치했을 때, 자기 모듈이 설치되는 폴더/youtube/bin 에 설치되어있다. )

보통 18이나 22쓰면 되더라구요.


이상 대략적인 youtube-dl 모듈의 사용법을 알아보았다.


아래 예시는 Youtube Data API와 youtube-dl을 이용해  플레이리스트에 있는 모든 영상을 자동으로 다운받는 예제예요.