Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Random Darwin Award in plain text

by codeacrobat (Chaplain)
on Mar 22, 2006 at 21:19 UTC ( #538603=CUFP: print w/ replies, xml ) Need Help??

From time to time hacking in the terminal I need some rest. One of the things I'd love then is reading a random Darwin Award.

The text seems to be pretty good hidden in the html tree, so I decided to use an empirical approach, which filters the surrounding stuff.
#!/usr/bin/perl -w use strict; use WWW::Mechanize; my $agent = WWW::Mechanize->new( autocheck => 1 ); $agent->get('http://cgi.darwinawards.com/cgi/random.pl'); my $content = $agent->content( format => "text" ); my $cr = chr 169; $content =~ s/.*\d\d\s+Urban Legend//s; $content =~ s/.*\d\d\s+Personal Account//s; $content =~ s/.*Reader Submission\s+Pending Acceptance//s; $content =~ s/\s*DarwinAwards\.com\s*$cr.*//s; $content =~ s/.*?\([^\)]*?\d{2}[^\)]*\) //s; $content =~ s/.*Darwin\s?Award\s?Nominee//si; $content =~ s/.*Confirmed \S+\s?by Darwin//si; $content =~ s/.*Honorable Mentions//s; $content =~ s/submitted by.*//si; $content =~ s/109876543210.*//s; $content =~ s/^\s+//; print $content;

Comment on Random Darwin Award in plain text
Download Code
Re: Random Darwin Award in plain text
by wazoox (Prior) on Mar 23, 2006 at 13:19 UTC
    A valuable replacement for your usual fortune cookies :)
      fortune cookies? who needs fortune cookies ;-)
      perl -MLWP::Simple -e '@_ = split/\%\n/, get(q(http://phd.pp.ru/Texts/ +fun/signatures.txt));print splice @_, @_*rand,1'
Re: Random Darwin Award in plain text
by willyyam (Priest) on Mar 29, 2006 at 16:35 UTC

    I quite like this, thank you. I find that not all entries have a trailing newline, so I added this to the code before the print statement: $content = $content . "\n";

    Is there a way to run fmt -72 or something similar on this text block to have it break the lines neatly?

      Ah good idea. About the formatting:
      perl darwin.pl | fmt -72
      would do it.

      A perl only solution could use Text::Wrap:
      #!/usr/bin/perl -w use strict; use WWW::Mechanize; use Data::Dumper; use Text::Wrap qw(wrap); my $agent = WWW::Mechanize->new( autocheck => 1 ); $agent->get('http://cgi.darwinawards.com/cgi/random.pl'); my $content = $agent->content( format => "text" ); my $cr = chr 169; $content =~ s/.*\d\d\s+Urban Legend//s; $content =~ s/.*\d\d\s+Personal Account//s; $content =~ s/.*Reader Submission\s+Pending Acceptance//s; $content =~ s/\s*DarwinAwards\.com\s*$cr.*//s; $content =~ s/.*?\([^\)]*?\d{2}[^\)]*\) //s; $content =~ s/.*Darwin\s?Award\s?Nominee//si; $content =~ s/.*Confirmed \S+\s?by Darwin//si; $content =~ s/.*Honorable Mentions//s; $content =~ s/submitted by.*//si; $content =~ s/109876543210.*//s; $content =~ s/^\s+//; print wrap("\t", "", "$content\n");

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: CUFP [id://538603]
Approved by ww
Front-paged by Arunbear
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (11)
As of 2015-01-29 01:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My top resolution in 2015 is:

















    Results (227 votes), past polls