Youtube: factor out url selection routine
authorRalf Ertzinger <ralf@skytale.net>
Fri, 3 Jun 2011 09:26:09 +0000 (11:26 +0200)
committerRalf Ertzinger <ralf@skytale.net>
Fri, 3 Jun 2011 09:26:09 +0000 (11:26 +0200)
videosite/YouTubeGrabber.pm

index dc830c6..8073237 100644 (file)
@@ -141,23 +141,7 @@ sub _parse_by_video_info {
     $urls =~ s/%(..)/chr(hex($1))/ge;
     $urls = { split /[\|,]/, $urls };
 
-    foreach (keys(%{$urls})) {
-        if (exists($videoformats{$_})) {
-            $self->debug('Found URL for format %s (%s): %s', $_, $videoformats{$_}, $urls->{$_});
-        } else {
-            $self->error('Unknown format %s: %s', $_, $urls->{$_});
-        }
-    }
-
-    foreach (@{$preflist}) {
-        if (exists($urls->{$_})) {
-            $self->debug("Selected URL with quality level %s", $_);
-            $metadata->{'DLURL'} = $urls->{$_};
-            last;
-        }
-    }
-
-    $self->debug('URL found: %s', $metadata->{'DLURL'});
+    $self->__pick_url($urls, $preflist, $metadata);
 
     $metadata->{'TITLE'} = $content->{'title'};
     $metadata->{'TITLE'} =~ s/\+/ /g;
@@ -334,23 +318,7 @@ sub _parse_by_scrape {
             }
 
             if (%urls) {
-                foreach (keys(%urls)) {
-                    if (exists($videoformats{$_})) {
-                        $self->debug('Found URL for format %s (%s): %s', $_, $videoformats{$_}, $urls{$_});
-                    } else {
-                        $self->error('Unknown format %s: %s', $_, $urls{$_});
-                    }
-                }
-
-                foreach (@{$preflist}) {
-                    if (exists($urls{$_})) {
-                        $self->debug("Selected URL with quality level %s", $_);
-                        $metadata->{'DLURL'} = $urls{$_};
-                        last;
-                    }
-                }
-
-                $self->debug('URL found: %s', $metadata->{'DLURL'});
+                $self->__pick_url(\%urls, $preflist, $metadata);
                 last SWF_ARGS;
             }
         } elsif ('div' eq $tag->[0]) {
@@ -480,4 +448,29 @@ sub __login {
     return ($ua->get($videourl), $cookie);
 }
 
+sub __pick_url {
+    my $self = shift;
+    my $urls = shift;
+    my $preflist = shift;
+    my $metadata = shift;
+
+    foreach (keys(%{$urls})) {
+        if (exists($videoformats{$_})) {
+            $self->debug('Found URL for format %s (%s): %s', $_, $videoformats{$_}, $urls->{$_});
+        } else {
+            $self->error('Unknown format %s: %s', $_, $urls->{$_});
+        }
+    }
+
+    foreach (@{$preflist}) {
+        if (exists($urls->{$_})) {
+            $self->debug("Selected URL with quality level %s", $_);
+            $metadata->{'DLURL'} = $urls->{$_};
+            last;
+        }
+    }
+
+    $self->debug('URL found: %s', $metadata->{'DLURL'});
+}
+
 1;