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

  1. Hi Brett, we share this with our team. As I’m sure you know, adding IPv6 support is not a trivial change and while it isn’t on the roadmap for this coming quarter, it is on the shortlist for discussion for Q1, 2021.

    In the meantime, searx is a good choice for advanced users.