Just a quick post to show off a small and useful script I use whenever I need to "nopaste" some text or code:
#!/usr/bin/perl -w
use strict;
use WWW::Mechanize;
use Getopt::Long;
my %SITE = (
snit => 'http://nopaste.snit.ch/',
scsys => 'http://paste.scsys.co.uk/',
);
my %CONF = (
channel => '',
nick => '', # use your own
summary => '',
paste => '',
site => 'snit',
list => '',
);
GetOptions( \%CONF, 'lang=s', 'nick=s', 'summary|desc=s', 'paste|text=s',
'list!', 'site=s' )
or die "Bad options";
die "No such paste site: $CONF{site}\nValid choices: @{[keys %SITE]}\n"
if !exists $SITE{ $CONF{site} };
my $m = WWW::Mechanize->new;
$m->get( $SITE{ $CONF{site} } );
die $m->res->status_line unless $m->success;
if ( $CONF{list} ) {
print "Possible channels for $CONF{site}:\n",
map {"- $_\n"} grep $_,
$m->current_form()->find_input('channel')->possible_values;
exit;
}
unless ( $CONF{paste} ) {
$CONF{summary} ||= $ARGV[0] || '-';
$CONF{paste} = join "", <>;
}
delete @CONF{qw( site list )};
$m->set_fields(%CONF);
$m->submit;
die $m->res->status_line unless $m->success;
print +( $m->links )[0]->url, "\n";
Since it works has a filter, I can call it from vim or pipe to it. It also works with a file parameter, which is used to set the paste title.
Just before posting this, I looked again on CPAN, and found the follwing:
App::NoPaste: Seems really complete. But does much more than I need, and I like depending only on WWW::Mechanize for such tools.
WWW::Rafb: Well, in an earlier version my script worked with rafb.net, but the site itself is down.
WWW::PasteBin: Such a huge collection of distributions, I wouldn't which to install first.
WebService::NoPaste: Found it years ago when looking for a nopaste utility, but I preferred to write my own.
Clearly, there is no lack of modules to nopaste stuff, so I'm not going to
add my own to the list.:-)
I tried publishing scripts on CPAN, but I feel the toolchain is not really targetting scripts, anyway. Anyway, I have a few utility scripts like the above lying around, and I'm thinking maybe the best way to go with them nowadays is to just publish them on GitHub. Might happen someday.
nopaste 0 Comments More | Login | Reply /