- Further refine URL determination scheme
authorRalf Ertzinger <sun@ryoko-darknet.camperquake.de>
Fri, 14 Aug 2009 09:49:57 +0000 (11:49 +0200)
committerRalf Ertzinger <sun@ryoko-darknet.camperquake.de>
Fri, 14 Aug 2009 09:49:57 +0000 (11:49 +0200)
videosite/YouTubeGrabber.pm

index da70e14..37c5097 100644 (file)
@@ -102,14 +102,25 @@ sub _parse {
             }
         } elsif ('script' eq $tag->[0]) {
             $e = $p->get_text();
+            $self->debug("Found script: %s", $e);
             if ($e =~ m|\x22fmt_url_map\x22\s*:\s*\x22([^\x22]+)\x22|) {
+                $self->debug("Found fmt_url_map: %s", $1);
                 my $urls = $1;
                 my @urls;
 
                 $urls =~ s/%(..)/chr(hex($1))/ge;
                 @urls = split(/\|/, $urls);
 
-                $metadata->{'DLURL'} = $urls[3];
+                if ($urls[0] == 5) {
+                    $metadata->{'DLURL'} = $urls[1];
+                } elsif ($urls[0] == 18) {
+                    $metadata->{'DLURL'} = $urls[3];
+                } elsif ($urls[0] == 34) {
+                    $metadata->{'DLURL'} = $urls[2];
+                } else {
+                    $self->error("Unknown video type in fmt_url_map: %s", $urls[0]);
+                    next;
+                }
                 $self->debug('URL found: %s', $metadata->{'DLURL'});
             }
         } elsif ('div' eq $tag->[0]) {