Fix Dailymotion grabber
[videosite.git] / videosite-dl.pl
index 642b162..1b0079c 100755 (executable)
@@ -24,13 +24,13 @@ sub ploader {
 
     foreach $p (@list) {
         $p =~ s/\.pm$//;
-        eval qq{ require $p; };
+        eval qq{ require videosite::$p; };
         if ($@) {
             print("Failed to load plugin: $@");
             next;
         }
 
-        $g = eval $p.q{->new();};
+        $g = eval qq{ videosite::$p->new();};
         if ($@) {
             print("Failed to instanciate: $@");
             delete($INC{$p});
@@ -48,6 +48,21 @@ sub ploader {
     return @g;
 }
 
+sub connectors {
+    my $c = {name => 'environment', schemas => {}};
+
+    if (exists($ENV{'http_proxy'})) {
+        $c->{schemas}->{'http'} = $ENV{'http_proxy'}
+    }
+
+    if (exists($ENV{'https_proxy'})) {
+        $c->{schemas}->{'https'} = $ENV{'https_proxy'}
+    }
+
+    return ( $c );
+}
+
+
 my $hq = 0;
 my $ext = '.flv';
 my $y;
@@ -55,10 +70,15 @@ my $f;
 my $m;
 my @g;
 my $bp;
+my $info = 0;
+my $debug = 0;
+
+GetOptions("i" => \$info, "d" => \$debug);
 
 # This is some dark magic to find out our real base directory,
 # where we hope to find our plugins.
 $bp = File::Spec->catdir(dirname(realpath($0)), 'videosite');
+unshift(@INC, dirname(realpath($0)));
 
 @g = ploader($bp, '.*Grabber\.pm$', 'grabber');
 ($f) = ploader($bp, '^FileGetter\.pm$', 'getter');
@@ -68,14 +88,29 @@ unless(@g and defined($f)) {
     exit 1;
 }
 
+foreach (@g, $f) {
+    $_->setio(sub { printf(@_); print("\n"); } );
+    $_->setconn(\&connectors);
+
+    if ($debug) {
+        $_->setdebug(1);
+    }
+}
+
 $f->setval('FILEPATTERN', './%3$s' . $ext);
 
 foreach (@ARGV) {
     foreach $y (@g) {
         ($m, undef) = $y->get($_);
         if (defined($m)) {
-            print("Downloading $m->{'TITLE'}\n");
-            $f->get($m);
+            if ($info) {
+                foreach (keys(%{$m})) {
+                    printf("%s: %s\n", $_, defined($m->{$_})?$m->{$_}:'(undef)');
+                }
+            } else {
+                print("Downloading $m->{'TITLE'}\n");
+                $f->get($m);
+            }
         }
     }
 }