From 01ba86ef0f5190ba131ce7830d143bc0c9754b46 Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Tue, 3 Nov 2009 20:02:18 +0000 Subject: [PATCH] * retry if possible --- get_one_manga | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/get_one_manga b/get_one_manga index 3faf99f..3cd7b12 100755 --- a/get_one_manga +++ b/get_one_manga @@ -92,7 +92,7 @@ my $failure = 0; my $m = WWW::Mechanize->new(); for my $manga (@manga_to_get) { # see if the manga exists - $m->get($options{onemanga}.'/'.$manga); + mm_get($options{onemanga}.'/'.$manga); if ($m->status() != 200) { print STDERR "Manga $manga doesn't exist\n"; $failure ||= 1; @@ -109,17 +109,18 @@ for my $manga (@manga_to_get) { if (! -d "$manga/$chapter_long") { print $chapter_link->url(),qq(\n); mkdir("$manga/$chapter_long"); - $m->get($chapter_link->url_abs()); - $m->follow_link(text_regex => qr{Begin reading}); + mm_get($m,$chapter_link->url_abs()); + my $link = $m->find_link(text_regex => qr{Begin reading}); + mm_get($m,$link->url_abs()); while ($m->uri() =~ m{\Q$chapter\E/(\d\d[^\/]*)/?$}) { my $image = $m->find_image(alt_regex => qr{Loading\.+\s+media}); my $next_link = $m->find_link(url_regex => qr{\Q$manga\E/\Q$chapter\E/(\d\d[^\/]*)}); - $m->get($image->url_abs()); + mm_get($m,$image->url_abs()); print "getting ".$image->url_abs()."\n"; my ($page) = $image->url_abs =~ m/([^\/]+)$/; $m->save_content("$manga/$chapter_long/$page"); last if not defined $next_link; - $m->get($next_link->url_abs()); + mm_get($m,$next_link->url_abs()); print $m->uri()."\n"; sleep 3; } @@ -127,5 +128,18 @@ for my $manga (@manga_to_get) { } } +sub mm_get{ + my ($m,$url) = @_; + my $rerun = 8; + my $return; + do { + eval { + $return = $m->get($url); + }; + } while ($@ and + $rerun-- > 0 and sleep 5); + return $return; +} + __END__ -- 2.39.5