Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Perl Advent Calendar Daily Installer

by jeffa (Chancellor)
on Dec 06, 2003 at 14:11 UTC ( #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)

Comment on Perl Advent Calendar Daily Installer
Download Code
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
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? | Other CB clients
Other Users?
Others meditating upon the Monastery: (5)
As of 2014-12-28 17:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (182 votes), past polls