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});
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;
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');
-unless(defined(@g) and defined($f)) {
+unless(@g and defined($f)) {
print("No plugins could be loaded\n");
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);
+ }
}
}
}