From: Christian Garbs Date: Sat, 5 Jan 2008 23:36:28 +0000 (+0100) Subject: new getter for asynchronous download X-Git-Url: https://git.camperquake.de/gitweb.cgi?p=videosite.git;a=commitdiff_plain;h=fbddf7dd61ff256a45764faaec97a3539aaeb200 new getter for asynchronous download --- diff --git a/videosite/AsyncFileGetter.pm b/videosite/AsyncFileGetter.pm new file mode 100644 index 0000000..04e8226 --- /dev/null +++ b/videosite/AsyncFileGetter.pm @@ -0,0 +1,56 @@ +# (c) 2007 by Ralf Ertzinger +# 2008 by Christian Garbs +# +# licensed under GNU GPL v2 +# +# A getter which will download the media to a local file storage +# in the background +# + +package AsyncFileGetter; + +use FileGetter; +@ISA = qw(FileGetter); + +use strict; +use LWP::Simple qw(!get); +use File::Basename; + +sub new { + my $class = shift; + my $self = $class->SUPER::new(); + + $self->{'NAME'} = 'asyncfilegetter'; + + bless($self, $class); + $self->_prepare_parameters(); + + return $self; +} + +sub get { + my $self = shift; + my $video = shift; + my $dlfile; + my $dirname; + + $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; + } + + $self->debug('Going to download %s to %s', $video->{'DLURL'}, $dlfile); + + my $cmdline = "GET \"$video->{'DLURL'}\" > \"$dlfile\" &"; + system($cmdline); + + return 1; +}