Usage

Disc ID computation from a disc

libdiscid.read() provides everything needed to read the information from a disc and compute the disc id:

from libdiscid import read
disc = read()
print("id: {}".format(disc.id))

If no additional arguments are passed to libdiscid.read(), it will read from libdiscid.default_device(). If reading is not supported on your platform, NotImplementedError will be raised. If anything goes wrong while reading from the device, libdiscid.DiscError will be raised.

To read from a different device than the default one, you can set device accordingly:

from libdiscid import read
disc = read(device=u'/dev/cdrom1')
print("id: {}".format(disc.id))

Starting with libdiscid 0.5.0, it is possible to explicitly state what should be read. For example, to read the MCN, one would use:

from libdiscid import read, FEATURE_MCN
disc = read(features=FEATURE_MCN)
# disc.id will be available
print("id: {}".format(disc.id))
# if the disc has a MCN and libdiscid is 0.4.0 or later and libdiscid
# supports reading the MCN on this platform, disc.mcn will be non-empty.
try:
  print("MCN: {}".format(disc.mcn))
except NotImplementedError:
  print("MCN reading not supported on this platform/with this libdiscid")

If you only want to get the disc id and do not care about the MCN and the ISCRs, you can tell that to libdiscid.read() by passing 0 or libdiscid.FEATURE_READ to features:

from libdiscid import read
disc = read(features=0)

Disc ID computation from data

libdiscid.put() can be used to compute the disc ID based on the first and last track, the number of total sectors and track offsets:

from libdiscid import put
disc = put(first_track, last_track, num_sectors, offsets)
print("id: {}".format(disc.id))

Please note that libdiscid.DiscId.mcn and libdiscid.DiscId.track_isrcs will be empty after a call to libdiscid.put().

python-discid compat module

libdiscid.compat.discid provides the same API as discid from python-discid version 1.0.2. This allows applications to only care about one API and be usable with either of python-libdiscid or python-discid installed. Just use the following code to import the module:

try:
  from libdiscid.compat import discid
except ImportError:
  import discid

and then use the discid interface.