$self->{'NAME'} = 'youtube';
$self->{_SELFTESTURL} = 'http://www.youtube.com/watch?v=dMH0bHeiRNg';
$self->{_SELFTESTTITLE} = 'Evolution of Dance - By Judson Laipply';
- $self->{'PATTERNS'} = ['(https?://(?:[-a-zA-Z0-9_.]+\.)*youtube\.(?:com|de|co.uk)/watch(?:_popup)?\?(?:.+=.+&|&)*v=([-a-zA-Z0-9_]+))',
+ $self->{'PATTERNS'} = ['(https?://(?:[-a-zA-Z0-9_.]+\.)*youtube\.(?:com|de|co.uk)/watch(?:_popup)?\?.*?v=([-a-zA-Z0-9_]+))',
'(https?://(?:[-a-zA-Z0-9_.]+\.)*youtube\.(?:com|de|co.uk)/watch\#\!v=([-a-zA-Z0-9_]+))',
'(https?://(?:[-a-zA-Z0-9_.]+\.)*youtube\.(?:com|de|co.uk)/v/([-a-zA-Z0-9_]+))',
'(https?://(?:[-a-zA-Z0-9_.]+\.)*youtube\.(?:com|de|co.uk)/user/[[:alnum:]]+\?v=([-a-zA-Z0-9_]+))',
$e = $p->get_text();
$self->debug("Found script: %s", $e);
- if ($e =~ m|\x27SWF_ARGS\x27:\s+(.+),|) {
- my $args = $1;
-
- $self->debug("Found SWF_ARGS: %s", $args);
- $jsp = videosite::JSArrayParser->new();
- $self->debug("Using %s to parse", ref($jsp));
- $r = $jsp->parse($args);
-
- unless(defined($r)) {
- $self->error("Found information hash, but could not parse");
- return undef;
- }
-
- if (exists($r->{'fmt_url_map'}) and ($r->{'fmt_url_map'} ne '')) {
- my $urls = $r->{'fmt_url_map'};
-
- $self->debug("Video has fmt_url_map: %s", $urls);
-
- $urls = $self->decode_hexurl($urls);
- %urls = split(/[\|,]/, $urls);
- $self->debug("Pagetype: old (SWF_ARGS), fmt_url_map");
-
- } elsif (exists($r->{'t'}) and ($r->{'t'} ne '')) {
- my $thash = $r->{'t'};
-
- if (exists($r->{'fmt_map'}) && ($r->{'fmt_map'} ne '')) {
- my $fmt = $r->{'fmt_map'};
- my @fmt;
-
- $self->debug('Video has fmt_map');
- $fmt = $self->decode_hexurl($fmt);
- @fmt = split(/,/, $fmt);
- foreach (@fmt) {
- @_=split(/\//);
- $urls{$_[0]} = sprintf('http://www.youtube.com/get_video?video_id=%s&fmt=%d&t=%s',
- $metadata->{'ID'},
- $_[0],
- $thash);
- }
- $self->debug("Pagetype: 2009 (SWF_ARGS), t with fmt_map");
-
- } else {
- $urls{5} = sprintf('http://www.youtube.com/get_video?video_id=%s&t=%s',
- $metadata->{'ID'},
- $thash);
- $self->debug("Pagetype: 2009 (SWF_ARGS), t without fmt_map");
- }
- } else {
- $self->error('Neither fmt_url_map nor t found in video information hash');
- return undef;
- }
- } elsif ($e =~ m|var swfHTML = .*fmt_url_map=([^\&]+)\&|) {
- my $urls = $1;
- $self->debug("Video has fmt_url_map: %s", $urls);
-
- $urls = $self->decode_hexurl($urls);
- %urls = split(/[\|,]/, $urls);
- $self->debug("Pagetype: 2010 (swfHTML), fmt_url_map");
- } elsif ($e =~ m|\x27PLAYER_CONFIG\x27:\s+(.+)(?:\}\);)?|) {
+ # if ($e =~ m|\x27SWF_ARGS\x27:\s+(.+),|) {
+ # my $args = $1;
+ #
+ # $self->debug("Found SWF_ARGS: %s", $args);
+ # $jsp = videosite::JSArrayParser->new();
+ # $self->debug("Using %s to parse", ref($jsp));
+ # $r = $jsp->parse($args);
+ #
+ # unless(defined($r)) {
+ # $self->error("Found information hash, but could not parse");
+ # return undef;
+ # }
+ #
+ # if (exists($r->{'fmt_url_map'}) and ($r->{'fmt_url_map'} ne '')) {
+ # my $urls = $r->{'fmt_url_map'};
+ #
+ # $self->debug("Video has fmt_url_map: %s", $urls);
+ #
+ # $urls = $self->decode_hexurl($urls);
+ # %urls = split(/[\|,]/, $urls);
+ # $self->debug("Pagetype: old (SWF_ARGS), fmt_url_map");
+ #
+ # } elsif (exists($r->{'t'}) and ($r->{'t'} ne '')) {
+ # my $thash = $r->{'t'};
+ #
+ # if (exists($r->{'fmt_map'}) && ($r->{'fmt_map'} ne '')) {
+ # my $fmt = $r->{'fmt_map'};
+ # my @fmt;
+ #
+ # $self->debug('Video has fmt_map');
+ # $fmt = $self->decode_hexurl($fmt);
+ # @fmt = split(/,/, $fmt);
+ # foreach (@fmt) {
+ # @_=split(/\//);
+ # $urls{$_[0]} = sprintf('http://www.youtube.com/get_video?video_id=%s&fmt=%d&t=%s',
+ # $metadata->{'ID'},
+ # $_[0],
+ # $thash);
+ # }
+ # $self->debug("Pagetype: 2009 (SWF_ARGS), t with fmt_map");
+ #
+ # } else {
+ # $urls{5} = sprintf('http://www.youtube.com/get_video?video_id=%s&t=%s',
+ # $metadata->{'ID'},
+ # $thash);
+ # $self->debug("Pagetype: 2009 (SWF_ARGS), t without fmt_map");
+ # }
+ # } else {
+ # $self->error('Neither fmt_url_map nor t found in video information hash');
+ # return undef;
+ # }
+ # } elsif ($e =~ m|var swfHTML = .*fmt_url_map=([^\&]+)\&|) {
+ # my $urls = $1;
+ # $self->debug("Video has fmt_url_map: %s", $urls);
+ #
+ # $urls = $self->decode_hexurl($urls);
+ # %urls = split(/[\|,]/, $urls);
+ # $self->debug("Pagetype: 2010 (swfHTML), fmt_url_map");
+ # } elsif ($e =~ m|\x27PLAYER_CONFIG\x27:\s+(.+)(?:\}\);)?|) {
+ if ($e =~ m|\x27PLAYER_CONFIG\x27:\s+(.+)(?:\}\);)?|) {
my $args = $1;
$self->debug("Found PLAYER_CONFIG: %s", $args);