[go: up one dir, main page]

File: dvdainfo

package info (click to toggle)
audiotools 3.1.1-1
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 18,200 kB
  • sloc: ansic: 417,746; python: 59,089; xml: 1,639; makefile: 303; sh: 99
file content (124 lines) | stat: -rwxr-xr-x 4,357 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#!/usr/bin/python

# Audio Tools, a module and set of tools for manipulating audio data
# Copyright (C) 2007-2015  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 sys
import os.path
import audiotools
import audiotools.dvda
import audiotools.text as _

if (__name__ == '__main__'):
    import argparse

    parser = argparse.ArgumentParser(description=_.DESCRIPTION_DVDAINFO)

    parser.add_argument("--version",
                        action="version",
                        version="Python Audio Tools %s" % (audiotools.VERSION))

    parser.add_argument("-c", "--cdrom",
                        dest="cdrom",
                        default=audiotools.DEFAULT_CDROM)

    parser.add_argument("-A", "--audio-ts",
                        default=".",
                        dest="audio_ts",
                        metavar="DIR",
                        help=_.OPT_AUDIO_TS)

    options = parser.parse_args()

    msg = audiotools.Messenger()
    table = audiotools.output_table()

    try:
        dvda = audiotools.dvda.DVDA(options.audio_ts, options.cdrom)
    except IOError:
        msg.error(_.ERR_DVDA_INVALID_AUDIO_TS)
        sys.exit(1)

    titleset = dvda.titleset(1)

    # header row
    row = table.row()
    row.add_column(_.LAB_DVDAINFO_TITLE)
    row.add_column(u"")
    row.add_column(_.LAB_DVDAINFO_TRACK)
    row.add_column(u"")
    row.add_column(_.LAB_DVDAINFO_LENGTH)
    row.add_column(u"")
    row.add_column(_.LAB_DVDAINFO_CODEC)
    row.add_column(u"")
    row.add_column(_.LAB_DVDAINFO_SAMPLE_RATE, "right")
    row.add_column(u"")
    row.add_column(_.LAB_DVDAINFO_CHANNELS)
    row.add_column(u"")
    row.add_column(_.LAB_DVDAINFO_BITS_PER_SAMPLE)
    row.add_column(u"")
    row.add_column(_.LAB_DVDAINFO_PTS_LENGTH, "right")
    row.add_column(u"")
    row.add_column(_.LAB_DVDAINFO_FIRST_SECTOR)
    row.add_column(u"")
    row.add_column(_.LAB_DVDAINFO_LAST_SECTOR)

    table.divider_row([_.DIV] + [u" ", _.DIV] * 9)

    for title in [titleset.title(i) for i in range(1, titleset.titles + 1)]:
        for track in [title.track(j) for j in range(1, title.tracks + 1)]:

            row = table.row()
            row.add_column(u"%d" % (title.number), "right")
            row.add_column(u" ")
            row.add_column(u"%d" % (track.number), "right")
            row.add_column(u" ")
            row.add_column(u"%d:%2.2d" %
                           (track.pts_length // 90000 // 60,
                            track.pts_length // 90000 % 60), "right")

            try:
                reader = track.reader()

                row.add_column(u" ")
                row.add_column({"PCM": u"PCM",
                                "MLP": u"MLP"}[reader.codec], "right")
                row.add_column(u" ")
                row.add_column(audiotools.khz(reader.sample_rate), "right")
                row.add_column(u" ")
                row.add_column(u"%d" % (reader.channels), "right")
                row.add_column(u" ")
                row.add_column(u"%d" % (reader.bits_per_sample), "right")

                reader.close()
            except IOError:
                # display empty columns instead of trying to guess
                for i in range(8):
                    row.add_column(u" ")

            row.add_column(u" ")
            row.add_column(u"%d" % (track.pts_length), "right")
            row.add_column(u" ")
            row.add_column(u"%d" % (track.first_sector), "right")
            row.add_column(u" ")
            row.add_column(u"%d" % (track.last_sector), "right")

        table.divider_row([_.DIV] + [u" ", _.DIV] * 9)

    for row in table.format(msg.output_isatty()):
        msg.output(row)