From fbddf7dd61ff256a45764faaec97a3539aaeb200 Mon Sep 17 00:00:00 2001 From: Christian Garbs Date: Sun, 6 Jan 2008 00:36:28 +0100 Subject: [PATCH] new getter for asynchronous download --- videosite/AsyncFileGetter.pm | 56 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 videosite/AsyncFileGetter.pm 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; +} -- 1.8.3.1