#!/usr/bin/python
#Audio Tools, a module and set of tools for manipulating audio data
#Copyright (C) 2007-2009 Brian Langenberger
#This program is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 2 of the License, or
#(at your option) any later version.
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import os.path
import audiotools
import sys
import gettext
gettext.install("audiotools",unicode=True)
if (__name__ == '__main__'):
parser = audiotools.OptionParser(
usage=_(u"%prog [options]"),
version="Python Audio Tools %s" % (audiotools.VERSION))
parser.add_option('-c','--cdrom',action='store',
type='string',dest='cdrom',
default=audiotools.DEFAULT_CDROM)
(options,args) = parser.parse_args()
msg = audiotools.Messenger("cd2xmcd",options)
cdda = audiotools.RawCDDA(options.cdrom)
tracks = list(cdda)
if (len(cdda) == 0):
msg.error(_(u"No CD in drive"))
sys.exit(1)
msg.new_row()
msg.output_column(_(u"Total Tracks"),True)
msg.output_column(_(u" : "))
msg.output_column(unicode(len(cdda)))
msg.new_row()
msg.output_column(_(u"Total Length"),True)
msg.output_column(_(u" : "))
msg.output_column(_(u"%2d:%2.2d (%d frames)" % (cdda.length() / 75 / 60,
cdda.length() / 75 % 60,
cdda.length())))
msg.new_row()
msg.output_column(_(u"FreeDB disc ID"),True)
msg.output_column(_(u" : "))
msg.output_column(unicode(str(audiotools.DiscID.from_cdda(cdda))))
msg.new_row()
msg.output_column(_(u"MusicBrainz disc ID"),True)
msg.output_column(_(u" : "))
msg.output_column(unicode(str(audiotools.MBDiscID.from_cdda(cdda))))
msg.blank_row()
msg.output_rows()
msg.new_row()
msg.output_column(_(u"#"),True)
msg.output_column(u" ")
msg.output_column(_(u"Length"))
msg.output_column(u" ")
msg.output_column(_(u"Frames"))
msg.output_column(u" ")
msg.output_column(_(u"Offset"))
msg.new_row()
msg.output_column(_(u"--"))
msg.output_column(u" ")
msg.output_column(_(u"------"))
msg.output_column(u" ")
msg.output_column(_(u"------"))
msg.output_column(u" ")
msg.output_column(_(u"------"))
for track in tracks:
msg.new_row()
msg.output_column(unicode(track.track_number),True)
msg.output_column(u" ")
msg.output_column(u"%d:%2.2d" % (track.length() / 75 / 60,
track.length() / 75 % 60),True)
msg.output_column(u" ")
msg.output_column(unicode(track.length()))
msg.output_column(u" ")
msg.output_column(unicode(track.offset()))
msg.output_rows()
cdda.close()