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.

Tested Platforms

  • 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!)

Software Requirements

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. :)

Scripting Info

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.

Source Packages

Debian Packages