#!/usr/bin/perl -w
#Code adapted from http://perlmonks.com/?node=Personal%20Nodelet%20Ext
+ractor
use strict;
use LWP;
use Getopt::Std;
use HTTP::Request::Common;
$|++;
use vars qw(%opts);
getopts('p:u:n:h',\%opts);
my ($user,$passwd,$nodeletfile) = ($opts{u},$opts{p},$opts{n});
USAGE() and exit unless $user and $passwd and $nodeletfile and not $op
+ts{h};
my @nodelets;
open NODELET, $nodeletfile or die "can't open nodelet file: $nodeletfi
+le $!";
while (<NODELET>)
{
next unless my ($nodelet) = /^\s*(\d+)/;
push @nodelets, $nodelet;
}
use constant URL => 'http://www.perlmonks.org/';
my $ua = LWP::UserAgent->new;
$ua->agent('personal_nodlet_restorer/1.0 (' . $ua->agent .')');
#$ua->proxy('http', 'http://myproxy:8080');
# log in and access your User Setting page in raw format
my $request = POST(URL,
Content => [
op => 'login',
user => $user,
passwd => $passwd,
node_id => 1072,
displaytype => 'raw',
addtopn => \@nodelets,
modifypn => 'on',
]
);
my $response = $ua->request($request);
die $response->message unless $response->is_success;
print "All done. Please double check by logging into PerlMonks with yo
+ur browser";
sub USAGE {
print "USAGE: $0 -u user -p -password -n nodelet_filename\n";
}
=pod
=head1 NAME
restore_personal_nodelet.pl - LWP script
=head1 DESCRIPTION
Reverses the action of Jeffa's Personal Nodelet Extractor. Given a fil
+ename
that contains a list of node_ids, it will log in and add then all to y
+our
personal nodelet.
The majority of this code was shamelessly stolen from Jeffa's Personal
Nodelet Extractor:
http://www.perlmonks.com/index.pl?node=Personal%20Nodelet%20Extractor
=head1 SYNOPSIS
for *nix:
./restore_personal_nodelet.pl C<-u> uname C<-p> passwd C<-n> filename
for win32:
perl restore_personal_nodelet.pl C<-u> uname C<-p> passwd C<-n> filena
+me
Invokes the script for the specified username and password. The conten
+ts on the
input file would look something like this:
24270 Permutations and combinations
25730 Life in the land of OOP, and I'm confused.
17890 shift, Pop, Unshift and Push with Impunity!
32005 Apache::MP3
34786 Why I like functional programming
It doesn't need a default record seperator - it's collecting all numbe
+rs
so a \d+ is sufficient.
=cut
|