74 lines
1.6 KiB
Python
74 lines
1.6 KiB
Python
# -*- Mode: Python -*-
|
|
# vi:si:et:sw=4:sts=4:ts=4
|
|
|
|
import os
|
|
import sys
|
|
import optparse
|
|
import tempfile
|
|
import shutil
|
|
|
|
from morituri.common import task, checksum, log
|
|
from morituri.program import cdrdao, cdparanoia
|
|
|
|
import gobject
|
|
gobject.threads_init()
|
|
|
|
def main():
|
|
log.init()
|
|
|
|
parser = optparse.OptionParser()
|
|
|
|
default = 0
|
|
parser.add_option('-o', '--offset',
|
|
action="store", dest="offset",
|
|
help="sample offset (defaults to %d)" % default,
|
|
default=default)
|
|
|
|
options, args = parser.parse_args(sys.argv[1:])
|
|
|
|
runner = task.SyncRunner()
|
|
|
|
# first do a simple TOC scan
|
|
t = cdrdao.ReadTOCTask()
|
|
runner.run(t)
|
|
toc = t.table
|
|
|
|
offset = t.table.tracks[0].getIndex(1).absolute
|
|
|
|
if offset < 150:
|
|
print 'Disc is unlikely to have Hidden Track One Audio.'
|
|
else:
|
|
print 'Disc seems to have a %d frame HTOA.' % offset
|
|
|
|
|
|
# now do a more extensive scan
|
|
t = cdrdao.ReadIndexTableTask()
|
|
runner.run(t)
|
|
|
|
# now check if we have a hidden track one audio
|
|
track = t.toc.tracks[0]
|
|
try:
|
|
index = track.getIndex(0)
|
|
except KeyError:
|
|
print 'No Hidden Track One Audio found.'
|
|
return
|
|
|
|
start = index[0]
|
|
stop, _ = track.getIndex(1)
|
|
print 'Found Hidden Track One Audio from frame %d to %d' % (start, stop)
|
|
|
|
# rip it
|
|
riptask = cdparanoia.ReadVerifyTrackTask('track00.wav', toc,
|
|
start, stop - 1,
|
|
offset=int(options.offset))
|
|
runner.run(riptask)
|
|
|
|
print 'runner done'
|
|
|
|
if riptask.checksum is not None:
|
|
print 'Checksums match'
|
|
else:
|
|
print 'Checksums did not match'
|
|
|
|
main()
|