http://qs1969.pair.com?node_id=106489

I heard that comment again today.... "I wish the Random Node button would exclude all those boring empty home nodes." How many of us have clicked the Random Node button a few times, only to tire after clicking-through one too many unattended homenodes?

I wrote a quick CGI that will do this clicking-through for you. It will grab up to five random nodes and send you off to the first non-homenode it finds. This should keep you from landing on the most desolate of nodes.

Its just a quick hack and I do know how to HTML::Parse, and LWP::UserAgent so keep that in mind.

Here is the code running under mod_perl/mason:

<%INIT> use LWP::Simple; my $maxcount = 5; my $referer = $r->header_in( 'Referer' ); my ($www,$tld) = $referer =~ /(www\.)?perlmonks\.(\w+)/i; $tld ||= 'org'; my ($count,$title,$author,$node,$html); while ($title eq $author) { last if $count++ >= $maxcount; $html = get("http://perlmonks.com/index.pl?op=randomnode"); ($node) = $html =~ /\blastnode_id=(\d+)/; ($title) = $html =~ /<title>([^>]+)<\/title>/i; ($author) = $html =~ /\bby\s*<A HREF[^>]+>([^<]+)<\/A>/i; } my $redirurl = "http://${www}perlmonks.$tld/index.pl?node_id=$node"; $m->comp('/comps/redirect.cmp', url=>$redirurl); </%INIT>

Feel free to take the code and run with it, or go to your user settings and Add

<A HREF="http://perlmonks.thepen.com/scripts/randomnode.pl">Random NonHome Node</A>

to your personal nodelet.

-Blake

Replies are listed 'Best First'.
Re: Random NonHome Nodes
by blakem (Monsignor) on Aug 25, 2001 at 12:49 UTC
    I added some options to this script to allow you to select which sections get skipped over. The folowing params can be used to select sections to skip.

    news=skip
    meditations=skip
    discussions=skip
    cufp=skip
    poetry=skip
    code=skip
    craft=skip
    sopw=skip

    In addition, the 'homexp' param takes an integer value that will skip any users homenode whos xp is less than the value. It also accepts 'ALL' to skip all homenodes.

    If no params are set, the following will be assumed 'homenodes=ALL&news=skip&poetry=skip'

    Here are some examples:

    I personally like that last one, because it avoids the baren homenodes, the outofdate newsfeed, and skips the poetry (which I have nothing against, I just need to be in a special mood to appreciate that particular craft) So, I have added the following to my personal nodelet:
    <A HREF="http://perlmonks.thepen.com/scripts/randomnode.pl?news=skip&p +oetry=skip&homexp=200">Custom Random Node</A>
    Which shows up in my side column as: Custom Random Node

    -Blake