I've had a first attempt at doing this, and managed to shoe-horn it into one source file for posting here (see nodes2graphviz.cc). Example images are available at "www.tom-carden.co.uk/nodegraphs".

FYI I used the following libraries and third-party tools:

  • libcurl ("a library that groks the URLs"), a part of cURL available from "curl.haxx.se".
  • TinyXML, available from Grinning Lizard at "www.grinninglizard.com/tinyxml".
  • the set of GraphViz tools, specifically "neato" and "twopi", available from "www.research.att.com/sw/tools/graphviz", or "www.graphviz.org"

The program can either take your login name and password and fetch the User Search XML Ticker for itself, or you can provide one (by default it needs to be placed in a sub-directory "username/xml". After this, it extracts all your node_id's and fetches all your nodes. It then translates the softlinks from all of your nodes into a dot file for processing with neato or twopi. The current version also adds links to the nodes if SVG or PS are used for output. Unfortunately, PNG is the only format which works reliably with the files I have produced so far (but I don't have a good PostScript viewer). I am working on producing image maps to display links for each node, but there are issues to be resolved with scaling and with overlapping nodes.

At this point, I wouldn't recommend using neato if you have more than about 150 nodes, unless you have a large amount of memory and a fast processor. I don't have hard figures, but my 70 nodes took around 5 minutes, conform's ~120 nodes took around 20 minutes, and I was unable to produce anything with neato for wertperch's ~300 nodes. The process used by twopi differs to that used by neato (neato uses an iterative, spring-based layout model) and so is much less computationally expensive.

If you'd like one of these graphs right now, the best thing to do would be to e-mail me the XML source of your User Search XML Ticker output (Sorry, I'm quite backed up with these at the moment, and now work full-time). I can provide binaries or assistance with compiling if you would like to run it yourself or modify the source for your own purposes. At the very least, C and C++ fans might be interested in the libcurl code for fetching e2 pages as XML.