X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=videosite%2FYouTubeGrabber.pm;h=da70e14101f63e53bab4ea640bae00a9e3e59ded;hb=46384f66c3337d7775723c87de96d426271f552c;hp=174f76d2dd94e7e5ecba3aee927cdafa70eb918b;hpb=6bfa02043de8e679102e4d3babd2cc1e6e49824b;p=videosite.git diff --git a/videosite/YouTubeGrabber.pm b/videosite/YouTubeGrabber.pm index 174f76d..da70e14 100644 --- a/videosite/YouTubeGrabber.pm +++ b/videosite/YouTubeGrabber.pm @@ -102,10 +102,14 @@ sub _parse { } } elsif ('script' eq $tag->[0]) { $e = $p->get_text(); - if ($e =~ m|/watch_fullscreen\?(.+)\x27|) { - my %args = map { split(/=/, $_, 2); } split(/&(?!amp;)/, $1); - $metadata->{'DLURL'} = sprintf('http://www.youtube.com/get_video.php?video_id=%s&t=%s%s', - $metadata->{'ID'}, $args{'t'}, $append); + if ($e =~ m|\x22fmt_url_map\x22\s*:\s*\x22([^\x22]+)\x22|) { + my $urls = $1; + my @urls; + + $urls =~ s/%(..)/chr(hex($1))/ge; + @urls = split(/\|/, $urls); + + $metadata->{'DLURL'} = $urls[3]; $self->debug('URL found: %s', $metadata->{'DLURL'}); } } elsif ('div' eq $tag->[0]) {