This is a pair of scripts to generate the main namespace and all namespaces lists at WP:1000 given a csv file with the raw data (edit counts per user). Depending on your OS, you might need to replace awk with nawk.
Rick Block (talk) 20:34, July 23, 2005 (UTC)
Main namespace script
edit#!/bin/bash # $1 is the current csv file # $2 is the output from the last time (used for positional delta) cat $1 | grep "^en,[0-9][0-9][0-9]" | sort -r -n -t',' +1 | cat $2 - | awk ' BEGIN { bot["Rambot"] = 1; bot["D6"] = 1; bot["Template namespace initialisation script"] = 1; bot["CanisRufus"] = 1; bot["Robbot"] = 1; bot["Conversion script"] = 1; bot["Guanabot"] = 1; bot["Nobot"] = 1; bot["Grammarbot"] = 1; bot["Wikibot"] = 1; bot["HasharBot"] = 1; bot["Snobot"] = 1; bot["NetBot"] = 1; bot["FlaBot"] = 1; bot["JdforresterBot"] = 1; bot["Pearle"] = 1; somebot["Ram-Man"] = 1; somebot["KevinBot"] = 1; somebot["Timwi"] = 1; pad=" "; count=1; FS=","; } /<TR>/ { split($0,fields,"<|>|]|\\[|:|\\|"); sub(" ","",fields[5]); # print " f1=" fields[1] " f2=" fields[2] " f3=" fields[3] " f4=" fields[4] " f5=" fields[5] " f6=" fields[6] " f7=" fields[7] " f8=" fields[8] " f9=" fields[9] " f10=" fields[10] # fields[5] is position # fields[8] is username if (fields[5] != "") { prevpos[fields[8]] = int(fields[5]); } } /^en/ { # $1 is language # $2 is mainspace edits # $3 is mainspace recent edits # $4 is non-mainspace edits # $5 is non-mainspace recent edits # $6 is current position (unused) # $7 is previous position (unused) # $8 is user if (bot[$8] == 1) { print "<TR><TD><font color=\"gray\">[[User:" $8 "|" $8 "]]</font></TD><TD align=right>" $2 "</TD><TD align=right>" $3 pad "</TD><TD> </TD></TR>" } else { if ( prevpos[$8] == "" ) { poschg="<font color=\"green\">new</font>" } else if (count == prevpos[$8]) { poschg="–" } else if (count < prevpos[$8]) { chg=prevpos[$8] - count poschg="<font color=\"green\">↑ " chg "</font>" } else { chg=count - prevpos[$8] poschg="<font color=\"red\">↓ " chg "</font>" } somebotchgs=""; if (somebot[$8] == 1) { somebotchgs="†" } print "<TR><TD>" count " [[User:" $8 "|" $8 "]]" somebotchgs "</TD><TD align=right>" $2 "</TD><TD align=right>" $3 pad "</TD><TD>" poschg "</TD></TR>" count=count + 1 if (count >= 1001) exit } } '
All namespaces script
edit#!/bin/bash # $1 is the current csv file cat $1 | grep "^en,[0-9][0-9][0-9]" | awk ' BEGIN { FS="," } { total = $2 + $4 totalrecent = $3 + $5 if (total > 1000) { print total "," totalrecent "," $8 } }' | sort -r -n -t',' | awk ' BEGIN { bot["Rambot"] = 1; bot["D6"] = 1; bot["Template namespace initialisation script"] = 1; bot["CanisRufus"] = 1; bot["Robbot"] = 1; bot["Conversion script"] = 1; bot["Guanabot"] = 1; bot["Nobot"] = 1; bot["Grammarbot"] = 1; bot["Wikibot"] = 1; bot["HasharBot"] = 1; bot["Snobot"] = 1; bot["NetBot"] = 1; bot["FlaBot"] = 1; bot["JdforresterBot"] = 1; bot["Pearle"] = 1; somebot["Ram-Man"] = 1; somebot["KevinBot"] = 1; somebot["Timwi"] = 1; pad=" "; count=1; FS=","; } { # $1 is total edits # $2 is recent edits # $3 is user if (bot[$3] == 1) { print "<TR><TD><font color=\"gray\">[[User:" $3 "|" $3 "]]</font></TD><TD align=right>" $1 "</TD><TD align=right>" $2 pad "</TD></TR>" } else { somebotchgs=""; if (somebot[$3] == 1) { somebotchgs="†" } print "<TR><TD>" count " [[User:" $3 "|" $3 "]]" somebotchgs "</TD><TD align=right>" $1 "</TD><TD align=right>" $2 pad "</TD></TR>" count=count + 1 if (count >= 1001) exit } } '