ยปCore Development>Code coverage>Lib/plat-irix5/cdplayer.py

Python code coverage for Lib/plat-irix5/cdplayer.py

#countcontent
1n/a# This file implements a class which forms an interface to the .cdplayerrc
2n/a# file that is maintained by SGI's cdplayer program.
3n/a#
4n/a# Usage is as follows:
5n/a#
6n/a# import readcd
7n/a# r = readcd.Readcd()
8n/a# c = Cdplayer(r.gettrackinfo())
9n/a#
10n/a# Now you can use c.artist, c.title and c.track[trackno] (where trackno
11n/a# starts at 1). When the CD is not recognized, all values will be the empty
12n/a# string.
13n/a# It is also possible to set the above mentioned variables to new values.
14n/a# You can then use c.write() to write out the changed values to the
15n/a# .cdplayerrc file.
16n/afrom warnings import warnpy3k
17n/awarnpy3k("the cdplayer module has been removed in Python 3.0", stacklevel=2)
18n/adel warnpy3k
19n/a
20n/acdplayerrc = '.cdplayerrc'
21n/a
22n/aclass Cdplayer:
23n/a def __init__(self, tracklist):
24n/a import string
25n/a self.artist = ''
26n/a self.title = ''
27n/a if type(tracklist) == type(''):
28n/a t = []
29n/a for i in range(2, len(tracklist), 4):
30n/a t.append((None, \
31n/a (string.atoi(tracklist[i:i+2]), \
32n/a string.atoi(tracklist[i+2:i+4]))))
33n/a tracklist = t
34n/a self.track = [None] + [''] * len(tracklist)
35n/a self.id = 'd' + string.zfill(len(tracklist), 2)
36n/a for track in tracklist:
37n/a start, length = track
38n/a self.id = self.id + string.zfill(length[0], 2) + \
39n/a string.zfill(length[1], 2)
40n/a try:
41n/a import posix
42n/a f = open(posix.environ['HOME'] + '/' + cdplayerrc, 'r')
43n/a except IOError:
44n/a return
45n/a import re
46n/a reg = re.compile(r'^([^:]*):\t(.*)')
47n/a s = self.id + '.'
48n/a l = len(s)
49n/a while 1:
50n/a line = f.readline()
51n/a if line == '':
52n/a break
53n/a if line[:l] == s:
54n/a line = line[l:]
55n/a match = reg.match(line)
56n/a if not match:
57n/a print 'syntax error in ~/' + cdplayerrc
58n/a continue
59n/a name, value = match.group(1, 2)
60n/a if name == 'title':
61n/a self.title = value
62n/a elif name == 'artist':
63n/a self.artist = value
64n/a elif name[:5] == 'track':
65n/a trackno = string.atoi(name[6:])
66n/a self.track[trackno] = value
67n/a f.close()
68n/a
69n/a def write(self):
70n/a import posix
71n/a filename = posix.environ['HOME'] + '/' + cdplayerrc
72n/a try:
73n/a old = open(filename, 'r')
74n/a except IOError:
75n/a old = open('/dev/null', 'r')
76n/a new = open(filename + '.new', 'w')
77n/a s = self.id + '.'
78n/a l = len(s)
79n/a while 1:
80n/a line = old.readline()
81n/a if line == '':
82n/a break
83n/a if line[:l] != s:
84n/a new.write(line)
85n/a new.write(self.id + '.title:\t' + self.title + '\n')
86n/a new.write(self.id + '.artist:\t' + self.artist + '\n')
87n/a for i in range(1, len(self.track)):
88n/a new.write('%s.track.%r:\t%s\n' % (self.id, i, self.track[i]))
89n/a old.close()
90n/a new.close()
91n/a posix.rename(filename + '.new', filename)