- # Look for the download URL
- foreach $e (@text) {
- if ($e->[0] =~ m|/watch_fullscreen\?(.*)\&fs|) {
- $metadata->{'DLURL'} = 'http://www.youtube.com/get_video.php?' . $1;
+ while ($tag = $p->get_tag('div', 'meta', 'script')) {
+ if ('meta' eq $tag->[0]) {
+ if ('title' eq $tag->[1]->{'name'}) {
+ $metadata->{'TITLE'} = $tag->[1]->{'content'};
+ $self->debug('Title found: %s', $metadata->{'TITLE'});
+ }
+ } elsif ('script' eq $tag->[0]) {
+ $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'});
+ $self->debug('URL found: %s', $metadata->{'DLURL'});
+ }
+ } elsif ('div' eq $tag->[0]) {
+ if ('errorBox' eq $tag->[1]->{'class'}) {
+ $self->error("Could not get video data for youtube %s: %s",
+ $metadata->{'ID'}, $p->get_trimmed_text());
+ return undef;
+ }