From f7d9b22c4ff03be4a8d241015686f09d01a68289 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sat, 3 Sep 2011 22:18:17 +0200 Subject: [PATCH] Base, YouTube: add a function to decode URL query strings and make the Youtube grabber use it --- videosite/Base.pm | 6 ++++++ videosite/YouTubeGrabber.pm | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/videosite/Base.pm b/videosite/Base.pm index 577eb52..0f2cf2d 100644 --- a/videosite/Base.pm +++ b/videosite/Base.pm @@ -187,4 +187,10 @@ sub decode_hexurl { return $d; } +sub decode_querystring { + my $self = shift; + + return { map { split /=/, $_, 2; } split /&/, shift }; +} + 1; diff --git a/videosite/YouTubeGrabber.pm b/videosite/YouTubeGrabber.pm index 97327bd..8d8d8fd 100644 --- a/videosite/YouTubeGrabber.pm +++ b/videosite/YouTubeGrabber.pm @@ -127,7 +127,7 @@ sub _parse_by_video_info { $self->debug('Content from get_video_info: %s', $content); # Decode content - $content = { split /[&=]/, $content }; + $content = $self->decode_querystring($content); if ($content->{'status'} ne 'ok') { $self->debug("Non OK status code found: %s", $content->{'status'}); @@ -475,7 +475,7 @@ sub _decode_url_encoded_fmt_stream_map { # # @data will be an array of hash references - @data = map { { map { $self->decode_hexurl($_) } split /[=&]/ } } split /,/, $data; + @data = map { { map { $self->decode_hexurl($_) } split /[&=]/ } } split /,/, $data; $self->debug("_decode_url_encoded_fmt_stream_map() decoded %s", Dumper(\@data)); # From each array entry, pick the itag and the url values and return that -- 1.8.3.1