summaryrefslogtreecommitdiff
path: root/mediawiki-fetch
diff options
context:
space:
mode:
Diffstat (limited to 'mediawiki-fetch')
-rwxr-xr-xmediawiki-fetch32
1 files changed, 32 insertions, 0 deletions
diff --git a/mediawiki-fetch b/mediawiki-fetch
new file mode 100755
index 0000000..181c84e
--- /dev/null
+++ b/mediawiki-fetch
@@ -0,0 +1,32 @@
+#!/usr/bin/perl
+
+# fetch content of mediawiki page
+
+use warnings;
+use strict;
+
+use feature qw(say);
+
+use Path::Tiny;
+use MediaWiki::API;
+use DateTime::Format::ISO8601;
+
+my $base_uri = shift;
+my $page_title = shift;
+my $outfile = shift;
+
+my $mw = MediaWiki::API->new( { api_url => $base_uri . 'w/api.php' } );
+
+my $page = $mw->get_page( { title => $page_title } )
+ || die $mw->{error}->{code} . ': ' . $mw->{error}->{details};
+
+my $dt = DateTime::Format::ISO8601->parse_datetime( $page->{'timestamp'} );
+
+path($outfile)->spew_utf8( $page->{'*'} );
+path($outfile)->touch( $dt->epoch );
+
+say STDERR sprintf( 'Succesfully fetched %s (rev. %s)',
+ $page_title,
+ $page->{'revid'});
+
+1;