Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Perl Advent Calendar Daily Installer

by jeffa (Bishop)
on Dec 06, 2003 at 14:11 UTC ( [id://312764]=CUFP: print w/replies, xml ) Need Help??

Here is a quick and dirty little app that will query http://perladvent.org for the module of the day and install it via CPAN. You must have the proper permissions on your system to actually install the module. Better late then never. :)
use strict; use warnings; use CPAN; use Time::Piece; use LWP::Simple; use Data::Dumper; use HTML::TokeParser::Simple; use Lingua::EN::Numbers::Ordinate; use constant YEAR => 2003; my $time = localtime; unless ($time->year == YEAR && $time->mon == 12 && $time->mday < 25) { die "today does not have module\n"; } my $day = ordinate($time->mday); my $html = get("http://perladvent.org/@{[YEAR]}/$day"); my $p = HTML::TokeParser::Simple->new(\$html); while (my $t = $p->get_token) { if ($t->is_start_tag('div')) { my $attr = $t->return_attr; if (defined $attr->{class} && $attr->{class} eq 'moduletitle') { $t = $p->get_token; CPAN::Shell->install($t->as_is); } } }

UPDATE:
Podmaster++ >:)

jeffa

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)

Replies are listed 'Best First'.
Re: Perl Advent Calendar Daily Installer
by PodMaster (Abbot) on Dec 07, 2003 at 17:29 UTC
    This is a tad friendlier to the server
    use strict; use warnings; use LWP::Simple 'get'; use XML::Simple; use CPAN; my $xml = XMLin( get( 'http://perladvent.org/perladvent.rdf' ) ); my $item = shift @{ $xml->{channel}{item} }; CPAN::Shell->install($1) if $item->{title} =~ /-\s(\S+)$/;
    update: and here is the friendliest version possible
    use strict; use warnings; use LWP::Simple 'get'; use XML::Simple; use CPAN; CPAN::Shell->install( XMLin( get( 'http://perladvent.org/perladventone.rdf' ) ) ->{channel}{item}{title} );

    MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
    I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
    ** The third rule of perl club is a statement of fact: pod is sexy.

      And for those of us who like to avoid the expat-based modules and prefer libxml2:
      use strict; use warnings; use LWP::Simple 'get'; use XML::LibXML; use CPAN; CPAN::Shell->install( XML::LibXML ->new() ->parse_string( get( 'http://perladvent.org/perladventone.rdf' + ) ) ->findvalue( '/rss/channel/item/title' ) );
      Actually for the RDF feed currently provided you can just use //title as the XPath expression.

      Makeshifts last the longest.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: CUFP [id://312764]
Approved by valdez
Front-paged by /dev/trash
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (3)
As of 2024-04-24 03:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found