Mercurial > cpython-lru_cache-weakref
annotate Lib/irix5/cdplayer.py @ 5817:48b94de85bf3 legacy-trunk
Extensive changes by AMK.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Thu, 17 Jul 1997 16:29:42 +0000 |
| parents | c814937880cc |
| children |
| rev | line source |
|---|---|
| 883 | 1 # This file implements a class which forms an interface to the .cdplayerrc |
| 2 # file that is maintained by SGI's cdplayer program. | |
| 3 # | |
| 4 # Usage is as follows: | |
| 5 # | |
| 6 # import readcd | |
|
1404
c814937880cc
Use __init__ instead of init.
Sjoerd Mullender <sjoerd@acm.org>
parents:
1291
diff
changeset
|
7 # r = readcd.Readcd() |
|
c814937880cc
Use __init__ instead of init.
Sjoerd Mullender <sjoerd@acm.org>
parents:
1291
diff
changeset
|
8 # c = Cdplayer(r.gettrackinfo()) |
| 883 | 9 # |
| 10 # Now you can use c.artist, c.title and c.track[trackno] (where trackno | |
| 11 # starts at 1). When the CD is not recognized, all values will be the empty | |
| 12 # string. | |
| 13 # It is also possible to set the above mentioned variables to new values. | |
| 14 # You can then use c.write() to write out the changed values to the | |
| 15 # .cdplayerrc file. | |
| 16 | |
| 17 cdplayerrc = '.cdplayerrc' | |
| 18 | |
|
1291
517d29ebc840
* ftplib.py: added abort() command (sends oob data).
Guido van Rossum <guido@python.org>
parents:
1115
diff
changeset
|
19 class Cdplayer: |
|
1404
c814937880cc
Use __init__ instead of init.
Sjoerd Mullender <sjoerd@acm.org>
parents:
1291
diff
changeset
|
20 def __init__(self, tracklist): |
| 883 | 21 import string |
| 22 self.artist = '' | |
| 23 self.title = '' | |
|
1115
c1ee60bd5de4
CL.py: adapted to newest version of CL library.
Sjoerd Mullender <sjoerd@acm.org>
parents:
883
diff
changeset
|
24 if type(tracklist) == type(''): |
|
c1ee60bd5de4
CL.py: adapted to newest version of CL library.
Sjoerd Mullender <sjoerd@acm.org>
parents:
883
diff
changeset
|
25 t = [] |
|
c1ee60bd5de4
CL.py: adapted to newest version of CL library.
Sjoerd Mullender <sjoerd@acm.org>
parents:
883
diff
changeset
|
26 for i in range(2, len(tracklist), 4): |
|
c1ee60bd5de4
CL.py: adapted to newest version of CL library.
Sjoerd Mullender <sjoerd@acm.org>
parents:
883
diff
changeset
|
27 t.append((None, \ |
|
c1ee60bd5de4
CL.py: adapted to newest version of CL library.
Sjoerd Mullender <sjoerd@acm.org>
parents:
883
diff
changeset
|
28 (string.atoi(tracklist[i:i+2]), \ |
|
c1ee60bd5de4
CL.py: adapted to newest version of CL library.
Sjoerd Mullender <sjoerd@acm.org>
parents:
883
diff
changeset
|
29 string.atoi(tracklist[i+2:i+4])))) |
|
c1ee60bd5de4
CL.py: adapted to newest version of CL library.
Sjoerd Mullender <sjoerd@acm.org>
parents:
883
diff
changeset
|
30 tracklist = t |
| 883 | 31 self.track = [None] + [''] * len(tracklist) |
| 32 self.id = 'd' + string.zfill(len(tracklist), 2) | |
| 33 for track in tracklist: | |
| 34 start, length = track | |
| 35 self.id = self.id + string.zfill(length[0], 2) + \ | |
| 36 string.zfill(length[1], 2) | |
| 37 try: | |
| 38 import posix | |
| 39 f = open(posix.environ['HOME'] + '/' + cdplayerrc, 'r') | |
| 40 except IOError: | |
|
1404
c814937880cc
Use __init__ instead of init.
Sjoerd Mullender <sjoerd@acm.org>
parents:
1291
diff
changeset
|
41 return |
| 883 | 42 import regex |
| 43 reg = regex.compile('^\\([^:]*\\):\t\\(.*\\)') | |
| 44 s = self.id + '.' | |
| 45 l = len(s) | |
| 46 while 1: | |
| 47 line = f.readline() | |
| 48 if line == '': | |
| 49 break | |
| 50 if line[:l] == s: | |
| 51 line = line[l:] | |
| 52 if reg.match(line) == -1: | |
| 53 print 'syntax error in ~/' + cdplayerrc | |
| 54 continue | |
| 55 name = line[reg.regs[1][0]:reg.regs[1][1]] | |
| 56 value = line[reg.regs[2][0]:reg.regs[2][1]] | |
| 57 if name == 'title': | |
| 58 self.title = value | |
| 59 elif name == 'artist': | |
| 60 self.artist = value | |
| 61 elif name[:5] == 'track': | |
| 62 trackno = string.atoi(name[6:]) | |
| 63 self.track[trackno] = value | |
| 64 f.close() | |
| 65 | |
| 66 def write(self): | |
| 67 import posix | |
| 68 filename = posix.environ['HOME'] + '/' + cdplayerrc | |
| 69 try: | |
| 70 old = open(filename, 'r') | |
| 71 except IOError: | |
| 72 old = open('/dev/null', 'r') | |
| 73 new = open(filename + '.new', 'w') | |
| 74 s = self.id + '.' | |
| 75 l = len(s) | |
| 76 while 1: | |
| 77 line = old.readline() | |
| 78 if line == '': | |
| 79 break | |
| 80 if line[:l] <> s: | |
| 81 new.write(line) | |
| 82 new.write(self.id + '.title:\t' + self.title + '\n') | |
| 83 new.write(self.id + '.artist:\t' + self.artist + '\n') | |
| 84 for i in range(1, len(self.track)): | |
| 85 new.write(self.id + '.track.' + `i` + ':\t' + \ | |
| 86 self.track[i] + '\n') | |
| 87 old.close() | |
| 88 new.close() | |
| 89 posix.rename(filename + '.new', filename) |
