- my $dlfile;
- my $dirname;
- my $cookie = "";
-
- $dlfile = sprintf($self->_getval('FILEPATTERN'),
- $self->_encode($video->{'SOURCE'}),
- $self->_encode($video->{'ID'}),
- $self->_encode($video->{'TITLE'}),
- $self->_encode($video->{'DLURL'}),
- $self->_encode($video)->{'URL'});
-
- $dirname = dirname($dlfile);
- if ($self->_diskfree($dirname) < $self->_getval('MINFREE')) {
- $self->error("Not enough free space to download");
- return 0;
+
+ # saving the environment has nice race conditions... :(
+ my %saved_env;
+
+ if (exists($video->{'CONNECTOR'})) {
+ my $schemas = $video->{'CONNECTOR'}->{'schemas'};
+ foreach my $schemakey(keys(%{$schemas})) {
+ $self->debug("Setting %s_proxy to %s", $schemakey, $schemas->{$schemakey});
+ my $envkey = $schemakey.'_proxy';
+ $saved_env{ $envkey } = $ENV{ $envkey };
+ $ENV{ $envkey } = $schemas->{$schemakey};
+ }
+ }
+
+ # dispatch to super class method
+ $self->SUPER::get($video);
+
+ # restore environment
+ foreach my $envkey (keys %saved_env) {
+ $self->debug("Restoring environment: %s=%s", $envkey, $saved_env{ $envkey} );
+ $ENV{ $envkey } = $saved_env{ $envkey };