# $Id: YouTube 10867 2009-10-26 22:47:10Z sparky $
# Video::YouTube - Video getter plugin for rsget.pl
#
# 2009 (c) Przemysław Iskra <sparky@pld-linux.org>
#		This program is free software,
# you may distribute it under GPL v2 or newer.

name: YouTube
short: V:YouTube
uri: qr{youtube\.com/watch\?v=.*}
slots: max
status: OK 2009-10-03

unify:
	s/#.*//;
	m{[\?&]v=([-_a-zA-Z0-9]+)(?:&.*?)?$};
	return "http://www.youtube.com/watch?v=$1" if $1;

start:
	GET( $-{_uri} );

	! m{"video_id": "(.*?)"};
	my $id = $1;

	! m{<meta name="title" content="(.*?)">};
	my $name = de_ml( de_ml( $1 ) );
	$name =~ s{/}{_}g;

	! /"fmt_map"\s*:\s*"(.*?)"/;
	my %fmts = map { m{(\d+)/}; $1 => $_ } split ",", uri_unescape( $1 );

	my $fmt = "18";
	$fmt = "35" if $fmts{35};
	$fmt = "22" if $fmts{22};

	my $ext = "mp4";
	$ext = "flv" if $fmt eq "35";

	! /"t"\s*:\s*"(.*?)"/;
	my $t = $1;

	my $fname = $name . "." . $ext;
	INFO( name => $fname, quality => "fmt$fmt" );

	DOWNLOAD( "http://youtube.com/get_video?video_id=$id&t=$t&fmt=$fmt",
		fname => $fname );

# vim: filetype=perl:ts=4:sw=4
