Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e202c38

Browse files
Can now also give a hashed ID to Cddb.
1 parent 1f05754 commit e202c38

2 files changed

Lines changed: 112 additions & 82 deletions

File tree

Lib/irix5/cddb.py

Lines changed: 56 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# You can then use c.write() to write out the changed values to the
1515
# .cdplayerrc file.
1616

17-
import string, posix
17+
import string, posix, os
1818

1919
_cddbrc = '.cddb'
2020
_DB_ID_NTRACKS = 5
@@ -56,45 +56,15 @@ def tochash(toc):
5656

5757
class Cddb:
5858
def __init__(self, tracklist):
59-
if posix.environ.has_key('CDDB_PATH'):
60-
path = posix.environ['CDDB_PATH']
59+
if os.environ.has_key('CDDB_PATH'):
60+
path = os.environ['CDDB_PATH']
6161
cddb_path = string.splitfields(path, ',')
6262
else:
63-
home = posix.environ['HOME']
63+
home = os.environ['HOME']
6464
cddb_path = [home + '/' + _cddbrc]
65-
self.artist = ''
66-
self.title = ''
67-
if type(tracklist) == type(''):
68-
t = []
69-
for i in range(2, len(tracklist), 4):
70-
t.append((None, \
71-
(string.atoi(tracklist[i:i+2]), \
72-
string.atoi(tracklist[i+2:i+4]))))
73-
tracklist = t
74-
ntracks = len(tracklist)
75-
self.track = [None] + [''] * ntracks
76-
self.id = _dbid((ntracks >> 4) & 0xF) + _dbid(ntracks & 0xF)
77-
if ntracks <= _DB_ID_NTRACKS:
78-
nidtracks = ntracks
79-
else:
80-
nidtracks = _DB_ID_NTRACKS - 1
81-
min = 0
82-
sec = 0
83-
for track in tracklist:
84-
start, length = track
85-
min = min + length[0]
86-
sec = sec + length[1]
87-
min = min + sec / 60
88-
sec = sec % 60
89-
self.id = self.id + _dbid(min) + _dbid(sec)
90-
for i in range(nidtracks):
91-
start, length = tracklist[i]
92-
self.id = self.id + _dbid(length[0]) + _dbid(length[1])
93-
self.toc = string.zfill(ntracks, 2)
94-
for track in tracklist:
95-
start, length = track
96-
self.toc = self.toc + string.zfill(length[0], 2) + \
97-
string.zfill(length[1], 2)
65+
66+
self._get_id(tracklist)
67+
9868
for dir in cddb_path:
9969
file = dir + '/' + self.id + '.rdb'
10070
try:
@@ -103,6 +73,10 @@ def __init__(self, tracklist):
10373
break
10474
except IOError:
10575
pass
76+
ntracks = string.atoi(self.id[:2], 16)
77+
self.artist = ''
78+
self.title = ''
79+
self.track = [None] + [''] * ntracks
10680
if not hasattr(self, 'file'):
10781
return
10882
import regex
@@ -123,6 +97,8 @@ def __init__(self, tracklist):
12397
elif name2 == 'title':
12498
self.title = value
12599
elif name2 == 'toc':
100+
if not self.toc:
101+
self.toc = value
126102
if self.toc != value:
127103
print 'toc\'s don\'t match'
128104
elif name1[:5] == 'track':
@@ -142,7 +118,7 @@ def __init__(self, tracklist):
142118
track = self.track[i]
143119
# if track title starts with `,', use initial part
144120
# of previous track's title
145-
if track[0] == ',':
121+
if track and track[0] == ',':
146122
try:
147123
off = string.index(self.track[i - 1],
148124
',')
@@ -152,12 +128,51 @@ def __init__(self, tracklist):
152128
self.track[i] = self.track[i-1][:off] \
153129
+ track
154130

131+
def _get_id(self, tracklist):
132+
# fill in self.id and self.toc.
133+
# if the argument is a string ending in .rdb, the part
134+
# upto the suffix is taken as the id.
135+
if type(tracklist) == type(''):
136+
if tracklist[-4:] == '.rdb':
137+
self.id = tracklist[:-4]
138+
self.toc = ''
139+
return
140+
t = []
141+
for i in range(2, len(tracklist), 4):
142+
t.append((None, \
143+
(string.atoi(tracklist[i:i+2]), \
144+
string.atoi(tracklist[i+2:i+4]))))
145+
tracklist = t
146+
ntracks = len(tracklist)
147+
self.id = _dbid((ntracks >> 4) & 0xF) + _dbid(ntracks & 0xF)
148+
if ntracks <= _DB_ID_NTRACKS:
149+
nidtracks = ntracks
150+
else:
151+
nidtracks = _DB_ID_NTRACKS - 1
152+
min = 0
153+
sec = 0
154+
for track in tracklist:
155+
start, length = track
156+
min = min + length[0]
157+
sec = sec + length[1]
158+
min = min + sec / 60
159+
sec = sec % 60
160+
self.id = self.id + _dbid(min) + _dbid(sec)
161+
for i in range(nidtracks):
162+
start, length = tracklist[i]
163+
self.id = self.id + _dbid(length[0]) + _dbid(length[1])
164+
self.toc = string.zfill(ntracks, 2)
165+
for track in tracklist:
166+
start, length = track
167+
self.toc = self.toc + string.zfill(length[0], 2) + \
168+
string.zfill(length[1], 2)
169+
155170
def write(self):
156171
import posixpath
157-
if posix.environ.has_key('CDDB_WRITE_DIR'):
158-
dir = posix.environ['CDDB_WRITE_DIR']
172+
if os.environ.has_key('CDDB_WRITE_DIR'):
173+
dir = os.environ['CDDB_WRITE_DIR']
159174
else:
160-
dir = posix.environ['HOME'] + '/' + _cddbrc
175+
dir = os.environ['HOME'] + '/' + _cddbrc
161176
file = dir + '/' + self.id + '.rdb'
162177
if posixpath.exists(file):
163178
# make backup copy

Lib/plat-irix5/cddb.py

Lines changed: 56 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# You can then use c.write() to write out the changed values to the
1515
# .cdplayerrc file.
1616

17-
import string, posix
17+
import string, posix, os
1818

1919
_cddbrc = '.cddb'
2020
_DB_ID_NTRACKS = 5
@@ -56,45 +56,15 @@ def tochash(toc):
5656

5757
class Cddb:
5858
def __init__(self, tracklist):
59-
if posix.environ.has_key('CDDB_PATH'):
60-
path = posix.environ['CDDB_PATH']
59+
if os.environ.has_key('CDDB_PATH'):
60+
path = os.environ['CDDB_PATH']
6161
cddb_path = string.splitfields(path, ',')
6262
else:
63-
home = posix.environ['HOME']
63+
home = os.environ['HOME']
6464
cddb_path = [home + '/' + _cddbrc]
65-
self.artist = ''
66-
self.title = ''
67-
if type(tracklist) == type(''):
68-
t = []
69-
for i in range(2, len(tracklist), 4):
70-
t.append((None, \
71-
(string.atoi(tracklist[i:i+2]), \
72-
string.atoi(tracklist[i+2:i+4]))))
73-
tracklist = t
74-
ntracks = len(tracklist)
75-
self.track = [None] + [''] * ntracks
76-
self.id = _dbid((ntracks >> 4) & 0xF) + _dbid(ntracks & 0xF)
77-
if ntracks <= _DB_ID_NTRACKS:
78-
nidtracks = ntracks
79-
else:
80-
nidtracks = _DB_ID_NTRACKS - 1
81-
min = 0
82-
sec = 0
83-
for track in tracklist:
84-
start, length = track
85-
min = min + length[0]
86-
sec = sec + length[1]
87-
min = min + sec / 60
88-
sec = sec % 60
89-
self.id = self.id + _dbid(min) + _dbid(sec)
90-
for i in range(nidtracks):
91-
start, length = tracklist[i]
92-
self.id = self.id + _dbid(length[0]) + _dbid(length[1])
93-
self.toc = string.zfill(ntracks, 2)
94-
for track in tracklist:
95-
start, length = track
96-
self.toc = self.toc + string.zfill(length[0], 2) + \
97-
string.zfill(length[1], 2)
65+
66+
self._get_id(tracklist)
67+
9868
for dir in cddb_path:
9969
file = dir + '/' + self.id + '.rdb'
10070
try:
@@ -103,6 +73,10 @@ def __init__(self, tracklist):
10373
break
10474
except IOError:
10575
pass
76+
ntracks = string.atoi(self.id[:2], 16)
77+
self.artist = ''
78+
self.title = ''
79+
self.track = [None] + [''] * ntracks
10680
if not hasattr(self, 'file'):
10781
return
10882
import regex
@@ -123,6 +97,8 @@ def __init__(self, tracklist):
12397
elif name2 == 'title':
12498
self.title = value
12599
elif name2 == 'toc':
100+
if not self.toc:
101+
self.toc = value
126102
if self.toc != value:
127103
print 'toc\'s don\'t match'
128104
elif name1[:5] == 'track':
@@ -142,7 +118,7 @@ def __init__(self, tracklist):
142118
track = self.track[i]
143119
# if track title starts with `,', use initial part
144120
# of previous track's title
145-
if track[0] == ',':
121+
if track and track[0] == ',':
146122
try:
147123
off = string.index(self.track[i - 1],
148124
',')
@@ -152,12 +128,51 @@ def __init__(self, tracklist):
152128
self.track[i] = self.track[i-1][:off] \
153129
+ track
154130

131+
def _get_id(self, tracklist):
132+
# fill in self.id and self.toc.
133+
# if the argument is a string ending in .rdb, the part
134+
# upto the suffix is taken as the id.
135+
if type(tracklist) == type(''):
136+
if tracklist[-4:] == '.rdb':
137+
self.id = tracklist[:-4]
138+
self.toc = ''
139+
return
140+
t = []
141+
for i in range(2, len(tracklist), 4):
142+
t.append((None, \
143+
(string.atoi(tracklist[i:i+2]), \
144+
string.atoi(tracklist[i+2:i+4]))))
145+
tracklist = t
146+
ntracks = len(tracklist)
147+
self.id = _dbid((ntracks >> 4) & 0xF) + _dbid(ntracks & 0xF)
148+
if ntracks <= _DB_ID_NTRACKS:
149+
nidtracks = ntracks
150+
else:
151+
nidtracks = _DB_ID_NTRACKS - 1
152+
min = 0
153+
sec = 0
154+
for track in tracklist:
155+
start, length = track
156+
min = min + length[0]
157+
sec = sec + length[1]
158+
min = min + sec / 60
159+
sec = sec % 60
160+
self.id = self.id + _dbid(min) + _dbid(sec)
161+
for i in range(nidtracks):
162+
start, length = tracklist[i]
163+
self.id = self.id + _dbid(length[0]) + _dbid(length[1])
164+
self.toc = string.zfill(ntracks, 2)
165+
for track in tracklist:
166+
start, length = track
167+
self.toc = self.toc + string.zfill(length[0], 2) + \
168+
string.zfill(length[1], 2)
169+
155170
def write(self):
156171
import posixpath
157-
if posix.environ.has_key('CDDB_WRITE_DIR'):
158-
dir = posix.environ['CDDB_WRITE_DIR']
172+
if os.environ.has_key('CDDB_WRITE_DIR'):
173+
dir = os.environ['CDDB_WRITE_DIR']
159174
else:
160-
dir = posix.environ['HOME'] + '/' + _cddbrc
175+
dir = os.environ['HOME'] + '/' + _cddbrc
161176
file = dir + '/' + self.id + '.rdb'
162177
if posixpath.exists(file):
163178
# make backup copy

0 commit comments

Comments
 (0)