From 3bcc67a36f854a15079f1f120ab496e57f744dcd Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Thu, 20 May 2010 19:55:22 +0200 Subject: Add support for download continuation --- bin/comirror | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/bin/comirror b/bin/comirror index a099212..7f65745 100755 --- a/bin/comirror +++ b/bin/comirror @@ -9,10 +9,6 @@ my $mech = WWW::Mechanize->new( stack_depth => 0, ); -sub usage { - die("Usage: comirror \n"); -} - sub find_next_link { foreach my $re ( qr{ ^ next $ }ix, @@ -27,7 +23,40 @@ sub find_next_link { die("Cannot find next link\n"); } -my $uri = shift or usage(); +sub read_file { + my ($filename) = @_; + my ($line, $fh); + + if (not open($fh, '<', $filename)) { + warn("Cannot open $filename: $!\n"); + return; + } + + $line = <$fh>; + close($fh) or warn("Cannot close $filename: $!\n"); + + chomp $line; + return $line; +} + +sub save_lasturi { + open(my $fh, '>', 'last_uri') or die("Cannot open last_uri: $!\n"); + print {$fh} $mech->uri->as_string; + close($fh) or die("Cannot close last_uri: $!\n"); + return; +} + +my $uri = shift || read_file('last_uri'); +my $image_re = read_file('image_re'); + +if (not defined $uri or not defined $image_re) { + die("last_uri or image_re not found / specified\n"); +} + +$SIG{INT} = sub { + save_lasturi(); + exit(0); +}; while ( $mech->get($uri) @@ -41,6 +70,7 @@ while ( $uri = find_next_link->URI->abs->as_string; if ($uri eq $mech->uri->as_string) { + save_lasturi(); die("Looks like we're in a loop, bailing out\n"); } -- cgit v1.2.3