Ahh, the ol’ Perl Napster client. The first one, I think? And considered one of the better text-mode clients at the time. ‘course, these days, the old Napster protocol is pretty well defunct, what with the existence of fancy P2P networks and such. But, I keep this page around anyway… this is an attic, afterall.
As an aside, as with many of my other legacy projects, this one has been migrated to Github.
- Full song searching and library browsing support.
- Regular expression filtering of search/browse results.
- Support for all upload and download methods, with upload speed throttling.
- Resume support (mostly… :)
- Download queuing (still rough, though :).
- Efficient MP3 data cache for fast logins.
- Chatting support, including multi-channel support.
- Support of most admin commands.
- Support for Opennap extensions.
- Hotlist support.
- Support for most other Napster commands, including ping, whois, etc.
- Support for alternate metaservers and Napster servers, for use with OpenNap and other independant networks.
- Highly flexible and scriptable, including a builtin /eval function for evaluating Perl code on the fly from within the client.
- Builtin help facility for all commands.
- Small set of standard IRC commands, such as /exec.
- SOCKSv4/5 support via the Net::SOCKS module.
- The choice of three different user interface options:
- Gtk GUI.
- Tk GUI.
- Curses text-based.
- Plain text-based.
- AIX 4.2 (Matthew Shaw)
- Digital Unix 4.0 (Hugo Leote)
- FreeBSD 4.0 (Ed Heil)
- OpenBSD 2.5
- RedHat Linux 5.2 (i686)
- RedHat Linux 6.0 (i686)
- Debian Linux (potato)
- SunOS (Curses interface is broken, though)
All platforms use Perl 5, which is required (at least AFAIK) for Snap to run. As well, you need a working version of basic POSIX IPC (fork(), signals, pipes, etc)… meaning no Win32 (can’t select() on STDIN!)
In terms of required software, Snap only needs a working Perl 5 installation. However, snap can take advantage of various additional modules, if they are available. The presence of these modules causes the inclusion of various additional features. The following is a list of the modules Snap can take advantage of, and the features which are enabled when they are present.
- Time::HiRes - Upload speed throttling.
- MD5 - Correct MP3 MD5 signatures.
- Net::SOCKS - SOCKS v4 and v5 support.
In addition, the user interface modules have their own requirements. For example, the Gtk interface obviously needs Perl/Gtk installed, and the Curses interface needs a working Curses module installed. :)
Snap itself, being written in Perl, is highly scriptable. The software is built around a system of commands and callbacks, where all user and server commands simply trigger functions in a set of global hashes. Therefore, it is trivial to add new functionality to the application.
Note, there’s a bit of a Snap ChangeLog, if you’re wondering what changed between versions.