]> git.donarmstrong.com Git - bin.git/blobdiff - get_sgf
add mutt alias which executes neomutt if that exists
[bin.git] / get_sgf
diff --git a/get_sgf b/get_sgf
index a33eddfd1ecad6ab75f955868dfea023ce8d840e..f978b81ed5c4a1321158bb88df40a98b58e37ab1 100755 (executable)
--- a/get_sgf
+++ b/get_sgf
@@ -63,12 +63,26 @@ Display this manual.
 
 use vars qw($DEBUG);
 
+use IO::File;
+use WWW::Mechanize;
+use File::Temp qw(tempdir);
+use Cwd;
+use URI;
+
 my %options = (debug           => 0,
               help            => 0,
               man             => 0,
-              );
-
-GetOptions(\%options,'debug|d+','help|h|?','man|m');
+              figures         => '%100',
+              mode            => 'ps',
+              paper           => 'letter',
+              scale           => '420',
+             );
+
+GetOptions(\%options,
+          'figures=s','mode=s','extra=s',
+          'username=s','password=s',
+          'paper=s','scale=s',
+          'debug|d+','help|h|?','man|m');
 
 pod2usage() if $options{help};
 pod2usage({verbose=>2}) if $options{man};
@@ -76,6 +90,63 @@ pod2usage({verbose=>2}) if $options{man};
 $DEBUG = $options{debug};
 
 
-
+if (-r "$ENV{HOME}/.get_sgf") {
+     my $sgf_fh = IO::File->new("$ENV{HOME}/.get_sgf") or
+         die "Unable to open .get_sgf for reading";
+     local $/;
+     my $sgf_file = <$sgf_fh>;
+     ($options{username},$options{password}) = $sgf_file =~ /^(\w+)\:(\w+)$/;
+     close $sgf_fh;
+}
+
+my $olddir = getcwd();
+
+#my $tmpdir = tempdir(CLEANUP=>1);
+#chdir($tmpdir);
+
+# /games/japan/titles/kisei/31/game-01.sgf
+
+
+my $m = WWW::Mechanize->new();
+$m->credentials($options{username},$options{password});
+my $base = 'http://gobase.org/online/sgf2misc/?fname=/games/japan/titles/kisei/31/game-01.sgf';
+for my $url (@ARGV) {
+     # strip of leading stuff
+     $url =~ s/[^=]+=//;
+     $url =~ s{(?:http://)?(?:gobase\.org)?}{};
+     $url = qq(/$url) unless $url =~ m{^/};
+     my $fname = $url;
+     my $uri = URI->new($base);
+     $uri->query_form(mode    => $options{mode},
+                     fname   => $fname,
+                    );
+     $m->get("http://gobase.org$fname");
+     $m->save_content('temp.sgf');
+     $m->get($uri->as_string);
+     $m->follow_link(text_regex=>qr/PostScript/);
+     $m->form_number(2);
+     $m->select('scale',$options{scale});
+     $m->field('fig',$options{figures});
+     $m->select('paper',$options{paper});
+     $m->submit();
+     my $content;
+     my $state;
+     my $sleep;
+ VALID_LOOP: {
+         do {
+              $state = $m->clone;
+              $m->follow_link(url_regex=>qr/\.ps\.gz/);
+              if ($m->content =~ /^\%\!PS/){
+                   $m->save_content('temp.ps');
+                   last VALID_LOOP;
+              }
+              $sleep = 240+int(rand()*120);
+              print STDERR "Failure to download content, waiting $sleep seconds\n";
+              $m = $state;
+         } while (sleep $sleep);
+     }
+     system('gzip','temp.ps');
+     system("$ENV{HOME}/bin/sgf_rename",'temp.sgf');
+}
 
 __END__