Gumshoe is both a program and an architecture designed to allow access to multiple file sharing services (such as Napster and Gnutella) via a unified interface. Each service is implemented as a shared library which is dynamically loaded by the core program at run time. Any number of services can be loaded and used at the same time.
Gumshoe's home page on sourceforge is, unsurprisingly, gumshoe.sourceforge.net. There is also a Project page. You should go there to find developer info and the latest versions.
Documenation is somewhat lacking at present. From inside the program, you can type "help" for a list of commands. For a basic search, you do something like the following. Stuff you type is in bold.
Gumshoe>search favorite band Hit 0: < 127.0.0.1:1234> size: 1234567: Favorite Band - Favorite Song.mp3 [Hopefully many more hits displayed] Gumshoe>download 0 Downloading Favorite Band - Favorite Song.mp3 using service xyz from 127.0.0.1:1234
Other useful commands are:
All commands can be abbreviated. The first match found for an abbreviation is the command used (e.g. "s" will match "search" before "services", because search is first in the internal list.)
You can edit various configuration options in the file ~/.gumshoe/config, which is automatically created the first time you run the program (and saved by the program every time you run it as well. Eventually this stuff will be configurable inside the program.) See the file README in the top directory for directions on some things you probably want to change the after first time you run it.
File sharing is cool. Having to deal with lots of different, often poorly designed, interfaces isn't. While Gumshoe doesn't have much of an interface yet, my aim is to give it the best features found in the interfaces of any and all service-specific clients. When "complete" you will be able to transparently search any service you can think of and instantly know how to manipulate them all, because the interaces will be exactly the same.
Before this can happen, however, I want a rock solid core. Another thing that's bugged me about many open source (And otherwise) clients for these kinds of services is a lack of stability. Robustness is one of my primary goals. I want to be able to leave this program running for weeks at a time without crashing. I think I'm doing a pretty good job so far, but there are still a lot of basic features left to be implemented, and it is already a fairly complex system.
Once the core and all major features are implemented for at least two big services (Napster and Gnutella at the moment - though I had a *complete* Scour service implemented before they took Scour down! I'll resurrect it if Scour itself is brought back from the dead.) I'll start work on a GUI. I like command line programs too, but in this instance I would much prefere a GUI. There's simply too much information being presented to make a line oriented console interface practical for the long run. If you'd like to do a curses interface, feel free to get in touch. I am not planning one, but it could be useful. I do see a web interface as a practical solution (E.G. implement a small web server as part of the program that presents tables and forms to access all the services provided). That might even happen before the GUI version, it depends how I feel when the time comes.
The program core and all plugins are released under the LGPL. You are able, maybe even encouraged, to write external programs that link with the core system to extend and enhance it's functionality. You must still release any modifications to the core and plugins in source form as well as binary, but your own added code can use any license you see fit. I believe you should use the LGPL or GPL too, but I am not forcing you to. I also believe if you come up with any good extensions and make them closed source, I'll add them to my own open source version just to annoy you as much as you will have annoyed me :-)
Finally, this is a HOBBY. I'm not making any money from this, and I'm never going to. I'm working on it in my spare time. If someone else finds it useful (and I hope people do), that's great! But first and foremost, I'm doing it because I think it's fun. If it ever stops being fun, I will stop working on it. Being LGPL'ed means that if that ever happens, everything is there for anyone else to work on, forever.