$self->{'NAME'} = 'youtube';
$self->{'PATTERNS'} = ['(http://(?:[-a-zA-Z0-9_.]+\.)*youtube.(?:com|de|co.uk)/watch\?(?:.+=.+&)*v=([-a-zA-Z0-9_]+))',
'(http://(?:[-a-zA-Z0-9_.]+\.)*youtube.(?:com|de|co.uk)/v/([-a-zA-Z0-9_]+))'];
- $self->{'_PARAMS'} = {'USERNAME' => ['', 'Username to use for YouTube login'], 'PASSWORD' => ['', 'Password to use for YouTube login']};
+ $self->{'_PARAMS'} = {'QUALITY' => ['normal', 'Quality of the video to download. normal = standard resolution flash video, high = higher resolution flash video, h264 = high resolution MPEG4 video'], 'USERNAME' => ['', 'Username to use for YouTube login'], 'PASSWORD' => ['', 'Password to use for YouTube login']};
bless($self, $class);
$self->_prepare_parameters();
my $ua = LWP::UserAgent->new('agent' => 'Mozilla/5.0');
my $r;
my $videourl;
+ my $quality = $self->_getval('QUALITY');
+ my $append = '';
$url =~ m|$pattern|;
$url = $1;
$metadata->{'TITLE'} = undef;
$metadata->{'DLURL'} = undef;
- $videourl = sprintf('http://www.youtube.com/watch?v=%s', $2);
+ if ($quality eq 'high') {
+ $append = '&fmt=6';
+ } elsif ($quality eq 'h264') {
+ $append = '&fmt=18';
+ }
+
+ $videourl = sprintf('http://www.youtube.com/watch?v=%s%s', $2, $append);
unless(defined($r = $ua->get($videourl))) {
$self->error('Could not download %s', $url);
$e = $p->get_text();
if ($e =~ m|/watch_fullscreen\?(.+)\x27|) {
my %args = map { split(/=/, $_, 2); } split(/&/, $1);
- $metadata->{'DLURL'} = sprintf('http://www.youtube.com/get_video.php?video_id=%s&t=%s',
- $metadata->{'ID'}, $args{'t'});
+ $metadata->{'DLURL'} = sprintf('http://www.youtube.com/get_video.php?video_id=%s&t=%s%s',
+ $metadata->{'ID'}, $args{'t'}, $append);
$self->debug('URL found: %s', $metadata->{'DLURL'});
}
} elsif ('div' eq $tag->[0]) {