글을 시작하기 전에, 본 포스팅에 포함된 코드는 아래 주소의 내용을 참조하였음을 밝힙니다.
http://advent.perl.kr/2011/2011-12-09.html
유투브에서 동영상을 보다 보면 끊기는 경우가 종종 있어서 다운로드 받아서 안 끊기게 보고 싶다는 생각을 하는데요.
위 주소에서 Perl 을 이용하여 유투브에 있는 동영상을 다운로드 하는 방법에 대한 설명이 자세히 나와 있습니다.
역시 Perl 은 참 재주 많은 놈이더군요.
그런데 위 주소의 코드를 그대로 실행 시키면 다음과 같이 잘 구분이 안 되는 파일명으로 동영상이 다운로드 됩니다.
EX) EaEkTHNNL_o.mp4
그래서 파일명을 그나마 알아보기 쉽게 저장하도록 코드를 추가 하였습니다.
본 코드를 실행하기 위해서는 위 주소에 기재된 바와 같이 CPAN 에서 다음 두 모듈을 install 해야 합니다.
WebService::GData::YouTube
WWW::YouTube::Download
수정된 코드는 다음과 같구요~ 저는 youtube.pl 이라는 이름으로 저장했습니다.
현재 윈도우 7 이므로 Encode 모듈을 추가 했습니다.
use 5.010;
use strict;
use warnings;
use WWW::YouTube::Download;
use WebService::GData::YouTube;
use Encode;
# 아듀먼트로 검색 값
my ($search, $limit) = (@ARGV);
$limit //= 10;
$search = decode('cp949', $search);
# 검색 값으로 유투브 검색
my $search_youtube = WebService::GData::YouTube->new;
# 쿼리 값 설정
$search_youtube->query()->q($search)->limit($limit, 0);
# 검색
my $results = $search_youtube->search_video();
# 다운로드
my $client = WWW::YouTube::Download->new;
foreach my $ret (@$results) {
my $title = $client->get_title($ret->video_id);
my $suffix = $client->get_suffix($ret->video_id);
$title= encode( 'cp949', decode('UTF-8', $title) );
my $newFilename = $title . '.' . $suffix;
say "Starting Download : " . $newFilename;
$client->download($ret->video_id, {
filename => $newFilename,
});
}
다음과 같이 실행 해 보니깐~
위 실행화면은 아이유에 대해 2개만 검색하는 경우 입니다.
요렇게 두 개의 동영상 파일이 다운로드 되더군요.
아이유(IU) - 너랑 나 (YOU & I) MV Full Ver. (SD).flv
IU (아이유) - 하루 끝 (Every End of The Day) [MV HD ENG SUB].mp4
결론은…..
참조한 글의 저자인 eeyees 님과
Perl 의 창시자인 Larry Wall 과
필요한 모듈을 만들고 공유해 주신 세계의 똑똑한 분들과
유투브 서비스를 해주는 구글 관계자 분들과
아이유 동영상을 유투브에 올려 주신 분들과
마지막으로 아이유 가수님께… 감사하다는 겁니다.
'컴퓨터일반' 카테고리의 다른 글
C/C++ memmove() 함수 속도 실험 (4) | 2012.08.06 |
---|---|
Codeblock 에서 DLL 사용하기 (0) | 2012.07.31 |
C/C++ memcpy() 함수 속도 (0) | 2012.07.16 |
C/C++ 동적 할당 배열 인덱스 1부터 시작하기 (0) | 2012.06.21 |
GoldWave command line 명령 이용하기 (0) | 2012.06.05 |
Visual studio 에서 math.h 정의시 상수 사용 방법 (0) | 2012.06.03 |
안드로이드에서 팟캐스트 듣기 (2) | 2012.04.04 |
컴퓨터 공인인증서 폴더 위치 (0) | 2012.03.20 |
댓글