chiark / gitweb /
media-scraper: Support "scrapers" that are just local massaging
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 21 Mar 2021 20:52:47 +0000 (20:52 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 21 Mar 2021 20:55:16 +0000 (20:55 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
media-scraper

index 5513ad3f786b743e7c8db25c3b0d0935c30a5ce3..2a633905d5c3af6d99d5b94a42c0da40e0bbe97c 100755 (executable)
@@ -77,6 +77,7 @@ sub cfg_affixes ($$$) {
 
 sub method_none { return sub { } }
 sub methodlic_none { undef }
+sub methodisoffline_none { 0 }
 
 sub methodlic_wikimedia ($) {
   my ($scraper) = @_;
@@ -139,6 +140,8 @@ sub method_wikimedia ($$$) {
   };
 }
 
+sub methodisoffline_wikimedia { 0 }
+
 our $offline;
 
 while (@ARGV && $ARGV[0] =~ m/^-/) {
@@ -166,6 +169,8 @@ my $method_fn = ${*::}{"method_$method"};
 my $methodlic_fn = ${*::}{"methodlic_$method"};
 my $licpath = "$basename/LICENCE";
 
+my $methodisoffline_fn = ${*::}{"methodisoffline_$method"};
+
 my $method_lictext = $methodlic_fn->($scraper);
 if (defined $method_lictext) {
   my $licfile = new IO::File "$licpath.tmp", '>' or die $!;
@@ -304,16 +309,18 @@ END
 
     $process_colours->();
 
-    if (stat $lupstream) {
-      print DEBUG "already.\n";
-      next;
-    }
-    die "$lupstream $!" unless $!==ENOENT;
+    if (! $methodisoffline_fn->($basename, $lupstream)) {
+      if (stat $lupstream) {
+       print DEBUG "already.\n";
+       next;
+      }
+      die "$lupstream $!" unless $!==ENOENT;
 
-    if ($offline) {
-      print DEBUG "missing.\n";
-      warn "offline but $lupstream missing\n";
-      next;
+      if ($offline) {
+       print DEBUG "missing.\n";
+       warn "offline but $lupstream missing\n";
+       next;
+      }
     }
 
     $method_impl->($lbase, $lupstream, $rstem);