Okay, this is silly, I know - but sometimes I just cannot resist the temptation. Here is an example of useful webscraping: If you meta moderate on slashdot, you get more moderation points.
Okay so maybe it is not very useful. Actually, I don't even use my moderation points. ever.
-- 01Okt2004 PS.
Save the script and give it your username and password.
Usage:
tclsh slashmetamod.tcl ?username ?password??
It will prompt you if you do not provide them on the commandline.
# Slashdot meta moderator. # This script will do your meta moderations for you. package require http # First, log in to slashdot: set username [lindex $argv 0] set password [lindex $argv 1] if { $username eq "" } { puts -nonewline "Username: " flush stdout set username [gets stdin] } if { $password eq "" } { puts -nonewline "Password: " flush stdout set password [gets stdin] } set p 0.8 ;# p=0.8 - 80% of moderations considered 'fair'. puts "Logging into slashdot as $username..." http::config -useragent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)" set q [http::formatQuery unickname $username returnto http://slashdot.org \ op userlogin upasswd $password login_temp yes] set tok [http::geturl http://slashdot.org/login.pl -query $q] upvar \#0 $tok state set cookies [list] foreach {name value} $state(meta) { if { $name eq "Set-Cookie" } { lappend cookies [lindex [split $value {;}] 0] } } http::cleanup $tok puts "Getting posting numbers to metamoderate..." set tok2 [::http::geturl http://slashdot.org/metamod.pl -headers [list Cookie [join $cookies {;}]]] if { [regexp {You are currently not eligible to Meta Moderate} [http::data $tok2]] } { puts "You are currently not eligible to Meta Moderate." exit } set items [regexp -all -inline {<INPUT TYPE="RADIO" NAME="(mm[0-9]*)" VALUE="-">} [http::data $tok2]] http::cleanup $tok2 set q "" foreach {x mm} $items { set fair [expr {rand() <= $p}] if { $fair } { set choice + } else { set choice - } lappend q [http::formatQuery $mm $choice] puts "Posting $mm: $choice" } lappend q [http::formatQuery op MetaModerate] set q [join $q "&"] set tok3 [::http::geturl http://slashdot.org/metamod.pl -query $q -headers [list Cookie [join $cookies {;}]]] if { [regexp {You are currently not eligible to Meta Moderate} [http::data $tok2]] } { puts "MetaModeration failed, slashdot said:" puts "You are currently not eligible to Meta Moderate." exit } puts "MetaModerated."