summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorDaniel Friesel <derf@derf.homelinux.org>2010-05-20 19:28:20 +0200
committerDaniel Friesel <derf@derf.homelinux.org>2010-05-20 19:28:20 +0200
commit8abb5a7bbf57e6963816753d52aae400e9740285 (patch)
tree12dcf06abaf5f3d313ec71f620508f722d496633 /bin
Initial commit
Diffstat (limited to 'bin')
-rwxr-xr-xbin/comirror76
1 files changed, 76 insertions, 0 deletions
diff --git a/bin/comirror b/bin/comirror
new file mode 100755
index 0000000..d03e3af
--- /dev/null
+++ b/bin/comirror
@@ -0,0 +1,76 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use 5.010;
+
+use WWW::Mechanize;
+
+my $mech = WWW::Mechanize->new(
+ stack_depth => 0,
+);
+
+sub usage {
+ die("Usage: comirror <start url>\n");
+}
+
+sub find_next_link {
+ foreach my $re (
+ qr{ ^ next $ }ix,
+ qr{ next }ix,
+ )
+ {
+ my $link = $mech->find_link(text_regex => $re);
+ if ($link) {
+ return $link;
+ }
+ }
+ die("Cannot find next link\n");
+}
+
+my $uri = shift or usage();
+
+while (
+ $mech->get($uri)
+ and $mech->success()
+ and $mech->status() == 200
+ )
+{
+ say $mech->uri();
+
+ $uri = find_next_link->url();
+
+ if ($uri == $mech->uri) {
+ die("Looks like we're in a loop, bailing out\n");
+ }
+
+ sleep(1);
+}
+
+
+
+
+__END__
+
+=head1 NAME
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+=head1 OPTIONS
+
+=head1 EXIT STATUS
+
+=head1 CONFIGURATION
+
+=head1 DEPENDENCIES
+
+=head1 BUGS AND LIMITATIONS
+
+=head1 AUTHOR
+
+Copyright (C) 2010 by Daniel Friesel E<lt>derf@chaosdorf.deE<gt>
+
+=head1 LICENSE
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.