yacddb - Yet
Another
CD DataBase
An audio CDROM database cataloger.
Project page http://sourceforge.net/projects/yacddb
On line demo version
Search an example audio cd catalog. Demo is here,
suggested search terms "moby",
"scruff".
Search for one of:
- track title
- album name
- artist name
Downloads
Features
- Free! There are a bunch of shareware programs that do this kind
of
thing but I wanted a free one with some control over the data.
- Desktop program to read Audio CD data from cddb/freedb (source is
configurable,
default is freedb) and store in
local
database. Linux and win32 is supported.
- User confirmation required before storing in database (more on
this
below) - this feature can be disabled.
- Usual adds CD's as soon as CD's inserted into drive, ejects them
once
they are in the database.
- Doesn't require you to install a full RDBMS and allows you to
carry
your database/catalog with you on a Linux PDA such as the Sharp Zaurus
(basically
any where there is python, pysqlite + some gui [wx, pyQT, anygui,
web based]). I'm using this under WM2003 using Pocket Internet Explorer
to search my collection.
- Data is stored in an sqlite
database
so the database is both portable between platforms and allows one to
write
custom queries, run reports, etc.
- Simple search/browse facility for the Zaurus/Desktop.
More information on need to confirm each CDROM; the user MUST accept
the
track listings found before they are added to the database, the reasons
for this are:
- Some CD track information is wrong (either the CD is not in the
database
but a CD with a similar "id" is, spelling mistakes, etc).
- Some CD's are in the freedb/cddb multiple times (sometimes with
spelling
mistakes or more/less track information).
Here are two screen shots of a multiple selection CD that demonstrate
the
need to confirm / select the correct CD (see spelling of Track #2).
The user conformation before storing feature can be disabled and the
first
hit found can be used if required, but if one is cataloging a CD
collections
it's worth doing properly.
Requires:
- python (I'm using 2.2, later
should
be OK)
- cddb-py (version
1.3 +
modifications) or just get my updated version, My version makes use of
the ctypes
library (I
used version 0.6.2a WIN32) so there is no need to rebuild the mci.dll
for
different python versions.
- pysqlite (I'm
using 0.4.0 which is quite old now, later release should be OK)
- sqlite (is a bonus)
- wxPython preferred GUI for
added CD's (and searching cds) under Windows and Linux
- anygui (targeted at
/ I'm
using version 0.1.1)
- CherryPy (version 2.0.0) -
optional only needed for web/html based search/query tool.
- Python
Web Modules (versiosn 0.5.3) - optional only needed for web/html
based search/query tool and onl needed if you ONLY have CGI access on
the server machine. CherryPy comes with it's own web server and is the
prefered deployment option.
- pyQT
(optional,
needed for GUI on Z, and its not a bad GUI for the desktop catalog
program)
- McMillan
Installer
(optional, only required if one wishes to build exes that run
standalone,
I've been using 5 beta 5 which is quite old now)
- MingW (or other win32 C/C++
compiler)
to build the win32 "detect CD inserted" program (you also need this if
you
want to use the original cddb-py package is it ships with an old
mci.dll that
won;t run with current python versions).
I may put together a newer win32 exe that does NOT have the above
requirements
(i.e. no need for Python system). An old win32 exe version is available
here
http://community.zaurus.com/projects/yacddb/
.
If you have a CD that there is not match for in the freedb, you need to
submit
one. Yacddb does NOT submit unregonized CD to freedb, you need another
application
to do that. Examples of applications that can/will submit to freedb.org
(Note
it takes a while after sending in the information for it to be
available,
JeFCo is one way around that delay). NOTE: So far the only win32
program I've managed to successlly get info into freedb from my win32
box behind a NAT fire wall is EAC
for Win32
- Notify CD for FreeDB (cd player, has basic cataloging
capability)
http://www.mamane.lu/notifycd/ (smtp submision only, have to changed
submit
address) - you can also use this to launch yaccdb
- CD-DA X-Tractor http://xtractor.sourceforge.net/
Cross platform (uses java and I think you need a native CD player with
freedb
support)
- JeFCo http://www.jesterware.org/software.html - JefCo and
yaacddb
coul dbe a good combination.
Future?
musicbrainz support they have a python binding and they do freedb
lookups
if they don't have a match in their database.
Run the cataloger under Linux (implement cd tray control under Linux to
eject
CD's, possibly use http://ericlathrop.com/cdde/ to detect insert CD's).
Notes
To make use of Installer under win32 (to create a standalone cataloging
tool)
with a anygui, changes must be made to __init__.py in anygui.
If no anygui support is NOT is required ignore this note (e.g. using
text
or QT interface with McMillan nstaller).
The change is to replace the call to _backend_passthrough() with:
# ----------- Cut Here -----------
# clach04 "hack"
# Check if we are running within "normal" Python environment
# or if we are frozen, ala. http://www.mcmillan-inc.com/install1.html
# This requires that the frozen application explictly import the
# backend that will also be frozen
#
if hasattr(sys, "frozen") == 0:
# Pass the backend namespace through:
_backend_passthrough()
# The IF above seems reasonable howveer the ELSE below doesn't
# sit well with me.
# This approach below is not really acceptable, here for debug only
else:
from anygui.backends.mswgui import *
# ----------- Cut Here -----------
I'm not especially happy with it but it does work (for the MSW back end
in
this case). I was hoping to make use of the hook- modules in Installer
but
I failed to get anything working :-(.
These diffs are not enough, need to deal with backed and application
functions......