This is an extension of Flcelloguy's Tool, which processes the HTML from a contribs file and parses it into a file readable by the tool. It is not finished, but the core is done, so I'm publishing it as v1.00.
It won't run, since the functions written by Flcelloguy are temporarily bypassed (visible at main2) to test the extension. All it does is parse the contributions. Titoxd(?!? - did you read this?) 04:21, 8 December 2005 (UTC)
/*Author: Flcelloguy *Program: Flcelloguy's Tool (Stats.java) *Version 2.0; released December 07 2005 *Capabilities: Count edits, break down by namespace, count minor edits and calculate percentage *Please leave this block in. *Code from http://en.wikipedia.org/wiki/User:Flcelloguy/Tool * [[User:Flcelloguy/Tool]] * Permission is granted to distribute freely, provided attribution is granted. * Note: To copy and paste, please click edit first and then highlight all, and then copy. I'm having some formatting issues in the "view" mode. Thanks! */ import javax.swing.JOptionPane; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.StringTokenizer; import java.io.*; import java.util.*; //import java.util.FileReader; public class Stats { private static int numEdits = 0; private static int minorEdits = 0; private static int User = 0; private static int Category = 0; private static int Image_talk= 0; private static int Imagew = 0; private static int MediaWiki_talk = 0; private static int MediaWiki = 0; private static int Talk = 0; private static int Template_talk = 0; private static int Template = 0; private static int User_talk = 0; private static int Wikipedia_talk = 0; private static int Wikipedia = 0; private static int Mainspace = 0; public static void main (String args[]) throws IOException { String inFile$= ""; inFile$ = JOptionPane.showInputDialog("Input file:", inFile$); String outFile$ =""; outFile$ = JOptionPane.showInputDialog("Output file:", outFile$); PurgeContribs(inFile$, outFile$); } public static void main2 (String args[]) throws IOException { JOptionPane.showMessageDialog(null, "Flcelloguy's Tool \n Designed by Flcelloguy \n Statistics for editcounters", "Welcome!", JOptionPane.INFORMATION_MESSAGE); JOptionPane.showMessageDialog(null, "Current status: \n Editcount only \n Coming soon: \n Breakdown by namespace" + "\n User friendly version \n Edit summary usage \n Minor edits usage \n First edit date", "Information", JOptionPane.INFORMATION_MESSAGE); JOptionPane.showMessageDialog(null, "Number of edits: " + editcount(), "Results", JOptionPane.INFORMATION_MESSAGE); } public static int editcount() throws IOException { FileReader reader = new FileReader("Input.txt"); BufferedReader in = new BufferedReader(reader); String inputline = ""; StringTokenizer token; System.out.println("Computing..."); while (inputline != null) { inputline = in.readLine(); if (inputline !=null) token = new StringTokenizer(inputline); else break; for (int i = 1; i<8; i++) { token.nextToken(); } String input = token.nextToken(); //System.out.println(input); if (input.equals("m")) { minorEdits++; input = token.nextToken(); } if (input.equals("Wikipedia")) Wikipedia_talk++; else if (input.equalsIgnoreCase("User")) User_talk++; else if (input.equals("Template")) Template_talk++; else if (input.equals("MediaWiki")) MediaWiki_talk++; else if (input.equals("Image")) Image_talk++; else if (input.length()>5 && input.substring(0,5).equals("User:")) User++; else if (input.length()>5 && input.substring(0,5).equals("Talk:")) Talk++; else if (input.length()>6 && input.substring(0,6).equals("Image:")) Imagew++; else if (input.length()>9 && input.substring(0,9).equals("Category:")) Category++; else if (input.length()>9 && input.substring(0,9).equals("Template:")) Template++; else if (input.length()>10 && input.substring(0,10).equals("MediaWiki:")) MediaWiki++; else if (input.length()>10 && input.substring(0,10).equals("Wikipedia:")) Wikipedia++; else { Mainspace++; //System.out.println("Mainspace added: " + input); } numEdits++; } //Prints out statistics System.out.println("-------------------"); System.out.println("Breakdown by namespace:"); System.out.println("User: " + User); System.out.println("User talk: " + User_talk); System.out.println("Category: " + Category); System.out.println("Image: " + Imagew); System.out.println("Image talk: " + Image_talk); System.out.println("MediaWiki: " + MediaWiki); System.out.println("MediaWiki talk: " + MediaWiki_talk); System.out.println("Template: " + Template); System.out.println("Template talk: " + Template_talk); System.out.println("Project: " + Wikipedia); System.out.println("Project talk: " + Wikipedia_talk); System.out.println("Main (articles): " + Mainspace); System.out.println("Article talk: " + Talk); System.out.println("-------------------"); System.out.println("Overall statistics: "); System.out.println("Total edits: " + numEdits); System.out.println("Minor edits: " + minorEdits); System.out.println("Percentage of minor edits: " + (int)(((double)minorEdits)/numEdits * 100.0) + "% *"); System.out.println("* - percentage is always rounded down to nearest whole number percentage."); System.out.println("Percent edit summary: Not available yet."); System.out.println("-------------------"); return numEdits; } /** * HTML -> ContribFile converter for Flcelloguy's Tool * @author Titoxd * @version 1.00 * @param contribsFile (input file in raw HTML) * @param listFile (output file, for the moment in raw HTML, will be modified later to process contribs easier) * @throws IOException */ public static void PurgeContribs(String contribsFile, String listFile) throws IOException { FileReader reader = new FileReader(contribsFile); BufferedReader in = new BufferedReader(reader); FileWriter writer = new FileWriter(listFile); BufferedWriter out = new BufferedWriter(writer); String inString =""; boolean endContribs = false; //marks whether all the contributions have been parsed inString = in.readLine(); //read from file and discard do { if ((inString.trim().compareTo("<ul>")==0) && (endContribs == false)) //until the <ul> tag is reached, { do { inString = in.readLine(); //then start reading and recording if ((inString.trim().compareTo("</ul>")!=0)) { out.write(inString.trim(),0,inString.length()); System.out.println(inString.trim()); } else { endContribs = true; } } while (endContribs != true); } inString = in.readLine(); //read from file and discard } while (inString != null); in.close(); out.close(); } }