ClassiCollect (22-Sep-2003)


While it's already fairly functional, the initial release of ClassiCollect is aimed at testers and developers. It still has some way to go until it's ready for "production" use. Here's a screenshot of the current interface, and here's a a browsable listing of the database schema. If you're interested in working on this project, please drop me a note. Or just download the prototype and try entering the information on a few classical CDs in your collection. You can make comments, bug reports, critiques, and feature requests here.

Classicollect is an SQL schema and data entry frontend specifically designed for cataloguing a classical CD collection. It is free software. The existing free CD cataloguing programs are designed for pop music and are not useful for classical collectors.

Classicollect is written in Python and uses PostgreSQL for the database backend and pygtk for the data entry frontend. The frontend is designed to require as little typing as possible on the users part, with reference tables for quick selection of composer, title, label, etc. New data should only need to be entered once. The focus of the initial release is on data entry, with querying and reporting of data left to other postgresql tools such as pgaccess.

Currently Classicollect runs anywhere Python, PostgreSQL, and pygtk will run. A win32 .exe installer is planned.


  • Data integrity ensured by the database schema and the postgres database.
  • Easy data entry via extensive popup lists.
  • Data is displayed in a tree format for easy browsing.
  • Currently 3 browsable views of the data (by label, composer and artist).
  • Extra details on discs or recordings can be viewed or added via popup forms.

Current dependencies:

  • python 2.2.x
  • pygtk >= 1.99.16
  • postgresql-python 7.3.x

Unfortunately, right now it doesn't run out-of-the-box on any Linux distributions I've tested. Such is life on the cutting edge. The easiest distributions are Red Hat 9 and Debian. Red Hat 9 only needs newer pygtk2 packages from "rawhide" installed. You'll need:

  • pygtk2
  • pygtk2-libglade

For Debian, you can get the package "python-libglade2" from the unstable branch, and apt-get should do the right thing. Debian offers several different postgresl modules for Python, such as python-psycopg.

Some important missing features in the prototype:

  • Changes in one data view are not automatically reflected in the others.
  • Some of the reference data is still incomplete.
  • Maintenance updates of the reference data and schema is an issue that has not been dealt with yet.

Possible future features:

  • The capability to share data with other uses over the Internet. (cddb is not useful for classical music.) Ideally, you'd connect to a remove server and just give label and catalog number for the disc to have all the data for that disc inserted into your local database.
  • A GUI query tool for searching the database.
  • Report generation capabilities.
  • Ability to dump data in various formats, particularly formats useful for handhelds.
  • Support for other database servers engines, particularly embeddable ones.
  • An easy to install Win32 .exe package.

Wanted: Win32 Hacker.

I have been able to get classicollect to run under XP after installing the following packages

You can point classicollect to a postgresql server running elsewhere, or you can get the cygwin distribution and make sure you select the postgresql package. You'll also need the cygipc package. Once you have cygwin installed, open a bash shell and read the directions in /usr/doc/Cygwin, or see this page on running postgresql under cygwin. The postgresql folks are working on a native win32 port that is scheduled for their 7.5 release.

After all that there is still a problem with the buttons in notebook tabs not being clickable (this should be fixed in gtk+-2.2.5.)

This is a bit much to expect the average windows user to deal with. I tried using py2exe to make this all (but postgresql) into one distribution with a .exe file to run, but without much luck. I did find some notes on using py2exe that may be helpful.