Menu

Tree [4f2d8a] default tip /
 History

Read Only access


File Date Author Commit
 3rdparty 2006-03-05 clach04 clach04 [d8a350] stupid binary attachment - bad form but easy to...
 c 2005-02-13 clach04 clach04 [8f190e] Don't recall reason for change
 doc 2013-02-03 clach04 clach04 [df8285] Doc changes, doc additional cddb fork diff. Cha...
 python 2015-01-26 clach04 clach04 [4f2d8a] docstrings for MusicBrainz
 shell 2005-02-13 clach04 clach04 [da1dd6] Don't recall reason for change
 sql 2013-01-18 unknown unknown [8e55ee] Merge
 .hgignore 2013-01-18 unknown unknown [8e55ee] Merge
 .hgtags 2013-01-18 unknown unknown [8e55ee] Merge
 LICENSE 2005-02-13 clach04 clach04 [61c1c3] Initial revision
 README 2015-01-24 unknown unknown [88dfad] README cleanup for upgrade
 TODO 2013-02-27 clach04 clach04 [9e8da1] merge
 yacddb_installer.iss 2013-02-04 unknown unknown [ad7e0a] Alpha 2 build, changes include hidden track det...

Read Me

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

MongoDB Logo MongoDB