Vimeo: Match mobile URL
[videosite.git] / videosite / YouTubeGrabber.pm
index bacc644..e611a1f 100644 (file)
@@ -246,65 +246,6 @@ sub _parse_by_scrape {
             $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|\x27PLAYER_CONFIG\x27:\s+(.+)(?:\}\);)?|) {
                 my $args = $1;
                 $self->debug("Found PLAYER_CONFIG: %s", $args);
@@ -508,6 +449,7 @@ sub _decode_url_encoded_fmt_stream_map {
     my $data = shift;
     my $dataencoded = shift;
     my @data;
+    my $h = {};
 
     $data = $self->decode_hexurl($data) if $dataencoded;
     # This will
@@ -523,7 +465,16 @@ sub _decode_url_encoded_fmt_stream_map {
     # From each array entry, pick the itag and the url values and return that
     # as a hash reference
     
-    return { map { $_->{'itag'}, $_->{'url'} } @data };
+
+    foreach (@data) {
+        if (exists($_->{'sig'})) {
+            $h->{$_->{'itag'}} = sprintf('%s&signature=%s', $_->{'url'}, $_->{'sig'});
+        } else {
+            $h->{$_->{'itag'}} =  $_->{'url'};
+        }
+    }
+
+    return $h;
 }