Yet Another CD DataBase-audio CD catalog Mercurial
Brought to you by:
clach04
| File | Date | Author | Commit |
|---|---|---|---|
| 3rdparty | 2006-03-05 |
|
[d8a350] stupid binary attachment - bad form but easy to... |
| c | 2005-02-13 |
|
[8f190e] Don't recall reason for change |
| doc | 2013-02-03 |
|
[df8285] Doc changes, doc additional cddb fork diff. Cha... |
| python | 2015-01-26 |
|
[4f2d8a] docstrings for MusicBrainz |
| shell | 2005-02-13 |
|
[da1dd6] Don't recall reason for change |
| sql | 2013-01-18 |
|
[8e55ee] Merge |
| .hgignore | 2013-01-18 |
|
[8e55ee] Merge |
| .hgtags | 2013-01-18 |
|
[8e55ee] Merge |
| LICENSE | 2005-02-13 |
|
[61c1c3] Initial revision |
| README | 2015-01-24 |
|
[88dfad] README cleanup for upgrade |
| TODO | 2013-02-27 |
|
[9e8da1] merge |
| yacddb_installer.iss | 2013-02-04 |
|
[ad7e0a] Alpha 2 build, changes include hidden track det... |
Yet Another CD DataBase
Catalogs Audio CD's with automatic cdddb (and freedb) lookup.
Doesn't require you to install a full RDBMS like other projects
and allows you to carry your database/catalog with you on the Z.
Simple search/browse facility for the Zaurus.
Desktop program to read Audio CD data from cddb/freedb and store
in database. Currently win32 only but support for Linux shouldn't
be too difficult.
Requires:
python (Using 2.2, later should be OK, 2.6.6 has been tested). NOTE requires sqlite3 (which py 2.5 includes out of the box)
cddb-py (version 1.3 + modifications), http://cddb-py.sourceforge.net/
pycdio is optional for CD-TEXT support, ftp://ftp.gnu.org/pub/gnu/libcdio/
pysqlite (based on 0.4.0, later release should be OK) NOTE not required if using python with built in sqlite3 module
sqlite tools (is a bonus); sqlite/sqlite3, sqliteman, sqlitebrowser, etc.
anygui (targeted at version 0.1.1)
wxWindows - (2.8.11.0)
pyQT (optional, needed for GUI on Z)
McMillan Installer (optional, only required if one wishes to build exes that run standalone)
Standalone win32 exe that does NOT have the above requirements (i.e. no need
for Python system) is also available.
Does NOT submit unrecognized CD to freedb, you need another application to do that.
for Win32
Notify CD for FreeDB http://www.mamane.lu/notifycd/ (smtp submission 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 cd lookup)
JeFCo http://www.jesterware.org/software.html - JefCo and yaacddb could be a good combination.
History:
* 2013 - bumped version to 2.0.0, works with:
Python 2.6.4 and wx 2.8.12.1
Python 2.5.1 and wx 2.8.3.0 (as included with movpy 2.0.0)
Python 2.4.4 and wx 2.8.0.1 (as included with movpy 2.0.0)
Hidden track detection logic works everywhere without pycdio.
No disk in drive checking for add_cd.
* 2011 - cd-text support
* 2008 - Upgraded to use sqlite3, as included with Python 2.5
also some schema changes due to changes with UDFs.
To upgrade to this release use upgrade_database.py, see notes below. To manually upgrade:
* dump the sqlite2 database
* *edit schema* to replace `cddb_disc_id varchar(8)` with `cddb_disc_id TEXT` to deal with some integer issues with sqlite3 versus sqlite2
* NOTE may also need to edit cddb_disc_id column values to wrap in single strings quotes `'` otherwise may end up with 'Inf' (infinite) cddb ids. Needed for any value that is not wrapped in quotes and has an 'e'. May also end up with float values
* transliterate dump into utf8
* load into sqlite3
* alter schema to make note about hidden tracks
(only populated when cdrom is present)
I.e.:
python python\python\yacddb\tool\upgrade_database.py -dyacddb_sqlite2_latin1.db | sqlite3 my.db3
* 2003 - Original version used Python 2.2 and pysqlite2
Future?
* musicbrainz support (they have a python binding and they do freedb lookups if they don't have a match in MB).
* cd-text support - this is implemented via libcdio (and known to work under Linux provided cd/dvd drive support CD-TEXT)
* improved freedb discid generation
* more cd media changed detection mechanisms, e.g. via libcdio
## Getting started
Extract code from code repo.
cd python/python
env PYTHONPATH=. python yacddb/tool/add_cd.py /dev/cdrom
java -Dpython.path=. -jar jython.jar yacddb\tool\add_cd.py D:
env PYTHONPATH=. python yacddb/ui/wx/wxsearch.py
env PYTHONPATH=. python yacddb/tool/create_sorted_text_catalog.py
env PYTHONPATH=. python yacddb/tool/create_sorted_rtf_catalog.py
env PYTHONPATH=. python yacddb/tool/create_sorted_html_catalog.py
cd python\python
set PYTHONPATH=.
copy ..\..\3rdparty\cddbidgen.exe # TODO FIXME remove this
J:\Python26\python.exe yacddb\tool\add_cd.py E:
:: NOTE need to edit "%USERPROFILE%\.yacddb\yacddb.ini" and comment out "[cddb_server_1]" and "url=cdtext:"
yacddb\cdrom\win32_detect_cdrom.py "J:\Python26\python.exe" yacddb\tool\add_cd.py -c%s:
J:\Python26\python.exe yacddb\ui\wx\wxsearch.py
Good test audio cds:
* (2203c803) Aphex Twin / Windowlicker CD1 - has multiple entries
* (7d0ad70b) Björk / Post - uses non-ASCII character, also has multiple entries
* (b20d0b0c) Björk / Vespertine - uses non-ASCII character
* (a110280b) Hybrid / I Choose Noise - Has hidden track (i.e. track 0
"Everything Is Brand New") and has cd-text title/track information
(not for the hidden track, so online db is still useful)
* New Order / Best Of - may end up with trailing "L" for number (and hex) - possibly Python 2.2/2.3 specific
* (7d0ad70b) Björk / Post - non-ASCII character, may end up with trailing "L" for number (and hex) - possibly Python version specific?
* Aphex Twin / Drukqs (CD1) - trailing "L" and missing leading zero
* Aphex Twin / I Care Because You Do - may end up with trailing "L" for number (and hex)
* data disks (mixed mode discs) that the cddb-py module can't handle (at least under Windows)
* (390a5c04) Eat Static / Interceptor Remixes
* (02009f01) Aphex Twin / Windowlicker (enhanced CD single)
* (070a4802) Aphex Twin / Windowlicker CD2 -- this discid is the correct track is audio, track 2 is data
* FSOL Papa New Guina CD
Also see http://www.freedb.org/freedb_discid_check.php
References:
http://www.python.org
http://www.freedb.org/
http://pysqlite.sourceforge.net
http://www.sqlite.org
http://anygui.sourceforge.net
http://www.riverbankcomputing.co.uk/pyqt
http://www.mcmillan-inc.com/install1.html
Notes
To make use of Installer under win32 (to create a standalone cataloging tool)
with a gui, changes must be made to __init__.py in anygui (if no GUI is
required) ignore this note.
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 explicitly 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......