http://www.perlmonks.org?node_id=26649
Use your Vim colorscheme in perlmonks syntax highlighting
on Mar 25, 2007 at 23:10 UTC
by pKai
When I read about Free Nodelet hack: Syntax colouring I was (and still am) somewhat sceptical about the usefulness.

For the very least that highlighting has to resemble my Vim colorscheme. ;-)

So I wrote the following to read my (custom) color scheme file and create a corresponding CSS to be used with the "jaap" variation Corion supplied.

Disclaimer: This is far from a full-fledged vimscript parser/interpreter. It just reads a color scheme (try "zellner.vim" it should at least work with that) with the diamond operator and only "knows" about the "highlight" command from Vim. I hope it interprets at least this reasonably close to Vim's implementation.

If you actually produce something useful with if you have to host that CSS file somewhere and refer to it instead of the file Corion provided on his own site.

Update: Added some minimal comments.

As you might deduce from the questions in there, I'm not really a vimscript programmer. And I also didn't bother to mock with my vim files to test those. :-(

CB60
on Feb 17, 2006 at 20:56 UTC
by demerphq

A lightweight CB Mirror similar to cblast35.

No DB needed at all. Uses the 'modern' xml feed so it can provide properly parsed output.

Set up mini-cb60-fetch.pl on cron job (--sleeptime=0) or as an always running daemon. Set up mini-cb-render.pl as a CGI script for access.

If the CGI parameter 'domain' is provided and is one of 'org','com' or 'net' then that domain will be used for the PM specific links.

This is just a proof of concept for an incremental, low load, PM-parsed CBlast 60.

Update:

  • v0.01001: Removed superfluous use of DDS (hangover from initial dev). Added $VERSION to the render code. Trivial changes.
  • v0.02: Added cookie support, better defaults. Other minor changes.


Arunbear has kindly made this available online. Many thanks to Arunbear for doing so.
Version 0.02 as posted below is running on http://mini-cb60.datenzoo.de. Thanks to corion for support in getting this set up. The latest version will be available at this site until further notice.

The whore-by-mail game
on Nov 05, 2005 at 07:34 UTC
by sfink
This is (part of) my crontab file:
MAILTO=steve@fink.com # r----minute # | r-----hour # | | r------day of the month # | | | r------month # | | | | r------day of the week # | | | | | r------ command to run ----------> # | | | | | | 0 10 * * * /home/sfink/bin/whore 0 18 * * * /home/sfink/bin/whore
This will email me an update saying which of my nodes have gained or lost reputation in the last day, and whether I have any new private msgs. It's rough, it uses flat files, and it assumes a particular directory structure (I have bin/, lib/, and var/ subdirectories under my home dir). Oh, and I use a text-only mail reader that doesn't open up links I click on, so the output is text-only. (It would be trivially easy to make the new message notifications be links.)

It will also keep a complete historical log of all the changes.

Making XP Change
on Jun 09, 2005 at 18:30 UTC
by diotalevi

It tells you how many XP you have until your next modular promotion. It also makes change. Here's some sample output.

XP = 16780
16780.00 initiates
839.00 novices, 0 to promotion
335.60 acolytes, 30 to promotion
167.80 scribes, 80 to promotion
83.90 monks, 180 to promotion
33.56 friars, 280 to promotion
16.78 abbots, 780 to promotion
10.49 bishops, 780 to promotion
7.30 pontiffs, 680 to promotion
5.59 saints, 1780 to promotion
5 saints, a bishop, scribe, acolyte, novice, and 10 initiates
PerlMonks Quips Gatherer
on May 08, 2005 at 21:46 UTC
by crashtest
Ever wondered if you've seen every single quip that displays on the top of the pages on this site? I was curious, so I put together a little screen-scraper to check. Hey, it was a slow Sunday afternoon!

No command-line arguments for this script, but there are three variables at the top of the code (clearly marked) that provide some crude configuration. $iterations determines how often perlmonks.org is queried, $nice sets how long to pause between HTTP requests, while $status_print_interval configures how often the script pipes up with a quick status report to show it's still alive.

After 100 iterations, I think I've "collected 'em all", but I look forward to running this script every couple of months to see what other witticisms those [id://pmdev]s come up with:
********** RESULTS **********
2 time(s): Perl Sensitive Sunglasses
7 time(s): more useful options
9 time(s): Pathologically Eclectic Rubbish Lister
3 time(s): XP is just a number
8 time(s): Welcome to the Monastery
5 time(s): Think about Loose Coupling
3 time(s): P is for Practical
4 time(s): Syntactic Confectionary Delight
4 time(s): Perl Monk, Perl Meditation.
7 time(s): Your skill will accomplish what the force of many cannot
8 time(s): "be consistent."
5 time(s): go ahead... be a heretic
8 time(s): Keep It Simple, Stupid
6 time(s): laziness, impatience, and hubris
4 time(s): Perl: the Markov chain saw
10 time(s): There's more than one way to do things.
3 time(s): Just another Perl shrine
4 time(s): good chemistry is complicated,and a little bit messy-LW
Janitors Thread Retitler v3.1
on Dec 29, 2004 at 09:26 UTC
by davido

This is a Janitors tool script used to retitle threads. It doesn't work for non-Janitors.

This script replaces Janitors Thread Retitler v1 and Janitors Thread Retitler v2. Unlike previous versions, it requires PerlMonks::Mechanized. This dependancy has facilitated simplifying the code and the adding of "prepare / commit" transactions, allowing Janitors to see all changes before deciding on whether or not to commit them to reality.

Using the -help option on the commandline will give usage details. As before, the -debug option will cause the script to do everything except committing the changes, and /msg'ing the author.

Basic usage is:

retitle.pl -id NNNNN -from "search text" -to "replace text"

Other improvements:

  • -from option now functions like a search string instead of a full-title match. -from is now mandatory.
  • -to is now a replace string, instead of a full new title.
  • -prompt (default) causes an "are you sure" prompt to occur prior to committing changes. -noprompt will suppress this failsafe measure.
  • -msg (default) causes a simple notification to be sent to the author of the base node via /msg. -nomsg will suppress notification.
  • -ascribe (default) causes simple Janitor attribution at the bottom of the base node. -noascribe (or -noattribute) will suppress Janitor attribution.
  • -unconsider (default) will cause the base node to be unconsidered. -nounconsider (or -nou for short) will suppress this feature.
  • $ENV{PMUSER} and $ENV{PMPASS} must be set in your environment for login to occur.
  • All commandline option names may be abbreviated as one letter (-to = -t, -from = -f, -ascribe = -a). For options such as -ascribe, -prompt, and -msg, their negative abbreviations are -noa, -nop, -nom
  • Edit attribution code now appends the following to the end of the base node being retitled: Retitled by [username] from 'old title'.
  • Wrapped author name in [ ... ] brackets to fix bug where automated /msg couldn't be sent to folks with whitespace in their username.
  • Added a sanity check to prevent automated /msg from being sent to our friend, Anonymous Monk.

Please post questions, additional needs, comments, etc., in this thread so they're all in one place, and so I can respond here. I hope you find this helpful.

Enjoy!

PerlMonks::Mechanized (beta)
on Dec 25, 2004 at 21:24 UTC
by davido

It's Christmas day in LA, and here's my present to the Monastery (whether you see it as a diamond or a lump of coal remains to be determined). Merry Christmas all...

This is Yet Another Attempt to gather Monastery automation tools under one roof. The following is a module, PerlMonks::Mechanized, which mechanizes many of the common PM tasks. It makes using the Monastery's XML tickers a trivial task, for example. I intend to polish it, and add features on request. For now, it just has what I have needed myself recently, plus a little more. But as requests come in, if they're well thought-out, I'll add them. I'm also very interested in comments that will help me to improve it. At this point, I don't consider any part of this module stable (not even its interface). But if people like it, I'll stabilize it, properly document it, and continue adding to it/ maintaining it. For now, this is a rough-draft.

It uses $ENV{PMPASS} and $ENV{PMUSER} for login info, or you can supply them as user, passwd to my $monk = PerlMonks::Mechanize->new($user,$passwd);

Here is a simple example...

use strict; use warnings; use PerlMonks::Mechanized; my $monk = PerlMonks::Mechanized->new(); $monk->say( "Hello. This is a PerlMonks::Mechanized test." );

The preceeding code assumes you've set your login env variables. The code only logs you in to the Monastery if the action you're requesting requires a login. Otherwise, you stay logged out. Login is on demand, assuming you've supplied the proper login info. Janitors can also use this for node edits / retitling. I'll be reworking the retitler to take advantage of this module's features.

The code is well commented. Start your reading at the beginning of the PerlMonks::Mechanized package (ie, ignore the Janitor package until you've read PM::Mech first. Then if you're a janitor, go back and read the Janitor class). All public functions are documented at least enough that with the help of Data::Dumper you'll know what they're doing.

Enjoy!


Updates:

  • PM::Mech::Janitor fixes (updated to v0.6):
    • Renamed Janitor class to PerlMonks::Mechanized::Janitor (more sensible)
    • PM::Mech::Janitor bug fixed where W::Mech was misspelled. Woops.
    • PM::Mech::Janitor's version number goes to 0.6.
  • PM::Mechanized fixes (updated to v0.6)
    • Repaired login detection to work with PM::M::Janitor
  • URL fix, per Dietz.
    • PM::M becomes v0.61. Added trailing '/' to URL.

Janitors Thread Retitler v2
on Dec 14, 2004 at 09:02 UTC
by davido

This script has been replaced by Janitors Thread Retitler v3.1.

This script is for use by Janitors. It won't work for you if you're not a Janitor (unless you're a janitor you don't need it).

This is an improved version of Janitors Thread Retitler v1. I have made the following changes and improvements by popular request. I believe I've implemented just about all of the suggestions. Hopefully this will make the script more usable.

  • Added a -from command line arg. This arg. is optional. If supplied, it allows you to specify on the command line the original node title. This will bypass the runtime "are you sure?" query, allowing the script to run without interaction.
  • Added a sanity check for empty node ID lists.
  • Changed the submit click method to expand compatibility to older versions of WWW::Mechanize.
  • Removed requirement for WWW::Mechanize 0.74 or newer.
  • Added logic to allow subthreads as base targets.
  • Improved command line argument names, and allowed abbreviations.
  • Added janitor edit attribution in base node. This can be customized or squelched.
  • Added help/usage/POD/manpage (aided by Pod::Usage).
  • Updated: Added ENV settings for user/passwd, per Corion's suggestion.

Please run the script with the -help option to learn about the improvements to its user interface. Also, please run it once in -debug mode to test it before firing it off live for the first time.

Note that even though its flexibility has been greatly expanded, it may still be used exactly as the original version if you prefer to not learn its new features.

I believe at this point I've addressed the bulk of the suggestions / needs discussed in the thread for the original Janitors Thread Retitler v1. But I'm still open for suggestions on how this might be made more useful.

Update:

Still working on...:
  • Implement .ini profile for default janitor attribution text.
  • Add -u switch (-unconsider) to automate unconsidering base node.
  • Implement tye's regexp approach for title text substitution.
  • Allow user/passwd to be read from .ini file if not found in %ENV.
  • Implement multiple janitor attribution texts, to be selected by keyword from command line arg. Ex: -attr "old" would pull in the text associated with the keyword 'old' in the INI file. ...this may or may not ever get done. ;)
  • Patches welcome!!!

Janitors Thread Retitler v1
on Nov 30, 2004 at 20:55 UTC
by davido

There is a newer version of this code posted at Janitors Thread Retitler v2. Both of these have been replaced by Janitors Thread Retitler v3.1.

This is a new retitler for the Janitors to use in retitling entire threads. It won't work if you're not a janitor, as it requires an edit page only available to the Monastery's cleanup crew. If you're a Janitor, and are tired of manually retitling nodes one by one, and would like an alternative to Janitors' Tools - Bulk node retitler, read on.

Usage is:

retitle -id NNNNNN -title "New Title Here" [-debug]

To configure for your system you just need to configure the script with your username and password, on or around line 13 and 14, $user and $passwd.

It works by fetching the XML Node Thread ticker for the thread specified by the command-line arg "-id NNNNNN". It walks the thread's XML footprint picking each node ID along the way. It then grabs the original title of the root node, and asks for confirmation before proceeding.

Finally, it uses the editor's view to update the titles for each node id. It leaves "Re:" and "Re^N:" alone, and skips any node whos title is different from the root node's title. That way if someone has intentionally used a different title in a followup it will leave that alone.

In debug mode, this script simply skips the final step where it normally would submit the change.

It requires WWW::Mechanize version 0.74 or newer. The version currently available on ActiveState PPM is 0.72, so if you're an ActiveState user you'll have to upgrade WWW::Mechanize through some other means. The most recent version is 1.05, but anything from 0.74 on is fine.

This was my first dive into using WWW::Mechanize to fill in forms, and it was an educational experience. I'm aware that a similar tool already exists, but I wanted to work through it myself for the practice. My tool uses the XML ticker, which may be less fragile than Corion's bulk-node retitler (no offense to Corion; it was he who pointed out this fact, and the XML ticker wasn't available when he wrote his retitler).

Since it's a learning experience, I welcome any comments or suggestions for improvement.

Janitors, enjoy!

Updated to expand usefulness to older style "Re: Re:" titles too.

Wiki size monitor.
on Nov 20, 2004 at 09:16 UTC
by davido

Really only useful to the gods, though possibly of interest to all Cabal: This is a quick way to check to see if any of the wikis are needing rotation.

My first time logging into the Monastery with WWW::Mechanize as myself (instead of just scraping anonymously), and my first time fetching Monastery pages via the xml displaytype. More straightforward than I expected. XML++.

I hope it comes in handy.

Update: Implemented demerphq's suggestion.

Chatterbox2IRC bridge using POE and XML::Simple
on Jun 10, 2004 at 20:17 UTC
by iblech
This program acts as an IRC server to broadcast the Perlmonks chatterbox to clients.
On connect, every client is force-joined into #perlmonkscb. List of /NAMES or /WHOIS, /WHO etc. don't work.
Note: Some clients (e.g. Konversation) detect the lag by /MSGing themselves. This, obviously, won't work. Other clients (irssi) use the supported PING command.
The parsing work is done by XML::Simple, POE is responsible for the networking stuff.
SprintPCS camera phone to Perlmonks Monkpics
on Jun 03, 2004 at 17:32 UTC
by diotalevi

This program is intended to be used as a procmail filter. It accepts e-mail from the internet, finds the SprintPCS Picture Share and uploads the first picture it finds as your monkpic. The program requires a small amount configuration - you must add a line after the __DATA__ marker to indicate the e-mail address to expect messages from and then your username and password. This is designed to allow multiple users to be served by the same script so if you can't run this locally I can be a gateway for you. Send me a message if you're interested.

The image fetching portion of the code is separated from the image uploading portion so someone could rewrite it for the other services as well.


# Add to your .procmailrc

PMDIR=$HOME/.procmail
INCLUDERC=$PMDIR/rc.picturemail

# Add to your .procmail/rc.picturemail

:0:
* pcs2pm@grenekatz.org
|/home/josh/bin/pmail
Scratchpad poster, new edition
on Jun 03, 2004 at 15:45 UTC
by saskaqueer
An update to the wonderful script posted by jeffa. This script brings the older one up to date with the new scratchpad system. I also fixed the "login error" detection to hopefully make it less error prone. I added a 'public' option to enable a simple switch to make any content posted to the scratchpad public or private.
katterbox
on Mar 22, 2004 at 21:29 UTC
by exussum0
Intended initially as a newer "the new java chatterbox client" client, it will expand into retrieving private messages as browsing discussion nodes.

Requires java 1.4.x and is easily installable via Java Web Start.

Frontpage staleness detector
on Mar 17, 2004 at 16:50 UTC
by diotalevi

This fetches the front page, does a quick guess at which nodes are questions and produces a histogram of the dates and how many nodes there are from each. I use it to check when the page is getting old and people aren't front-paging enough.

It'd be nicer if someone else were to package this into a CGI (remember to use a cache) and give us all a link. Or better yet... have to auto /msg people or tell the CB or something.

Simple tool for making HTML blockquotes from text selections
on Dec 14, 2003 at 10:57 UTC
by Intrepid

This is "pmnodecomp-blockquoter", and if you can say that 5 times and still chew salt-water taffy afterwards you get a prize. It's a helper for working in a Xterm shell and composing node text for posts here on Perlmonks. If you are replying to an existing node and wish to cite a brief part of what a previous poster has written, you may like to do so using a style that embraces the quote text in <blockquote> tags. This makes it visually stand out as being text attributable to another poster than yourself.

Related Links:

A cryptographically signed copy of the latest release of the program may also be obtained at the site:
here.


Update:

Now does what theorbtwo's reply and bart's reply wanted it to do. Also fixed a few other flaws. We now have a plugin-ready script that users can invent their own transmutations for.

Also the example shown below ought to be something like this instead (but see later at Second Update for an even better plan):


Then I switch to a text term (Xterm) and type:
$ pmnodecomp-blockquote <<'NOPOL8N'
which waits for me to paste the X cutbuffer / clipboard selection at the prompt.
Thanks to merlyn for the righteous slap that dispels brain-fevered idiocy like a bucket of icewater on a pair of amorous mutts.
use PerlMonksFacts;
on Sep 30, 2003 at 23:49 UTC
by Aristotle

NAME

PerlMonksFacts - codified knowledge about the automation interfaces of PerlMonks.org


SYNOPSIS

 use PerlMonksFacts;
 use URI;
 my $uri = URI->new(pm_url);
 $uri->query_form(pm_ticker xp => 'Aristotle');
 print $uri->as_string, "\n";

DESCRIPTION

This module abstracts working with the PerlMonks.org automation interfaces. The main purpose is to put PerlMonks.org ticker URL generation in a blackbox. As such, the main point of the module is the pm_ticker function.

Since this module is intended to be as abstract as possible, the pm_ticker and pm_url functions return raw key/value pairs. Their actual use is up to you; see the SYNOPSIS for an example of building a URI suitable for use in a HTTP GET request from them.


INTERFACE

%pm_nodetype

This hash contains a mapping of PerlMonks.org-internal node type names to human readable versions. It is mostly cribbed from the code of the live Super Search page of PerlMonks.org.

&pm_ticker

This function takes the name of a ticker and possibly parameters for it and returns a list of key/value pairs for URL construction. The following ticker names are recognized:

nn, newest nodes xml generator
Takes one parameter - a perlfunc/time style timestamp.
xp, XP xml ticker
Optionally takes one parameter - a user name or user homenode ID for whose XP should be tracked.
cb, chatterbox xml ticker
No parameters.
msg, private message xml ticker
No parameters.
users, other users xml ticker
No parameters.
query, node query xml generator
Takes any number of parameters, which should be node IDs for the nodes to query.
usernodes, user nodes info xml generator
Takes one parameter: the user whose nodes are to be returned.
thread, xml node thread
No parameters.

&pm_login

This function takes a username and password as parameters and returns a list of key/value pairs for URL construction.

&pm_time2unix

This function takes a timestamp in the format used in PerlMonks-generated XML and returns a perlfunc/time style timestamp.


BUGS

&pm_ticker does not yet implement the types parameter nor the days parameter to the newest nodes ticker.


AUTHOR

Aristotle Pagaltzis pagaltzis@gmx.de


LICENSE

This software is in the public domain. It is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.

Janitors' Tools - Bulk node retitler
on Jul 16, 2003 at 17:31 UTC
by Corion

From time to time, a janitor has to clean up a thread where the original poster chose a bad title for his question. If the janitor is too late, there are many nodes to retitle. This WWW::Mechanize script automates this process.

Of course, this script will only work, if you are a janitor, and it will break horribly if the PerlMonks HTML changes enough.

Update: castaway noted that the retitler broke due to recent changes in how internal links are done. The current version fixes that.

Producing an xearth markerfile from monk location tags
on Mar 18, 2003 at 16:19 UTC
by davis

Note: This is fairly similar in idea to OeufMayo's drawmap.pl, but it's a different approach. I don't think that it suffers from the "negative zero" bug that jcwren's code did (and perhaps still does)

I'm sat in an office with no external windows and spookily flat lighting. I decided to run xearth to give me some idea of the sun's position. Like a good geek, I put my location into the xearth markerfile, and carried on with my day.

A little while later, remembering the location tags that monks can put on their homenodes (documented here ), I thought it might be interesting to put some other monks on the map. Besides, it seemed like a good opportunity to use LWP::Simple and XML::Simple.

Caveats: The code's a dirty hack:

  • This code doesn't use HTML parsing modules to extract the HTML comment containing the location information. It splits based on newlines, and then uses a few regexen to extract the information. This is one of many Wrong Ways to do it, but I'm not really trying to parse, just extract one bit of info.
  • It uses Text::Table to output the text in a pretty-printed text table. You could change easily if you don't have this module.

Usage: Put your desired monks in the @monks array, then run the code. You probably want to append the output to your xearth markerfile. Note that this should also work for xplanet, the much prettier xearth alternative.

Fixed broken '/strong' tag - dvergin 2003-03-18

Check for recent replies to your posts
on Jan 27, 2003 at 16:55 UTC
by jdporter
In response to castaway's idea for a 'My Active Nodes' nodelet, I have written a console-based solution using my PerlMonksTickers module. It is a working example. You can use it as is, or enhance it to meet your particular needs. Run it with no arguments to get a usage statement. It does not require a PerlMonks login.
Node XML to HTML
on Dec 17, 2002 at 00:21 UTC
by jeffa
This little CGI script uses XML::LibXML and XML::LibXSLT to transform a node (fetched in XML display mode via LWP::Simple) from XML to HTML. This script is not necessarily meant to replace the print display mode, but instead as an example of how to use XSLT with Perl to transform XML to HTML.

The HTML::Entities module is used in the final step to decode the entities in the node content. More work could be done here like linking PM shortcuts ([id://], [cpan://], etc.), but since we already have a functioning print mode for nodes, why bother? :) This is simply here as a reference for further exploration. (it doesn't even work well on this type of node - Code Catecombs).

The XSL stylesheet is included in the DATA section, feel free to cut and paste it into it's own file.

UPDATE: added a default node per PodMaster's request.

cbhistory
on Dec 15, 2002 at 18:08 UTC
by pfaut

Like cblast35, keeps a history of messages that go through the chatterbox. This one uses a database (postgresql) to store the messages instead of a DB file. It keeps the last hour's worth of messages.

Try it at http://nbpfaus.net/~pfau/cbhistory.cgi.

XPBot -- check your XP on IRC
on Aug 25, 2002 at 14:53 UTC
by LTjake
Now, I know that jcwren has an excellent bot that does this and much more. After making this reply, i decided to mess with Net::IRC. Why not make a quick XP checker? So, here is the result of my few hours of messing around. It's fun for about 5 minutes, then it starts to be annnoying. :)

You can kick it, but it will just rejoin - unless you use the trigger text. Of course, someone can just invite it back. So, if need be, just ban it. :)

It accepts the command "get_xp username" (leaving out the username will use your nick instead) via the channel and /msg.
Perlmonks Age Stats
on Aug 05, 2002 at 05:37 UTC
by rattusillegitimus

A little while back in the CB, someone (forgive me, I have forgotten who), mentioned it would be interesting to see the age distribution of those monks who have reported their ages for the PerlMonks Stats Pages. So I decided to take a stab at generating such stats.

The script currently pulls up the upcoming birthdays page and scrapes the age information out, then outputs the requested file format (HTML or PNG). A future version might pull XML data from the server instead when it is available.

Examples: HTML Output, Summary Graph, Detail Graph.

Update: T'was dada that proposed the age stats in the CB. Thanks for the reminder ;)
Changed PDF to PNG in the comments.

Playing with PerlMonks site (1) - Copy a CODE without the '+'
on Jul 26, 2002 at 07:43 UTC
by gmpassos
The '+' used to split big lines inside CODE are very usefull to reade in the browser, but to copy the CODE and test not! Just point to a node and it will return all the codes of the page without '+'.
Playing with PerlMonks site (0) - See what user was more active
on Jul 25, 2002 at 06:31 UTC
by gmpassos
Let's play with the PerlMonks site (code 0). This code get the page "Newest Nodes", see what users have posted, count the number of nodes, and show a list of user by activity.
Scratchpad Poster
on Jul 04, 2002 at 05:33 UTC
by jeffa
This script will upload a file and replace your scratch pad with the contents of that file. Options are included to append and prepend instead of clobbering, and to download your existing scratch pad for backup purposes. See POD for more details.

Update: Ack! Looks like ar0n beat me to this almost a whole year ago: hup - home node updater. Thanks for pointing this out ybiC, and don't blame me - blame ar0n! :D

PerlMonks::StatsWhore
on May 16, 2002 at 21:17 UTC
by mojotoad
Three Scripts for the Acolytes under the sky,
seven for the Friar-lords in their halls of stone,
nine for Mortal Bishops doomed to die,
one for the Dark Saint on his dark throne
in the Land of Monkwhore where the Black Stats lie.
One Mod to rule them all,
one Mod to find them,
one Mod to bring them all
and in the darkness bind them
in the Land of Monkwhore where the Black Stats lie.

A module that encapsulates behavior and code from jcwren's statswhore.pl and xstatswhore.pl, plus aspects from luke_repwalker.pl, and xluke_repwalker.pl. Also included is the histogram code by larryl.

I started playing with the scripts when I noticed that in the early versions jcwren had experienced problems using my HTML::TableExtract module. The later versions of each script instead use the XML ticker and XML::Twig module, an understandable choice given the circumstances. Nevertheless I started investigating what the original problems were with HTML::TableExtract. As it turns out, these problems have since gone away: perlmonks has a different query interface and results format for writeups via HTML, plus there are later versions of HTML::TableExtract that greatly assist in extracting HTML from the tables in question (as opposed to the traditional role of extracting tables from the HTML in question). These developments negate the need for hoop gymnastics and inheritance hell that jcwren had been forced into.

The XML interface is far quicker, but apparently not all people wish to install the associated XML modules and libraries.

This module incorporates both query methods, XML as well as HTML. The default is XML, but this behavior can be changed via the mode parameter.

If you have XML parsing problems with non UTF-8 encodings in your titles, then simply set the mode to HTML.

Behind a proxy server? Set your http_proxy environment variable to the URL of your proxy server.

See the POD for more information. Thanks to jcwren and larryl for the original code.

Basic usage:

#!/usr/bin/perl use PerlMonks::StatsWhore; $sw = PerlMonks::StatsWhore->new( user => 'username', password => 'password', ); print $sw->summary_as_string;

Check out the code if you're interested in inheritance and polymorphism.

Matt

Updates thus far:

  • POD fix per Biker's suggestion
  • Added $VERSION info. For gawd's sake we might as well attempt to approach the book keeping abilities of CPAN.
  • Added reminder of motivation for XML barfing on non "standard" characters (forget Latin-2) in node titles thanks to another nudge from the ever-testing Biker.
(code) Xp2v.pm
on May 05, 2002 at 16:23 UTC
by ybiC

A Perl extension to check PM experience points before a given PerlMonk reaches 'level vroom'.   Handy for monks of the Saint(10)ly persuasion.   Works fine as is, but substantial changes are in the works.

You can peruse all the supporting files initially generated by h2xs here, plus there's a tarball of the whole shebang.

(as this is my first serious-to-completion-of-working-code module writing effort, I'd particularly welcome any and all criticism, complaints, rotton fruit, or even constructive suggestions)

Node Tracker
on Mar 31, 2002 at 05:11 UTC
by smgfc

A simple little program that will keep a log of any changes to the title, id, or rep of your nodes, including the addition or deletion of said nodes.

2002-03-31 Edit by the node bunny : Changed login and password.

Run and/or download code directly from perlmonk nodes.
on Mar 24, 2002 at 02:08 UTC
by Dog and Pony
Tired of copy/paste, save and then execute obfuscations, poetry or other code from interesting nodes? This small command line utility will do it for you. By default it takes the code from a node and simply evals it, but it can also download a copy with or without executing it. It uses LWP::Simple for the fetching. Use the option '-h' and read the embedded comments for more info.

Please read the warnings about possible dangers. Do not simply execute any code/node you have reason to distrust, but that of course goes for manual downloads as well. This does work well for just downloading too though, if you just want to poke around in a script. :)

Update: The provided patch by Amoe has been applied. My way worked for me on Win2k, cygwin and FreeBSD, so I lazied out on this one. :) Thanks Amoe!

Update 2: Suggestion 2 by belg4mit should be working now: Using the -d option for deparsing instead of executing should now work. Note that in-memory-deparsing uses a new feauture (v5.6.1?) in B::Deparse that won't work with older perls. Use together with -M or -F instead.

msgmail.pl
on Feb 20, 2002 at 03:33 UTC
by zdog
This script checks to see if you have received any /msg's, emails them to you, and then provides an interface to handle replies (at least it's supposed to). When you get such an email, all you do is hit reply (making sure that the info within the brackets is still in the subject), type in your msg, and hit send. In order to set it up, you need a Un*x system running an SMTP server (at least I think you do). You run this script as a daemon using root and whoever wants to take advantage of the service just creates a configuration file in their home directory in the following form:

pm_username|pm_passwd|email_addy

It's that simple (at least I hope it is).

PerlMonks CSS Examples
on Feb 16, 2002 at 16:36 UTC
by particle
Petrucio recently introduced the capability to apply Cascading Style Sheets (CSS) to PerlMonks, in his We Stylin'! node. Rich36 suggested a node for sample CSS files, and I've taken it upon myself to create a node dedicated to just that. although it cannot be linked directly to user pages, it should serve as a repository for everyone's creations.

my example is below... please feel free to add your own.

download code from scratchpad
on Dec 28, 2001 at 10:39 UTC
by crazyinsomniac
If you've ever been to scratch pad viewer and you've wanted to download some code from somebody's scratchpad, you've noticed there is no "d/l code link". It turns out, if you use my script, you don't need it.
 %>perl scratchcode.pl monkname

update: Tue Apr 2 10:37:58 2002 GMT ~ changed off trigger due to Petruchio

update: Fri May 24 11:19:30 2002 GMT ~ &quot; as added, so gots to take it out (and also added a \n remove, jeez, i'm gonna make this obsolete soon ~ and &amp; ~ i hope the goods see pmdev wiki soon)

update: Fri Jan 17 05:31:13 2003 GMT -- more changes, more fixes.

New Nodes by Day of Week
on Dec 03, 2001 at 11:12 UTC
by blakem
The third in a series... Plots the nodes per hour broken out by day of the week. In the sample output below, the labels need a bit of explaining. In order to keep the order correct in Text::BarGraph I had to choose some slightly confusing labels. The first digit is the day (1-7 => mon-sun) the last two are the hour (00-23) So, the label '216' means 16:00 (4pm) on Tuesday. The output below is based on data for the past 6 months.

The large dropoff over the weekend is tough to miss......

Node Bookmark Lister
on Dec 01, 2001 at 22:58 UTC
by jeffa
UPDATE
With the new changes to the way HTML is rendered in titles, this idea is now A Bad Thing To Do ™. Please disregard this post and just think of it as a fossil. :P

A cool feature about your posts is the fact that you can put HTML comments in the title of your post. Armed with this feature, it is possible to put 'category markers' in your node titles and use a script to find them and make a nice list of your favorite nodes.

The following code will do just that, the demo is on my home node. All you need to do is mark your favorite nodes by hand with something like <!--code--> or <!--obfu-->. Well that's how i did it before i saw jcwren's Bulk Node Title Editor.

The side effect is that you have to link directly to a node's id instead of it's name when referring to it in other posts, chatbox, etc. But that's okay, you use id tags, don't you? Hey Rocko! Ask 'em if they use id tags!

Feel free to send comments and suggestions to crazyinsomniac! :D

UPDATE: - after gleaming good security info from jcwren, i changed this script to accept an interactive password similiar to how mysql asks for passwords: you can specify the password on the command line with the -p option (dangerous for mulit-user boxes), or you can just specify -p by itself and be prompted for the password. I use Term::ReadKey to keep the password 'invisible'.

Bulk Node Title Editor
on Dec 01, 2001 at 04:59 UTC
by jcwren
Allows bulk editing of user's node titles. Useful when going back and 'kudratizing' titles (see Suggestion for post-naming convention).
Plot Your Nodes by Hour
on Nov 30, 2001 at 02:54 UTC
by blakem
Displays a bargraph of *your* nodes per hour. Similiar to the previous one, but parses a different XML feed and shows data about all the nodes you have personally posted.

(telling observation: I have yet to post a node during the 9am-10am slot....)

Perlmonks Nodes Per Hour
on Nov 29, 2001 at 13:49 UTC
by blakem
Displays new nodes per hour as a bargraph (see the sample output in the code below). Its quick and dirty, so there isn't much thats customizable. It will need your user/pass combo to make the XML feeds work, though. The sample output is in Pacific time but the script will recognize your own localtime settings.

Update: slight pod tweak for the podmaster
Update2: added second sample output based on a full month of data

Home Node Image Rotator
on Nov 27, 2001 at 22:26 UTC
by jcwren

Implements automatic updating of home node image, after so many hits on the home node. Uses a "bug" script (included) to detect hits, and this piece to automatically uploaded a new image after so many hits.

Please read the section on SECURITY and the rest of the documentation before using. Requires some responsibility on the part of the user.

Graph displaying reputation of all your nodes
on Oct 22, 2001 at 18:56 UTC
by tomhukins
Converts output from quickrep.pl into a PNG bar chart to show how many of your nodes have a given reputation.
pm - a quick and dirty perlmonks command line searching and reference hack
on Sep 26, 2001 at 22:24 UTC
by cider
pm is a quick and dirty generic hacked frontend to everything2 styled databases, suitable immeadiately for searching and reference usage with perlmonks.org and everything2.com related sites, accepts -dump and -random parameters hackishly, could easily be turned into a /usr/games/fortune replacement for a screensaver (xlock -mode marquee) of random perlmonks/everything2 nodes with a little output hacking. Happy hacking.
Personal Nodelet Restorer
on Sep 19, 2001 at 22:24 UTC
by $code or die
This script does the reverse of jeffa's Personal Nodelet Extractor. It is also, mainly his code - so don't bother upvoting this node.

I have needed to re-input all my personal nodelets twice in the last week because I have updated my sig. See this message for more info. This will save me a good 20 minutes next time I have to do it! I need to do some nodelet housekeeping when I have time.

Update: Nov 15 2001 Added modifypn=>'on' to the POST. Also modify and uncomment the line with $ua->proxy if you need it. Thanks ybiC!
Quickrep
on Sep 10, 2001 at 18:27 UTC
by patgas

Quickly check changes in your Perl Monks nodes' reputations. It will list all of your nodes, sorted by reputation in descending order, with any changes since the last time you ran Quickrep.

cblast35
on Aug 07, 2001 at 14:18 UTC
by crazyinsomniac
Well it keeps a DB_File of the last 35 messages uttered in the cb, so if you walk in on something I<interesting>, you can catch up without saying: "what are you guys talking about?"

It actually is two scripts (well three if you're cronless), cblast35.pl -- which is to be run cron style to update the "database", and cblast35.cgi -- which just displays the messages via CGI.

You can also download everything from my website here

update: A call for cblast35 mirrors has yielded three quite a few mirrors, jay!!!

Thanks blakem,Chady,jeffa ;)
hup - home node updater
on Jul 21, 2001 at 18:46 UTC
by ar0n

hup is a home node updater. You can use it on the command line, or from a crontab, to automate updating your homenode. As always, suggestions welcome.

Updates

  • 2001-11-14 -- Added scratchpad support, courtesy of thatguy.
  • 2002-01-19 -- Miscellaneous fixes. No longer warns when certain fields are empty; prompts for username and password

xml_pimp
on Jul 19, 2001 at 13:20 UTC
by crazyinsomniac

xml_pimp.pl - You heard of statswhore? You heard (x)luke_repwalker? Well dis da pimp!

For more information, read the pod below, or an html version at http://crazyinsomniac.perlmonk.org/perl/xml_pimp/ along with pictures ;-)(that's clemburg on there)

Like always, no comments are welcome(now that's what I call sarcasm ;-))

updates:
July 20, 2001 - minor cosmetic changes;
July 21, 2001 - updated some pod (a blah... got by me)
July 27, 2001 - changed sort keys to sort {$a<=>$b> keys(print_HISTORY for -h1)
September 26, 2001 - added &ticker=yes (details: New ticker login for PM XML clients)
Sun Jan 13 21:11:13 2002 GMT - fixed serious bug nobody told me about, which I was unaware of due to my testing environment. I guess the good thing is i'm the only one using this ;)(or I lost the original posted version which worked)

drawmap.pl
on Jun 19, 2001 at 18:10 UTC
by OeufMayo
see node drawmap.pl - Spot The Monk! - The code is posted here just for ease of use and update. (no need to vote on this, got enough XP with the first one!)
CGI Script for Reading Newest Nodes
on Jun 14, 2001 at 01:08 UTC
by voyager
This script fetches the XML version of Newest Nodes and creates a page similar to the Newest Nodes page. With this script you can control which sections show up and in what order.
Code Catacombs Auto-Updat Example
on Jun 11, 2001 at 05:06 UTC
by mr.nick
This is just an example script

I frequently update my pmchat script and have found that updating my node for it is quite a pain in the *ss. To simplify the experience, I wrote the following script that is called from my Makefile (when my script changes) and automatically updates its node under Code Catecombs.

This script WILL NOT work for you without modification. I hestitated to post it here in its form, but decided that it was probably worth the educational experience.

Note: the script draws from the cookie file that is created by my pmchat script for authentication.

Personal Nodelet Extractor
on Jun 05, 2001 at 23:44 UTC
by jeffa
Is your Personal Nodelet getting too big? Mine sure is was. So, I wrote this little bot to parse my Personal Nodelet and output the nodes in the form of: id [delimiter] name. Once the data is in an easy (and fast) form to parse, you can use another script to edit it, munge it some more - or you can modify this script to reflect your needs.

Also, check out Personal Nodelet Restorer.

Comments and improvements always welcome. :)

Fixes:
thanks to crazyinsomniac PodMaster for pointing out my lack of Win32 support in the synopsis

UPDATE: - after gleaming good security info from jcwren, i changed this script to accept an interactive password similiar to how mysql asks for passwords: you can specify the password on the command line with the -p option (dangerous for mulit-user boxes), or you can just specify -p by itself and be prompted for the password. I use Term::ReadKey to keep the password 'invisible'. Because of the new nature, be sure and specify -p last, after -u and -s if used.

UPDATE (Mar 24,2002): - somebody moved 'lastnode' before 'node' so regex has been updated

pmchat
on Jun 03, 2001 at 19:28 UTC
by mr.nick
A text-mode client for the Chatterbox.

Main features:

  • Colorized output via ANSI escape sequences
  • Compatible with both *nix and Win32 (mostly :)
  • Displays most recent New Nodes
  • Can launch a browser to view a node
  • Check for and autoinstall updates
  • An "Away" mode for not being in "Other Users"
  • Uses the various XML Generators of PerlMonks
  • Tracks XP status
  • Tracks Reputation of your nodes (and displays WHICH nodes have changed -- and by how much)
  • Requires NO configuration, download and run!
  • Displays Other Users
  • User configurable options (inside Pmchat) for
    • Time-stamping each message (for long-term running)
    • Turn off/on colorization
    • Number of New Nodes listed
    • Which browser to use for node viewing
    • Update on Launch
    • Seconds between polls for new messages (n/a on Windows)
    • Debugging mode. No output is sent to Perlmonks
    • Log file. Keeps a log of all messages. Set "logfile" to the desired filename. To stop, set "logfile" to "0" or "none".

Because pmchat is a text-mode client, it has the following shortcomings

  • Doesn't render HTML tags
  • Doesn't render special HTML entities (eg: &amp;)
WebFetch::PerlMonks
on Jun 02, 2001 at 08:13 UTC
by zdog
This modules grabs the most recent PerlMonks.org posts using XML::Parser and generates a HTML file containing a list of links to those posts.

By default, the file is written to perlmonks.html. If that file already exists, a backup will be created at Operlmonks.html before the file is overwritten.

I guess you need to have the WebFetch module installed to run this.

Special thanks to :
- OeufMayo for creating the XML::Parser tutorial that helped me create this.
- mirod for helping me with the XML::Parser problem.

Bugfixes:
- xml_char () was altered to read in entire string as mirod suggested
- the tests to return () were moved to xml_end () from xml_start () to keep from reading too many strings into one field

Suggestions please ...

xNN
on May 17, 2001 at 16:03 UTC
by epoptai
xNN is a CGI newest nodes client that sorts nodes by date, author, category, and threads (screenshots). Displays nodes from n days in the past, or fractions of the current day. Saves node data to disk, uses cookies to remember sort mode, and can undo a refresh. Requires XML::Simple

Note: Threaded mode can get dramatically slower as the number of nodes increases, so be prepared to wait when threading more than a few days worth (1000+). Be sure the #! and 3 config variables are correct first.

Also: For some reason xNN is now very very slow checking anything more than 1 day of nodes. Nothing changed in the script which suggests that some change in the XML ticker (or something) is causing it. I'm kind of busy now so the fix will have to wait (unless you figure it out and send me a patch :-)

Code updated: 5.23.2002

monkyack.pl
on Apr 11, 2001 at 23:22 UTC
by jcwren

Hear monks talk! Listen to your favorite monks battle it out in the chatterbox, as streaming audio! Make your co-workers think you're a basket case!

This script delivers the chatterbox as MP3 encoded streaming audio. It uses the festival/MBROLA text-to-speech (TTS) system to create the audio on the fly.

reputer
on Apr 04, 2001 at 12:28 UTC
by epoptai
reputer is a perl/cgi that analyzes and displays node reputation and xp data from perlmonks.

Because it's larger than 50k reputer has two nodes on Perlmonks.
This is the source code node in code catacombs.
Please make replies to the reply node.

Also includes proxy support, restricted public access mode,
integration with command line programs and compressed file export.

Update: Fixed possible problem creating data files when first running script.

Voting Booth Nodelet Watcher
on Mar 18, 2001 at 22:46 UTC
by jcwren
This is for people that run around life with the all important voting nodelet turned off. Don't want to be clueless to voting booth content changes? Throw this in a cron job and be clueful.
Perlmonks Navigator
on Mar 18, 2001 at 05:46 UTC
by tilly
First, while this is useful and Perlmonks related, it isn't Perl. It is JavaScript.

d/l the code, and save the two pieces marked with ##filename=foo.html## as what the name is supposed to be. Be sure cookies and JavaScript are on. Then point your browser at perlmonks.html, and try it out.

With this, this morning I was able to walk through every post for several days worth of PerlMonks in just a few hours. Most of that time was spent writing up responses. With this I can follow the whole site with less energy than it would take to hit a reasonable portion of it through using Newest Nodes.

Update
Clearly my cookie handling in JavaScript sucks. Oh well, I don't like either cookies or JavaScript, so I guess that was my internal bias showing. :-) Now fixed.

xluke_repwalker.pl
on Mar 18, 2001 at 04:20 UTC
by jcwren

This is an update of luke_repwalker.pl that uses mirods XML::Twig module. It's faster because it generates few hits to the server. People like tilly should appreciate this... And ultimately it's more reliable, since it doesn't try to parse the tables of article listings.

I posted this as new code so that the old one would still be available. Some people have had trouble installing the various XML modules, or don't wish to.

xstatswhore.pl
on Mar 18, 2001 at 04:16 UTC
by jcwren

xstatswhore.pl is an update of statswhore.pl that uses mirods XML::Twig module, and includes larryls histogram code (if you like the histogram part, be sure to thank him. ++Re: statswhore.pl). This version has the advantage of being faster by generating fewer hits to the server, and fixing the problem of having exactly a multiple of 50 nodes. And the histogram part is really cool..

I posted this as new code so that the old one would still be available. Some people have had trouble installing the various XML modules, or don't wish to.

repviewer
on Feb 04, 2001 at 18:45 UTC
by epoptai
repviewer parses the reputation file generated by jcwren's luke_repwalker.pl to generate a full list of your articles sorted by creation time, title or reputation just like perlmonks user search except that all articles are displayed on one page. Just set $pm and $rep.
Homenode Updater
on Sep 28, 2000 at 07:18 UTC
by jcwren
Designed to insert SETI@Home statistics into a users homenode, but easily modifiable for other tasks. See comments in code.
seeker watch
on Sep 14, 2000 at 02:13 UTC
by vladdrak
Checks perlmonks at a defined interval for new seeker posts and notifies when found. Since I'm on a Windows box primarily now, it plays a .wav. Season to taste.
Perl/Tk Newest Nodes Client
on Sep 07, 2000 at 01:02 UTC
by Shendal
Uses zzamboni's PerlMonks.pm 2.0 to check newest nodes and put them in a graphical tree format.
Features:
- Tree format (expand/collapse)
- Colorization
- Launch browser by double clicking
- User preferences are saved
- Uses existing browser window, if available
luke_repwalker.pl
on Aug 06, 2000 at 05:50 UTC
by jcwren
This little script allows you to monitor changes to the reputation of your articles. It can produce a full report, a brief report, and/or the report from statswhore.pl. The output can be displayed to the console, e-mailed, or both. The output is designed to be parsable, in case you have other plans for it. The snapshot file is a CSV file that is directly importable into Excel or StarOffice spreadsheets. Parameters can either be specified on the command line, or patched into the script, near the top. For the paranoid, the -P allows prompting of your password from STDIN.

I believe I've tested all the permutations, and interactions, and had no problems. I don't expect this to last.

You may notice that the article counts differ from your homenode. vroom swears this will be fixed in 0.9 of E2. It has to do with where articles are credited for Q&A's. The articles checked for rep are the ones that actually appear when you click the writeups count on your homenode display.

If you have any problems, questions, or suggestion, please let me know.

Updated 2000/09/02: I found a problem when there is an even multiple of 50 articles (the number of writeups displayed on a page). This release fixes that, and also adds mySQL DBI support so you can log all your changes to a database table (yes, the account and password for the DB is in the code, not a command line parameter. Oh well, maybe 1.00.40?). Note that if you're a statswhore.pl user, that code has not yet been patched to solve the 50's multiple problem.

-Chris
statswhore.pl
on Aug 04, 2000 at 08:18 UTC
by jcwren
Extracts a users total writeups, and total repuration, along with min, max, and average. Account and password can be embedded into the program, or supplied on the command line
Personal PerlMonks Stats plot creator
on Jul 31, 2000 at 10:47 UTC
by ase
Here's my contribution to statistics nuts like myself.
This utility Logs in to Perlmonks (using ZZamboni's PerlmonksChat module), gets your writeup page and creates 3 plots from the data, which are ftp'd to a server of your choice.
I run it every few days to update the graphs. All modules besides PerlMonksChat.pm are available at CPAN. See my home node for an example of the results.

Update: I no longer post the graphs on my home node. The updated code given in the replies to this node is more modern. Thanks to everyone for the kind comments I received when I first wrote this.

Monktalk
on Jun 01, 2000 at 21:53 UTC
by httptech
Speech interface to chatterbox, using festival server for the text-to-speech processing. You need to have the festival daemon running and install the Speech::Festival module.

Since it's based on ZZamboni's Chatterbox Client you will need to download his module as well.

Use your Vim colorscheme in perlmonks syntax highlighting
on Mar 25, 2007 at 23:10 UTC
by pKai
When I read about Free Nodelet hack: Syntax colouring I was (and still am) somewhat sceptical about the usefulness.

For the very least that highlighting has to resemble my Vim colorscheme. ;-)

So I wrote the following to read my (custom) color scheme file and create a corresponding CSS to be used with the "jaap" variation Corion supplied.

Disclaimer: This is far from a full-fledged vimscript parser/interpreter. It just reads a color scheme (try "zellner.vim" it should at least work with that) with the diamond operator and only "knows" about the "highlight" command from Vim. I hope it interprets at least this reasonably close to Vim's implementation.

If you actually produce something useful with if you have to host that CSS file somewhere and refer to it instead of the file Corion provided on his own site.

Update: Added some minimal comments.

As you might deduce from the questions in there, I'm not really a vimscript programmer. And I also didn't bother to mock with my vim files to test those. :-(

CB60
on Feb 17, 2006 at 20:56 UTC
by demerphq

A lightweight CB Mirror similar to cblast35.

No DB needed at all. Uses the 'modern' xml feed so it can provide properly parsed output.

Set up mini-cb60-fetch.pl on cron job (--sleeptime=0) or as an always running daemon. Set up mini-cb-render.pl as a CGI script for access.

If the CGI parameter 'domain' is provided and is one of 'org','com' or 'net' then that domain will be used for the PM specific links.

This is just a proof of concept for an incremental, low load, PM-parsed CBlast 60.

Update:

  • v0.01001: Removed superfluous use of DDS (hangover from initial dev). Added $VERSION to the render code. Trivial changes.
  • v0.02: Added cookie support, better defaults. Other minor changes.


Arunbear has kindly made this available online. Many thanks to Arunbear for doing so.
Version 0.02 as posted below is running on http://mini-cb60.datenzoo.de. Thanks to corion for support in getting this set up. The latest version will be available at this site until further notice.

The whore-by-mail game
on Nov 05, 2005 at 07:34 UTC
by sfink
This is (part of) my crontab file:
MAILTO=steve@fink.com # r----minute # | r-----hour # | | r------day of the month # | | | r------month # | | | | r------day of the week # | | | | | r------ command to run ----------> # | | | | | | 0 10 * * * /home/sfink/bin/whore 0 18 * * * /home/sfink/bin/whore
This will email me an update saying which of my nodes have gained or lost reputation in the last day, and whether I have any new private msgs. It's rough, it uses flat files, and it assumes a particular directory structure (I have bin/, lib/, and var/ subdirectories under my home dir). Oh, and I use a text-only mail reader that doesn't open up links I click on, so the output is text-only. (It would be trivially easy to make the new message notifications be links.)

It will also keep a complete historical log of all the changes.

Making XP Change
on Jun 09, 2005 at 18:30 UTC
by diotalevi

It tells you how many XP you have until your next modular promotion. It also makes change. Here's some sample output.

XP = 16780
16780.00 initiates
839.00 novices, 0 to promotion
335.60 acolytes, 30 to promotion
167.80 scribes, 80 to promotion
83.90 monks, 180 to promotion
33.56 friars, 280 to promotion
16.78 abbots, 780 to promotion
10.49 bishops, 780 to promotion
7.30 pontiffs, 680 to promotion
5.59 saints, 1780 to promotion
5 saints, a bishop, scribe, acolyte, novice, and 10 initiates
PerlMonks Quips Gatherer
on May 08, 2005 at 21:46 UTC
by crashtest
Ever wondered if you've seen every single quip that displays on the top of the pages on this site? I was curious, so I put together a little screen-scraper to check. Hey, it was a slow Sunday afternoon!

No command-line arguments for this script, but there are three variables at the top of the code (clearly marked) that provide some crude configuration. $iterations determines how often perlmonks.org is queried, $nice sets how long to pause between HTTP requests, while $status_print_interval configures how often the script pipes up with a quick status report to show it's still alive.

After 100 iterations, I think I've "collected 'em all", but I look forward to running this script every couple of months to see what other witticisms those [id://pmdev]s come up with:
********** RESULTS **********
2 time(s): Perl Sensitive Sunglasses
7 time(s): more useful options
9 time(s): Pathologically Eclectic Rubbish Lister
3 time(s): XP is just a number
8 time(s): Welcome to the Monastery
5 time(s): Think about Loose Coupling
3 time(s): P is for Practical
4 time(s): Syntactic Confectionary Delight
4 time(s): Perl Monk, Perl Meditation.
7 time(s): Your skill will accomplish what the force of many cannot
8 time(s): "be consistent."
5 time(s): go ahead... be a heretic
8 time(s): Keep It Simple, Stupid
6 time(s): laziness, impatience, and hubris
4 time(s): Perl: the Markov chain saw
10 time(s): There's more than one way to do things.
3 time(s): Just another Perl shrine
4 time(s): good chemistry is complicated,and a little bit messy-LW
Janitors Thread Retitler v3.1
on Dec 29, 2004 at 09:26 UTC
by davido

This is a Janitors tool script used to retitle threads. It doesn't work for non-Janitors.

This script replaces Janitors Thread Retitler v1 and Janitors Thread Retitler v2. Unlike previous versions, it requires PerlMonks::Mechanized. This dependancy has facilitated simplifying the code and the adding of "prepare / commit" transactions, allowing Janitors to see all changes before deciding on whether or not to commit them to reality.

Using the -help option on the commandline will give usage details. As before, the -debug option will cause the script to do everything except committing the changes, and /msg'ing the author.

Basic usage is:

retitle.pl -id NNNNN -from "search text" -to "replace text"

Other improvements:

  • -from option now functions like a search string instead of a full-title match. -from is now mandatory.
  • -to is now a replace string, instead of a full new title.
  • -prompt (default) causes an "are you sure" prompt to occur prior to committing changes. -noprompt will suppress this failsafe measure.
  • -msg (default) causes a simple notification to be sent to the author of the base node via /msg. -nomsg will suppress notification.
  • -ascribe (default) causes simple Janitor attribution at the bottom of the base node. -noascribe (or -noattribute) will suppress Janitor attribution.
  • -unconsider (default) will cause the base node to be unconsidered. -nounconsider (or -nou for short) will suppress this feature.
  • $ENV{PMUSER} and $ENV{PMPASS} must be set in your environment for login to occur.
  • All commandline option names may be abbreviated as one letter (-to = -t, -from = -f, -ascribe = -a). For options such as -ascribe, -prompt, and -msg, their negative abbreviations are -noa, -nop, -nom
  • Edit attribution code now appends the following to the end of the base node being retitled: Retitled by [username] from 'old title'.
  • Wrapped author name in [ ... ] brackets to fix bug where automated /msg couldn't be sent to folks with whitespace in their username.
  • Added a sanity check to prevent automated /msg from being sent to our friend, Anonymous Monk.

Please post questions, additional needs, comments, etc., in this thread so they're all in one place, and so I can respond here. I hope you find this helpful.

Enjoy!

PerlMonks::Mechanized (beta)
on Dec 25, 2004 at 21:24 UTC
by davido

It's Christmas day in LA, and here's my present to the Monastery (whether you see it as a diamond or a lump of coal remains to be determined). Merry Christmas all...

This is Yet Another Attempt to gather Monastery automation tools under one roof. The following is a module, PerlMonks::Mechanized, which mechanizes many of the common PM tasks. It makes using the Monastery's XML tickers a trivial task, for example. I intend to polish it, and add features on request. For now, it just has what I have needed myself recently, plus a little more. But as requests come in, if they're well thought-out, I'll add them. I'm also very interested in comments that will help me to improve it. At this point, I don't consider any part of this module stable (not even its interface). But if people like it, I'll stabilize it, properly document it, and continue adding to it/ maintaining it. For now, this is a rough-draft.

It uses $ENV{PMPASS} and $ENV{PMUSER} for login info, or you can supply them as user, passwd to my $monk = PerlMonks::Mechanize->new($user,$passwd);

Here is a simple example...

use strict; use warnings; use PerlMonks::Mechanized; my $monk = PerlMonks::Mechanized->new(); $monk->say( "Hello. This is a PerlMonks::Mechanized test." );

The preceeding code assumes you've set your login env variables. The code only logs you in to the Monastery if the action you're requesting requires a login. Otherwise, you stay logged out. Login is on demand, assuming you've supplied the proper login info. Janitors can also use this for node edits / retitling. I'll be reworking the retitler to take advantage of this module's features.

The code is well commented. Start your reading at the beginning of the PerlMonks::Mechanized package (ie, ignore the Janitor package until you've read PM::Mech first. Then if you're a janitor, go back and read the Janitor class). All public functions are documented at least enough that with the help of Data::Dumper you'll know what they're doing.

Enjoy!


Updates:

  • PM::Mech::Janitor fixes (updated to v0.6):
    • Renamed Janitor class to PerlMonks::Mechanized::Janitor (more sensible)
    • PM::Mech::Janitor bug fixed where W::Mech was misspelled. Woops.
    • PM::Mech::Janitor's version number goes to 0.6.
  • PM::Mechanized fixes (updated to v0.6)
    • Repaired login detection to work with PM::M::Janitor
  • URL fix, per Dietz.
    • PM::M becomes v0.61. Added trailing '/' to URL.

Janitors Thread Retitler v2
on Dec 14, 2004 at 09:02 UTC
by davido

This script has been replaced by Janitors Thread Retitler v3.1.

This script is for use by Janitors. It won't work for you if you're not a Janitor (unless you're a janitor you don't need it).

This is an improved version of Janitors Thread Retitler v1. I have made the following changes and improvements by popular request. I believe I've implemented just about all of the suggestions. Hopefully this will make the script more usable.

  • Added a -from command line arg. This arg. is optional. If supplied, it allows you to specify on the command line the original node title. This will bypass the runtime "are you sure?" query, allowing the script to run without interaction.
  • Added a sanity check for empty node ID lists.
  • Changed the submit click method to expand compatibility to older versions of WWW::Mechanize.
  • Removed requirement for WWW::Mechanize 0.74 or newer.
  • Added logic to allow subthreads as base targets.
  • Improved command line argument names, and allowed abbreviations.
  • Added janitor edit attribution in base node. This can be customized or squelched.
  • Added help/usage/POD/manpage (aided by Pod::Usage).
  • Updated: Added ENV settings for user/passwd, per Corion's suggestion.

Please run the script with the -help option to learn about the improvements to its user interface. Also, please run it once in -debug mode to test it before firing it off live for the first time.

Note that even though its flexibility has been greatly expanded, it may still be used exactly as the original version if you prefer to not learn its new features.

I believe at this point I've addressed the bulk of the suggestions / needs discussed in the thread for the original Janitors Thread Retitler v1. But I'm still open for suggestions on how this might be made more useful.

Update:

Still working on...:
  • Implement .ini profile for default janitor attribution text.
  • Add -u switch (-unconsider) to automate unconsidering base node.
  • Implement tye's regexp approach for title text substitution.
  • Allow user/passwd to be read from .ini file if not found in %ENV.
  • Implement multiple janitor attribution texts, to be selected by keyword from command line arg. Ex: -attr "old" would pull in the text associated with the keyword 'old' in the INI file. ...this may or may not ever get done. ;)
  • Patches welcome!!!

Janitors Thread Retitler v1
on Nov 30, 2004 at 20:55 UTC
by davido

There is a newer version of this code posted at Janitors Thread Retitler v2. Both of these have been replaced by Janitors Thread Retitler v3.1.

This is a new retitler for the Janitors to use in retitling entire threads. It won't work if you're not a janitor, as it requires an edit page only available to the Monastery's cleanup crew. If you're a Janitor, and are tired of manually retitling nodes one by one, and would like an alternative to Janitors' Tools - Bulk node retitler, read on.

Usage is:

retitle -id NNNNNN -title "New Title Here" [-debug]

To configure for your system you just need to configure the script with your username and password, on or around line 13 and 14, $user and $passwd.

It works by fetching the XML Node Thread ticker for the thread specified by the command-line arg "-id NNNNNN". It walks the thread's XML footprint picking each node ID along the way. It then grabs the original title of the root node, and asks for confirmation before proceeding.

Finally, it uses the editor's view to update the titles for each node id. It leaves "Re:" and "Re^N:" alone, and skips any node whos title is different from the root node's title. That way if someone has intentionally used a different title in a followup it will leave that alone.

In debug mode, this script simply skips the final step where it normally would submit the change.

It requires WWW::Mechanize version 0.74 or newer. The version currently available on ActiveState PPM is 0.72, so if you're an ActiveState user you'll have to upgrade WWW::Mechanize through some other means. The most recent version is 1.05, but anything from 0.74 on is fine.

This was my first dive into using WWW::Mechanize to fill in forms, and it was an educational experience. I'm aware that a similar tool already exists, but I wanted to work through it myself for the practice. My tool uses the XML ticker, which may be less fragile than Corion's bulk-node retitler (no offense to Corion; it was he who pointed out this fact, and the XML ticker wasn't available when he wrote his retitler).

Since it's a learning experience, I welcome any comments or suggestions for improvement.

Janitors, enjoy!

Updated to expand usefulness to older style "Re: Re:" titles too.

Wiki size monitor.
on Nov 20, 2004 at 09:16 UTC
by davido

Really only useful to the gods, though possibly of interest to all Cabal: This is a quick way to check to see if any of the wikis are needing rotation.

My first time logging into the Monastery with WWW::Mechanize as myself (instead of just scraping anonymously), and my first time fetching Monastery pages via the xml displaytype. More straightforward than I expected. XML++.

I hope it comes in handy.

Update: Implemented demerphq's suggestion.

Chatterbox2IRC bridge using POE and XML::Simple
on Jun 10, 2004 at 20:17 UTC
by iblech
This program acts as an IRC server to broadcast the Perlmonks chatterbox to clients.
On connect, every client is force-joined into #perlmonkscb. List of /NAMES or /WHOIS, /WHO etc. don't work.
Note: Some clients (e.g. Konversation) detect the lag by /MSGing themselves. This, obviously, won't work. Other clients (irssi) use the supported PING command.
The parsing work is done by XML::Simple, POE is responsible for the networking stuff.
SprintPCS camera phone to Perlmonks Monkpics
on Jun 03, 2004 at 17:32 UTC
by diotalevi

This program is intended to be used as a procmail filter. It accepts e-mail from the internet, finds the SprintPCS Picture Share and uploads the first picture it finds as your monkpic. The program requires a small amount configuration - you must add a line after the __DATA__ marker to indicate the e-mail address to expect messages from and then your username and password. This is designed to allow multiple users to be served by the same script so if you can't run this locally I can be a gateway for you. Send me a message if you're interested.

The image fetching portion of the code is separated from the image uploading portion so someone could rewrite it for the other services as well.


# Add to your .procmailrc

PMDIR=$HOME/.procmail
INCLUDERC=$PMDIR/rc.picturemail

# Add to your .procmail/rc.picturemail

:0:
* pcs2pm@grenekatz.org
|/home/josh/bin/pmail
Scratchpad poster, new edition
on Jun 03, 2004 at 15:45 UTC
by saskaqueer
An update to the wonderful script posted by jeffa. This script brings the older one up to date with the new scratchpad system. I also fixed the "login error" detection to hopefully make it less error prone. I added a 'public' option to enable a simple switch to make any content posted to the scratchpad public or private.
katterbox
on Mar 22, 2004 at 21:29 UTC
by exussum0
Intended initially as a newer "the new java chatterbox client" client, it will expand into retrieving private messages as browsing discussion nodes.

Requires java 1.4.x and is easily installable via Java Web Start.

Frontpage staleness detector
on Mar 17, 2004 at 16:50 UTC
by diotalevi

This fetches the front page, does a quick guess at which nodes are questions and produces a histogram of the dates and how many nodes there are from each. I use it to check when the page is getting old and people aren't front-paging enough.

It'd be nicer if someone else were to package this into a CGI (remember to use a cache) and give us all a link. Or better yet... have to auto /msg people or tell the CB or something.

Simple tool for making HTML blockquotes from text selections
on Dec 14, 2003 at 10:57 UTC
by Intrepid

This is "pmnodecomp-blockquoter", and if you can say that 5 times and still chew salt-water taffy afterwards you get a prize. It's a helper for working in a Xterm shell and composing node text for posts here on Perlmonks. If you are replying to an existing node and wish to cite a brief part of what a previous poster has written, you may like to do so using a style that embraces the quote text in <blockquote> tags. This makes it visually stand out as being text attributable to another poster than yourself.

Related Links:

A cryptographically signed copy of the latest release of the program may also be obtained at the site:
here.


Update:

Now does what theorbtwo's reply and bart's reply wanted it to do. Also fixed a few other flaws. We now have a plugin-ready script that users can invent their own transmutations for.

Also the example shown below ought to be something like this instead (but see later at Second Update for an even better plan):


Then I switch to a text term (Xterm) and type:
$ pmnodecomp-blockquote <<'NOPOL8N'
which waits for me to paste the X cutbuffer / clipboard selection at the prompt.
Thanks to merlyn for the righteous slap that dispels brain-fevered idiocy like a bucket of icewater on a pair of amorous mutts.
use PerlMonksFacts;
on Sep 30, 2003 at 23:49 UTC
by Aristotle

NAME

PerlMonksFacts - codified knowledge about the automation interfaces of PerlMonks.org


SYNOPSIS

 use PerlMonksFacts;
 use URI;
 my $uri = URI->new(pm_url);
 $uri->query_form(pm_ticker xp => 'Aristotle');
 print $uri->as_string, "\n";

DESCRIPTION

This module abstracts working with the PerlMonks.org automation interfaces. The main purpose is to put PerlMonks.org ticker URL generation in a blackbox. As such, the main point of the module is the pm_ticker function.

Since this module is intended to be as abstract as possible, the pm_ticker and pm_url functions return raw key/value pairs. Their actual use is up to you; see the SYNOPSIS for an example of building a URI suitable for use in a HTTP GET request from them.


INTERFACE

%pm_nodetype

This hash contains a mapping of PerlMonks.org-internal node type names to human readable versions. It is mostly cribbed from the code of the live Super Search page of PerlMonks.org.

&pm_ticker

This function takes the name of a ticker and possibly parameters for it and returns a list of key/value pairs for URL construction. The following ticker names are recognized:

nn, newest nodes xml generator
Takes one parameter - a perlfunc/time style timestamp.
xp, XP xml ticker
Optionally takes one parameter - a user name or user homenode ID for whose XP should be tracked.
cb, chatterbox xml ticker
No parameters.
msg, private message xml ticker
No parameters.
users, other users xml ticker
No parameters.
query, node query xml generator
Takes any number of parameters, which should be node IDs for the nodes to query.
usernodes, user nodes info xml generator
Takes one parameter: the user whose nodes are to be returned.
thread, xml node thread
No parameters.

&pm_login

This function takes a username and password as parameters and returns a list of key/value pairs for URL construction.

&pm_time2unix

This function takes a timestamp in the format used in PerlMonks-generated XML and returns a perlfunc/time style timestamp.


BUGS

&pm_ticker does not yet implement the types parameter nor the days parameter to the newest nodes ticker.


AUTHOR

Aristotle Pagaltzis pagaltzis@gmx.de


LICENSE

This software is in the public domain. It is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.

Janitors' Tools - Bulk node retitler
on Jul 16, 2003 at 17:31 UTC
by Corion

From time to time, a janitor has to clean up a thread where the original poster chose a bad title for his question. If the janitor is too late, there are many nodes to retitle. This WWW::Mechanize script automates this process.

Of course, this script will only work, if you are a janitor, and it will break horribly if the PerlMonks HTML changes enough.

Update: castaway noted that the retitler broke due to recent changes in how internal links are done. The current version fixes that.

Producing an xearth markerfile from monk location tags
on Mar 18, 2003 at 16:19 UTC
by davis

Note: This is fairly similar in idea to OeufMayo's drawmap.pl, but it's a different approach. I don't think that it suffers from the "negative zero" bug that jcwren's code did (and perhaps still does)

I'm sat in an office with no external windows and spookily flat lighting. I decided to run xearth to give me some idea of the sun's position. Like a good geek, I put my location into the xearth markerfile, and carried on with my day.

A little while later, remembering the location tags that monks can put on their homenodes (documented here ), I thought it might be interesting to put some other monks on the map. Besides, it seemed like a good opportunity to use LWP::Simple and XML::Simple.

Caveats: The code's a dirty hack:

  • This code doesn't use HTML parsing modules to extract the HTML comment containing the location information. It splits based on newlines, and then uses a few regexen to extract the information. This is one of many Wrong Ways to do it, but I'm not really trying to parse, just extract one bit of info.
  • It uses Text::Table to output the text in a pretty-printed text table. You could change easily if you don't have this module.

Usage: Put your desired monks in the @monks array, then run the code. You probably want to append the output to your xearth markerfile. Note that this should also work for xplanet, the much prettier xearth alternative.

Fixed broken '/strong' tag - dvergin 2003-03-18

Check for recent replies to your posts
on Jan 27, 2003 at 16:55 UTC
by jdporter
In response to castaway's idea for a 'My Active Nodes' nodelet, I have written a console-based solution using my PerlMonksTickers module. It is a working example. You can use it as is, or enhance it to meet your particular needs. Run it with no arguments to get a usage statement. It does not require a PerlMonks login.
Node XML to HTML
on Dec 17, 2002 at 00:21 UTC
by jeffa
This little CGI script uses XML::LibXML and XML::LibXSLT to transform a node (fetched in XML display mode via LWP::Simple) from XML to HTML. This script is not necessarily meant to replace the print display mode, but instead as an example of how to use XSLT with Perl to transform XML to HTML.

The HTML::Entities module is used in the final step to decode the entities in the node content. More work could be done here like linking PM shortcuts ([id://], [cpan://], etc.), but since we already have a functioning print mode for nodes, why bother? :) This is simply here as a reference for further exploration. (it doesn't even work well on this type of node - Code Catecombs).

The XSL stylesheet is included in the DATA section, feel free to cut and paste it into it's own file.

UPDATE: added a default node per PodMaster's request.

cbhistory
on Dec 15, 2002 at 18:08 UTC
by pfaut

Like cblast35, keeps a history of messages that go through the chatterbox. This one uses a database (postgresql) to store the messages instead of a DB file. It keeps the last hour's worth of messages.

Try it at http://nbpfaus.net/~pfau/cbhistory.cgi.

Playing with PerlMonks site (1) - Copy a CODE without the '+'
on Jul 26, 2002 at 07:43 UTC
by gmpassos
The '+' used to split big lines inside CODE are very usefull to reade in the browser, but to copy the CODE and test not! Just point to a node and it will return all the codes of the page without '+'.
Playing with PerlMonks site (0) - See what user was more active
on Jul 25, 2002 at 06:31 UTC
by gmpassos
Let's play with the PerlMonks site (code 0). This code get the page "Newest Nodes", see what users have posted, count the number of nodes, and show a list of user by activity.
New Nodes by Day of Week
on Dec 03, 2001 at 11:12 UTC
by blakem
The third in a series... Plots the nodes per hour broken out by day of the week. In the sample output below, the labels need a bit of explaining. In order to keep the order correct in Text::BarGraph I had to choose some slightly confusing labels. The first digit is the day (1-7 => mon-sun) the last two are the hour (00-23) So, the label '216' means 16:00 (4pm) on Tuesday. The output below is based on data for the past 6 months.

The large dropoff over the weekend is tough to miss......

Plot Your Nodes by Hour
on Nov 30, 2001 at 02:54 UTC
by blakem
Displays a bargraph of *your* nodes per hour. Similiar to the previous one, but parses a different XML feed and shows data about all the nodes you have personally posted.

(telling observation: I have yet to post a node during the 9am-10am slot....)

Perlmonks Nodes Per Hour
on Nov 29, 2001 at 13:49 UTC
by blakem
Displays new nodes per hour as a bargraph (see the sample output in the code below). Its quick and dirty, so there isn't much thats customizable. It will need your user/pass combo to make the XML feeds work, though. The sample output is in Pacific time but the script will recognize your own localtime settings.

Update: slight pod tweak for the podmaster
Update2: added second sample output based on a full month of data

pm - a quick and dirty perlmonks command line searching and reference hack
on Sep 26, 2001 at 22:24 UTC
by cider
pm is a quick and dirty generic hacked frontend to everything2 styled databases, suitable immeadiately for searching and reference usage with perlmonks.org and everything2.com related sites, accepts -dump and -random parameters hackishly, could easily be turned into a /usr/games/fortune replacement for a screensaver (xlock -mode marquee) of random perlmonks/everything2 nodes with a little output hacking. Happy hacking.
cblast35
on Aug 07, 2001 at 14:18 UTC
by crazyinsomniac
Well it keeps a DB_File of the last 35 messages uttered in the cb, so if you walk in on something I<interesting>, you can catch up without saying: "what are you guys talking about?"

It actually is two scripts (well three if you're cronless), cblast35.pl -- which is to be run cron style to update the "database", and cblast35.cgi -- which just displays the messages via CGI.

You can also download everything from my website here

update: A call for cblast35 mirrors has yielded three quite a few mirrors, jay!!!

Thanks blakem,Chady,jeffa ;)
XPBot -- check your XP on IRC
on Aug 25, 2002 at 14:53 UTC
by LTjake
Now, I know that jcwren has an excellent bot that does this and much more. After making this reply, i decided to mess with Net::IRC. Why not make a quick XP checker? So, here is the result of my few hours of messing around. It's fun for about 5 minutes, then it starts to be annnoying. :)

You can kick it, but it will just rejoin - unless you use the trigger text. Of course, someone can just invite it back. So, if need be, just ban it. :)

It accepts the command "get_xp username" (leaving out the username will use your nick instead) via the channel and /msg.
Perlmonks Age Stats
on Aug 05, 2002 at 05:37 UTC
by rattusillegitimus

A little while back in the CB, someone (forgive me, I have forgotten who), mentioned it would be interesting to see the age distribution of those monks who have reported their ages for the PerlMonks Stats Pages. So I decided to take a stab at generating such stats.

The script currently pulls up the upcoming birthdays page and scrapes the age information out, then outputs the requested file format (HTML or PNG). A future version might pull XML data from the server instead when it is available.

Examples: HTML Output, Summary Graph, Detail Graph.

Update: T'was dada that proposed the age stats in the CB. Thanks for the reminder ;)
Changed PDF to PNG in the comments.

Scratchpad Poster
on Jul 04, 2002 at 05:33 UTC
by jeffa
This script will upload a file and replace your scratch pad with the contents of that file. Options are included to append and prepend instead of clobbering, and to download your existing scratch pad for backup purposes. See POD for more details.

Update: Ack! Looks like ar0n beat me to this almost a whole year ago: hup - home node updater. Thanks for pointing this out ybiC, and don't blame me - blame ar0n! :D

PerlMonks::StatsWhore
on May 16, 2002 at 21:17 UTC
by mojotoad
Three Scripts for the Acolytes under the sky,
seven for the Friar-lords in their halls of stone,
nine for Mortal Bishops doomed to die,
one for the Dark Saint on his dark throne
in the Land of Monkwhore where the Black Stats lie.
One Mod to rule them all,
one Mod to find them,
one Mod to bring them all
and in the darkness bind them
in the Land of Monkwhore where the Black Stats lie.

A module that encapsulates behavior and code from jcwren's statswhore.pl and xstatswhore.pl, plus aspects from luke_repwalker.pl, and xluke_repwalker.pl. Also included is the histogram code by larryl.

I started playing with the scripts when I noticed that in the early versions jcwren had experienced problems using my HTML::TableExtract module. The later versions of each script instead use the XML ticker and XML::Twig module, an understandable choice given the circumstances. Nevertheless I started investigating what the original problems were with HTML::TableExtract. As it turns out, these problems have since gone away: perlmonks has a different query interface and results format for writeups via HTML, plus there are later versions of HTML::TableExtract that greatly assist in extracting HTML from the tables in question (as opposed to the traditional role of extracting tables from the HTML in question). These developments negate the need for hoop gymnastics and inheritance hell that jcwren had been forced into.

The XML interface is far quicker, but apparently not all people wish to install the associated XML modules and libraries.

This module incorporates both query methods, XML as well as HTML. The default is XML, but this behavior can be changed via the mode parameter.

If you have XML parsing problems with non UTF-8 encodings in your titles, then simply set the mode to HTML.

Behind a proxy server? Set your http_proxy environment variable to the URL of your proxy server.

See the POD for more information. Thanks to jcwren and larryl for the original code.

Basic usage:

#!/usr/bin/perl use PerlMonks::StatsWhore; $sw = PerlMonks::StatsWhore->new( user => 'username', password => 'password', ); print $sw->summary_as_string;

Check out the code if you're interested in inheritance and polymorphism.

Matt

Updates thus far:

  • POD fix per Biker's suggestion
  • Added $VERSION info. For gawd's sake we might as well attempt to approach the book keeping abilities of CPAN.
  • Added reminder of motivation for XML barfing on non "standard" characters (forget Latin-2) in node titles thanks to another nudge from the ever-testing Biker.
(code) Xp2v.pm
on May 05, 2002 at 16:23 UTC
by ybiC

A Perl extension to check PM experience points before a given PerlMonk reaches 'level vroom'.   Handy for monks of the Saint(10)ly persuasion.   Works fine as is, but substantial changes are in the works.

You can peruse all the supporting files initially generated by h2xs here, plus there's a tarball of the whole shebang.

(as this is my first serious-to-completion-of-working-code module writing effort, I'd particularly welcome any and all criticism, complaints, rotton fruit, or even constructive suggestions)

Node Tracker
on Mar 31, 2002 at 05:11 UTC
by smgfc

A simple little program that will keep a log of any changes to the title, id, or rep of your nodes, including the addition or deletion of said nodes.

2002-03-31 Edit by the node bunny : Changed login and password.

Run and/or download code directly from perlmonk nodes.
on Mar 24, 2002 at 02:08 UTC
by Dog and Pony
Tired of copy/paste, save and then execute obfuscations, poetry or other code from interesting nodes? This small command line utility will do it for you. By default it takes the code from a node and simply evals it, but it can also download a copy with or without executing it. It uses LWP::Simple for the fetching. Use the option '-h' and read the embedded comments for more info.

Please read the warnings about possible dangers. Do not simply execute any code/node you have reason to distrust, but that of course goes for manual downloads as well. This does work well for just downloading too though, if you just want to poke around in a script. :)

Update: The provided patch by Amoe has been applied. My way worked for me on Win2k, cygwin and FreeBSD, so I lazied out on this one. :) Thanks Amoe!

Update 2: Suggestion 2 by belg4mit should be working now: Using the -d option for deparsing instead of executing should now work. Note that in-memory-deparsing uses a new feauture (v5.6.1?) in B::Deparse that won't work with older perls. Use together with -M or -F instead.

msgmail.pl
on Feb 20, 2002 at 03:33 UTC
by zdog
This script checks to see if you have received any /msg's, emails them to you, and then provides an interface to handle replies (at least it's supposed to). When you get such an email, all you do is hit reply (making sure that the info within the brackets is still in the subject), type in your msg, and hit send. In order to set it up, you need a Un*x system running an SMTP server (at least I think you do). You run this script as a daemon using root and whoever wants to take advantage of the service just creates a configuration file in their home directory in the following form:

pm_username|pm_passwd|email_addy

It's that simple (at least I hope it is).

PerlMonks CSS Examples
on Feb 16, 2002 at 16:36 UTC
by particle
Petrucio recently introduced the capability to apply Cascading Style Sheets (CSS) to PerlMonks, in his We Stylin'! node. Rich36 suggested a node for sample CSS files, and I've taken it upon myself to create a node dedicated to just that. although it cannot be linked directly to user pages, it should serve as a repository for everyone's creations.

my example is below... please feel free to add your own.

download code from scratchpad
on Dec 28, 2001 at 10:39 UTC
by crazyinsomniac
If you've ever been to scratch pad viewer and you've wanted to download some code from somebody's scratchpad, you've noticed there is no "d/l code link". It turns out, if you use my script, you don't need it.
 %>perl scratchcode.pl monkname

update: Tue Apr 2 10:37:58 2002 GMT ~ changed off trigger due to Petruchio

update: Fri May 24 11:19:30 2002 GMT ~ &quot; as added, so gots to take it out (and also added a \n remove, jeez, i'm gonna make this obsolete soon ~ and &amp; ~ i hope the goods see pmdev wiki soon)

update: Fri Jan 17 05:31:13 2003 GMT -- more changes, more fixes.

Node Bookmark Lister
on Dec 01, 2001 at 22:58 UTC
by jeffa
UPDATE
With the new changes to the way HTML is rendered in titles, this idea is now A Bad Thing To Do ™. Please disregard this post and just think of it as a fossil. :P

A cool feature about your posts is the fact that you can put HTML comments in the title of your post. Armed with this feature, it is possible to put 'category markers' in your node titles and use a script to find them and make a nice list of your favorite nodes.

The following code will do just that, the demo is on my home node. All you need to do is mark your favorite nodes by hand with something like <!--code--> or <!--obfu-->. Well that's how i did it before i saw jcwren's Bulk Node Title Editor.

The side effect is that you have to link directly to a node's id instead of it's name when referring to it in other posts, chatbox, etc. But that's okay, you use id tags, don't you? Hey Rocko! Ask 'em if they use id tags!

Feel free to send comments and suggestions to crazyinsomniac! :D

UPDATE: - after gleaming good security info from jcwren, i changed this script to accept an interactive password similiar to how mysql asks for passwords: you can specify the password on the command line with the -p option (dangerous for mulit-user boxes), or you can just specify -p by itself and be prompted for the password. I use Term::ReadKey to keep the password 'invisible'.

Bulk Node Title Editor
on Dec 01, 2001 at 04:59 UTC
by jcwren
Allows bulk editing of user's node titles. Useful when going back and 'kudratizing' titles (see Suggestion for post-naming convention).
Home Node Image Rotator
on Nov 27, 2001 at 22:26 UTC
by jcwren

Implements automatic updating of home node image, after so many hits on the home node. Uses a "bug" script (included) to detect hits, and this piece to automatically uploaded a new image after so many hits.

Please read the section on SECURITY and the rest of the documentation before using. Requires some responsibility on the part of the user.

Graph displaying reputation of all your nodes
on Oct 22, 2001 at 18:56 UTC
by tomhukins
Converts output from quickrep.pl into a PNG bar chart to show how many of your nodes have a given reputation.
Personal Nodelet Restorer
on Sep 19, 2001 at 22:24 UTC
by $code or die
This script does the reverse of jeffa's Personal Nodelet Extractor. It is also, mainly his code - so don't bother upvoting this node.

I have needed to re-input all my personal nodelets twice in the last week because I have updated my sig. See this message for more info. This will save me a good 20 minutes next time I have to do it! I need to do some nodelet housekeeping when I have time.

Update: Nov 15 2001 Added modifypn=>'on' to the POST. Also modify and uncomment the line with $ua->proxy if you need it. Thanks ybiC!
Quickrep
on Sep 10, 2001 at 18:27 UTC
by patgas

Quickly check changes in your Perl Monks nodes' reputations. It will list all of your nodes, sorted by reputation in descending order, with any changes since the last time you ran Quickrep.

hup - home node updater
on Jul 21, 2001 at 18:46 UTC
by ar0n

hup is a home node updater. You can use it on the command line, or from a crontab, to automate updating your homenode. As always, suggestions welcome.

Updates

  • 2001-11-14 -- Added scratchpad support, courtesy of thatguy.
  • 2002-01-19 -- Miscellaneous fixes. No longer warns when certain fields are empty; prompts for username and password

xml_pimp
on Jul 19, 2001 at 13:20 UTC
by crazyinsomniac

xml_pimp.pl - You heard of statswhore? You heard (x)luke_repwalker? Well dis da pimp!

For more information, read the pod below, or an html version at http://crazyinsomniac.perlmonk.org/perl/xml_pimp/ along with pictures ;-)(that's clemburg on there)

Like always, no comments are welcome(now that's what I call sarcasm ;-))

updates:
July 20, 2001 - minor cosmetic changes;
July 21, 2001 - updated some pod (a blah... got by me)
July 27, 2001 - changed sort keys to sort {$a<=>$b> keys(print_HISTORY for -h1)
September 26, 2001 - added &ticker=yes (details: New ticker login for PM XML clients)
Sun Jan 13 21:11:13 2002 GMT - fixed serious bug nobody told me about, which I was unaware of due to my testing environment. I guess the good thing is i'm the only one using this ;)(or I lost the original posted version which worked)

drawmap.pl
on Jun 19, 2001 at 18:10 UTC
by OeufMayo
see node drawmap.pl - Spot The Monk! - The code is posted here just for ease of use and update. (no need to vote on this, got enough XP with the first one!)
CGI Script for Reading Newest Nodes
on Jun 14, 2001 at 01:08 UTC
by voyager
This script fetches the XML version of Newest Nodes and creates a page similar to the Newest Nodes page. With this script you can control which sections show up and in what order.
Code Catacombs Auto-Updat Example
on Jun 11, 2001 at 05:06 UTC
by mr.nick
This is just an example script

I frequently update my pmchat script and have found that updating my node for it is quite a pain in the *ss. To simplify the experience, I wrote the following script that is called from my Makefile (when my script changes) and automatically updates its node under Code Catecombs.

This script WILL NOT work for you without modification. I hestitated to post it here in its form, but decided that it was probably worth the educational experience.

Note: the script draws from the cookie file that is created by my pmchat script for authentication.

Personal Nodelet Extractor
on Jun 05, 2001 at 23:44 UTC
by jeffa
Is your Personal Nodelet getting too big? Mine sure is was. So, I wrote this little bot to parse my Personal Nodelet and output the nodes in the form of: id [delimiter] name. Once the data is in an easy (and fast) form to parse, you can use another script to edit it, munge it some more - or you can modify this script to reflect your needs.

Also, check out Personal Nodelet Restorer.

Comments and improvements always welcome. :)

Fixes:
thanks to crazyinsomniac PodMaster for pointing out my lack of Win32 support in the synopsis

UPDATE: - after gleaming good security info from jcwren, i changed this script to accept an interactive password similiar to how mysql asks for passwords: you can specify the password on the command line with the -p option (dangerous for mulit-user boxes), or you can just specify -p by itself and be prompted for the password. I use Term::ReadKey to keep the password 'invisible'. Because of the new nature, be sure and specify -p last, after -u and -s if used.

UPDATE (Mar 24,2002): - somebody moved 'lastnode' before 'node' so regex has been updated

pmchat
on Jun 03, 2001 at 19:28 UTC
by mr.nick
A text-mode client for the Chatterbox.

Main features:

  • Colorized output via ANSI escape sequences
  • Compatible with both *nix and Win32 (mostly :)
  • Displays most recent New Nodes
  • Can launch a browser to view a node
  • Check for and autoinstall updates
  • An "Away" mode for not being in "Other Users"
  • Uses the various XML Generators of PerlMonks
  • Tracks XP status
  • Tracks Reputation of your nodes (and displays WHICH nodes have changed -- and by how much)
  • Requires NO configuration, download and run!
  • Displays Other Users
  • User configurable options (inside Pmchat) for
    • Time-stamping each message (for long-term running)
    • Turn off/on colorization
    • Number of New Nodes listed
    • Which browser to use for node viewing
    • Update on Launch
    • Seconds between polls for new messages (n/a on Windows)
    • Debugging mode. No output is sent to Perlmonks
    • Log file. Keeps a log of all messages. Set "logfile" to the desired filename. To stop, set "logfile" to "0" or "none".

Because pmchat is a text-mode client, it has the following shortcomings

  • Doesn't render HTML tags
  • Doesn't render special HTML entities (eg: &amp;)
WebFetch::PerlMonks
on Jun 02, 2001 at 08:13 UTC
by zdog
This modules grabs the most recent PerlMonks.org posts using XML::Parser and generates a HTML file containing a list of links to those posts.

By default, the file is written to perlmonks.html. If that file already exists, a backup will be created at Operlmonks.html before the file is overwritten.

I guess you need to have the WebFetch module installed to run this.

Special thanks to :
- OeufMayo for creating the XML::Parser tutorial that helped me create this.
- mirod for helping me with the XML::Parser problem.

Bugfixes:
- xml_char () was altered to read in entire string as mirod suggested
- the tests to return () were moved to xml_end () from xml_start () to keep from reading too many strings into one field

Suggestions please ...

PerlMonks modules 2.0
on Sep 05, 2000 at 10:35 UTC
by ZZamboni
The module formerly known as PerlMonksChat has gone through a major transformation. Because its functionality now includes much more than the chat part of PerlMonks, I have split it into several modules: PerlMonks (base module), PerlMonks::Chat (chat stuff), PerlMonks::Users (users and XP stuff) and PerlMonks::NewestNodes (a threaded interface to the Newest Nodes page).

The code is too large to post it here, so I'll point you to the web page instead.

There are a number of clients that use these modules. Check out my home node for the full list.

Enjoy!

xNN
on May 17, 2001 at 16:03 UTC
by epoptai
xNN is a CGI newest nodes client that sorts nodes by date, author, category, and threads (screenshots). Displays nodes from n days in the past, or fractions of the current day. Saves node data to disk, uses cookies to remember sort mode, and can undo a refresh. Requires XML::Simple

Note: Threaded mode can get dramatically slower as the number of nodes increases, so be prepared to wait when threading more than a few days worth (1000+). Be sure the #! and 3 config variables are correct first.

Also: For some reason xNN is now very very slow checking anything more than 1 day of nodes. Nothing changed in the script which suggests that some change in the XML ticker (or something) is causing it. I'm kind of busy now so the fix will have to wait (unless you figure it out and send me a patch :-)

Code updated: 5.23.2002

reputer
on Apr 04, 2001 at 12:28 UTC
by epoptai
reputer is a perl/cgi that analyzes and displays node reputation and xp data from perlmonks.

Because it's larger than 50k reputer has two nodes on Perlmonks.
This is the source code node in code catacombs.
Please make replies to the reply node.

Also includes proxy support, restricted public access mode,
integration with command line programs and compressed file export.

Update: Fixed possible problem creating data files when first running script.

Voting Booth Nodelet Watcher
on Mar 18, 2001 at 22:46 UTC
by jcwren
This is for people that run around life with the all important voting nodelet turned off. Don't want to be clueless to voting booth content changes? Throw this in a cron job and be clueful.
xluke_repwalker.pl
on Mar 18, 2001 at 04:20 UTC
by jcwren

This is an update of luke_repwalker.pl that uses mirods XML::Twig module. It's faster because it generates few hits to the server. People like tilly should appreciate this... And ultimately it's more reliable, since it doesn't try to parse the tables of article listings.

I posted this as new code so that the old one would still be available. Some people have had trouble installing the various XML modules, or don't wish to.

xstatswhore.pl
on Mar 18, 2001 at 04:16 UTC
by jcwren

xstatswhore.pl is an update of statswhore.pl that uses mirods XML::Twig module, and includes larryls histogram code (if you like the histogram part, be sure to thank him. ++Re: statswhore.pl). This version has the advantage of being faster by generating fewer hits to the server, and fixing the problem of having exactly a multiple of 50 nodes. And the histogram part is really cool..

I posted this as new code so that the old one would still be available. Some people have had trouble installing the various XML modules, or don't wish to.

framechat
on Mar 12, 2001 at 19:37 UTC
by epoptai
framechat is a Perl/CGI XML CB client modeled on the chatterbox frameset at perlmonks. Includes message inbox, private chat, history, xp nodelet, rep change tracker, new nodes ticker, links to vital nodes and more.

To use just fill in the configuration variables (first!) and call it from your local web server.

functions include:

- emulates perlmonks chatterbox linking standards
- integrated message inbox with cc to self option
- new nodes ticker
- rep change ticker with history
- extract and display $NORM
- textarea input for editing extended messages
- large messages chunked for multiple send
- super search form with perldoc, cpan, google and babelfish
- launchpad for accessing your favorite search engines

Run it and select help for more info.

WARNING: Client authentication makes framechat more secure but exercise caution. Do not allow public access to your installation of framechat!

New in 2.0

  • New nodes ticker!
  • Rep change ticker with history!
  • Client login & quit for better security.
  • Create & edit optional external config file.
  • Tools control panel to see & set parameters.
  • /ignore and /unignore and see who's being ignored.
  • /logout and /login implemented.
    • Not in the userlist but still see chat.
    • All links to perlmonks become logged out.
    • History still functions if enabled.
    • Logout disables node title lookup.

    Improved:

  • Faster thanks to less print statements.
  • More robust error handling (esp. xml parsing).
  • XP nodelet now shows xp gain and loss messages (Ack!)
  • inbox/launchpad/newnode frame can remember state.
  • Notes added to update notification.

    Fixed in 2.0:

  • Bug in link parser that caused italic history after an unclosed i tag.
  • Last \$norm should now appear when code updated.
  • Code is less redundant and more readable.

    Fixed in 2.01:

  • A new node with 0 rep showed +0 change (a printf feature).
  • New nodes and check update didn't work if proxy in use.
  • New nodes loadtime was 1 second off.

    Fixed in 2.02:

  • Empty document error if history file for present day didn't exist.
  • IIS breakage addressed with a new config var: $broken.
  • Change to talk frame enables submit with Tab+Enter sequence (thanks grinder).
  • <i> tags would italicize cb text, oops.
  • Rep related data files now 50% smaller.
  • Added config file syntax status feedback and warnings.
  • Improved the help and tools sections.
  • NEW: Node rep history graph!

    Fixed in 2.03:

  • control chrs in chat xml not being stripped due to missing /d modifier on tr in sub fixxml.
  • client authentication erroneously succeeded if username and password not defined.

    Fixed in 2.04:

  • Repaired the chat frame and norm parser to conform with changes at perlmonks.
  • Added support for the latest shortcut tags: pad, kobe, jargon, perldoc. If you use an external config file these need to be added to the @tags array so they appear in the pulldown menu in the input frame, as well as a few items added to the %launch_urls hash.

To run framechat under mod_perl use OeufMayo's mod_perl patch.

repviewer
on Feb 04, 2001 at 18:45 UTC
by epoptai
repviewer parses the reputation file generated by jcwren's luke_repwalker.pl to generate a full list of your articles sorted by creation time, title or reputation just like perlmonks user search except that all articles are displayed on one page. Just set $pm and $rep.
Perlmonks Navigator
on Mar 18, 2001 at 05:46 UTC
by tilly
First, while this is useful and Perlmonks related, it isn't Perl. It is JavaScript.

d/l the code, and save the two pieces marked with ##filename=foo.html## as what the name is supposed to be. Be sure cookies and JavaScript are on. Then point your browser at perlmonks.html, and try it out.

With this, this morning I was able to walk through every post for several days worth of PerlMonks in just a few hours. Most of that time was spent writing up responses. With this I can follow the whole site with less energy than it would take to hit a reasonable portion of it through using Newest Nodes.

Update
Clearly my cookie handling in JavaScript sucks. Oh well, I don't like either cookies or JavaScript, so I guess that was my internal bias showing. :-) Now fixed.

monkyack.pl
on Apr 11, 2001 at 23:22 UTC
by jcwren

Hear monks talk! Listen to your favorite monks battle it out in the chatterbox, as streaming audio! Make your co-workers think you're a basket case!

This script delivers the chatterbox as MP3 encoded streaming audio. It uses the festival/MBROLA text-to-speech (TTS) system to create the audio on the fly.

Homenode Updater
on Sep 28, 2000 at 07:18 UTC
by jcwren
Designed to insert SETI@Home statistics into a users homenode, but easily modifiable for other tasks. See comments in code.
seeker watch
on Sep 14, 2000 at 02:13 UTC
by vladdrak
Checks perlmonks at a defined interval for new seeker posts and notifies when found. Since I'm on a Windows box primarily now, it plays a .wav. Season to taste.
Monktalk
on Jun 01, 2000 at 21:53 UTC
by httptech
Speech interface to chatterbox, using festival server for the text-to-speech processing. You need to have the festival daemon running and install the Speech::Festival module.

Since it's based on ZZamboni's Chatterbox Client you will need to download his module as well.

PerlMonks pager
on Sep 10, 2000 at 21:51 UTC
by ZZamboni
I was thinking about this program during Friday, but it was a message from Adam that prompted me into action :-)

This program gets your personal messages from PerlMonks and displays or mails them to you. It can optionally check them off automatically. Typical use would be in a crontab entry like this:

0 * * * * $HOME/bin/pmpager.pl -m your@address.com
To have it check every hour. It keeps a cache, so that every message is only displayed once. If you give it the -i option, it ignores the cache, and shows all the personal messages that you have. The -c option makes it automatically check off all the messages it displays.

This program is also part of the PerlMonksChat distribution.

Perl/Tk Newest Nodes Client
on Sep 07, 2000 at 01:02 UTC
by Shendal
Uses zzamboni's PerlMonks.pm 2.0 to check newest nodes and put them in a graphical tree format.
Features:
- Tree format (expand/collapse)
- Colorization
- Launch browser by double clicking
- User preferences are saved
- Uses existing browser window, if available
Perl/Tk Chatterbox Client
on Jul 13, 2000 at 00:33 UTC
by Shendal
GUI Chatterbox client that works on NT and UNIX that makes use of Tk and zzamboni's PerlMonksChat module.

Notable features:
- Native look and feel on UNIX and NT
- GUI username/password changing
- Userlist and XP progress bar
- Text colorization
- Checkoff of private messages
- Separate server process to talk to website to alleviate gui locks
- Clickable links that will launch an external, user definable browser
- Double-clicking userlist will launch browser to user's perlmonks home node
- Colors are customizable and persistent
- Auto name completion -- just type part of a username that's currently lurking, and hit tab
- Msg button to message currently selected user
- Control-return to send message to currently selected user
- Resizable window
- Support for HREF & CODE tags
- Support for html characters
- Colorize user's name
- Bad commands can be suppressed by option (eliminating the /msh, if you want to)
- New: Uses browser that's already open if available

Users may note that this code started as a Win32::GUI program. I have sinced ported to Tk for portability and performance.

Personal PerlMonks Stats plot creator
on Jul 31, 2000 at 10:47 UTC
by ase
Here's my contribution to statistics nuts like myself.
This utility Logs in to Perlmonks (using ZZamboni's PerlmonksChat module), gets your writeup page and creates 3 plots from the data, which are ftp'd to a server of your choice.
I run it every few days to update the graphs. All modules besides PerlMonksChat.pm are available at CPAN. See my home node for an example of the results.

Update: I no longer post the graphs on my home node. The updated code given in the replies to this node is more modern. Thanks to everyone for the kind comments I received when I first wrote this.

statswhore.pl
on Aug 04, 2000 at 08:18 UTC
by jcwren
Extracts a users total writeups, and total repuration, along with min, max, and average. Account and password can be embedded into the program, or supplied on the command line
luke_repwalker.pl
on Aug 06, 2000 at 05:50 UTC
by jcwren
This little script allows you to monitor changes to the reputation of your articles. It can produce a full report, a brief report, and/or the report from statswhore.pl. The output can be displayed to the console, e-mailed, or both. The output is designed to be parsable, in case you have other plans for it. The snapshot file is a CSV file that is directly importable into Excel or StarOffice spreadsheets. Parameters can either be specified on the command line, or patched into the script, near the top. For the paranoid, the -P allows prompting of your password from STDIN.

I believe I've tested all the permutations, and interactions, and had no problems. I don't expect this to last.

You may notice that the article counts differ from your homenode. vroom swears this will be fixed in 0.9 of E2. It has to do with where articles are credited for Q&A's. The articles checked for rep are the ones that actually appear when you click the writeups count on your homenode display.

If you have any problems, questions, or suggestion, please let me know.

Updated 2000/09/02: I found a problem when there is an even multiple of 50 articles (the number of writeups displayed on a page). This release fixes that, and also adds mySQL DBI support so you can log all your changes to a database table (yes, the account and password for the DB is in the code, not a command line parameter. Oh well, maybe 1.00.40?). Note that if you're a statswhore.pl user, that code has not yet been patched to solve the 50's multiple problem.

-Chris