#!/usr/bin/python

#Audio Tools, a module and set of tools for manipulating audio data
#Copyright (C) 2007-2012  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)

    try:
        cdda = audiotools.CDDA(options.cdrom, perform_logging=False)
    except ValueError, err:
        msg.error(unicode(err))
        sys.exit(1)

    if (len(cdda) == 255):
        msg.error(_(u"No CD in drive"))
        sys.exit(1)
    elif (len(cdda) < 1):
        msg.error(_(u"No audio tracks found on CD"))
        sys.exit(1)

    tracks = list(cdda)

    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(str(cdda.freedb_disc_id()).decode('ascii'))

    msg.new_row()
    msg.output_column(_(u"MusicBrainz disc ID"), True)
    msg.output_column(_(u" : "))

    msg.output_column(str(cdda.musicbrainz_disc_id()).decode('ascii'))

    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()
