This project attemps to automatically classify and organize browser bookmarks by using publicly available link databases.
The Open Directory Project makes their data available in RDF format here. I wrote a parser that then inserts the data into a dbm file indexed by URI. The interface is currently provided by a XML-RPC service. This is available at the following URL:
http://www.itsdarkhere.com/~josh/cgi-bin/bserver
Currently the only method offered is called getcategories. It accepts a single argument of type string. This is the URL you are looking up. The function returns an array of structs. The structs have two fields, indexed by "cat" and "desc". The cat field is a category for the URL, the description is the description of that URL in the category context.
Perhaps the simplest way to understand it is to look at some sample code, below is some sample perl code:
#!/usr/bin/perl
use Frontier::Client;
my $href = "http://www.yahoo.com/";
my $url = "http://rift.liquidweb.com/~josh/cgi-bin/bserver";
my $client = Frontier::Client->new(url => $url, debug => 0);
print "Categories for ", $href, "\n";
$res = $client->call('getcategories', $href);
if (@{$res} >= 1) {
foreach $category (@{$res}) {
print "cat: ", $category->{'cat'}, "\n";
print "desc: ", $category->{'desc'}, "\n";
}
}
The API is subject to change at any time, so don't rely on it for anything critical. Any questions feel free to ask me.
Now that the server is working, I need to work on clients to send bookmarks to the server and use the returned information to organize them. I already have some perl code working using the Netscape::Bookmarks module, but requiring everyone to install perl isn't the best option, so I'm working on a native win32 client and some other clients. The ability to compare people's bookmark sets also opens up several other possibilities, such as the ability to recommend simliar bookmarks (much like Amazon recommendations) and also import already classified URIs that aren't in the server.
The server API could also be extended. Accepting an array of URIs would reduce network traffic and other resources used. There will need to be some way to authenticate and add users to the system.
Return