⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 playcd.py

📁 Python语言编译器
💻 PY
字号:
# Play CD audio on speaker or headphones.callbacktypes = ['audio','pnum','index','ptime','atime','catalog','ident','control']def playaudio(port, type, audio):	port.writesamps(audio)def prtrack(cdinfo, type, pnum):	if cdinfo.track[pnum] <> '':		print 'playing "' + cdinfo.track[pnum] + '"'	else:		print callbacktypes[type]+': '+`pnum`def callback(arg, type, data):	print callbacktypes[type]+': '+`data`def tcallback(arg, type, data):	print callbacktypes[type]+': '+triple(data)def triple((a, b, c)):	return zfill(a) + ':' + zfill(b) + ':' + zfill(c)def zfill(n):	s = `n`	return '0' * (2 - len(s)) + sdef prtrackinfo(info):	for i in range(len(info)):		start, total = info[i]		print 'Track', zfill(i+1), triple(start), triple(total)statedict = ['ERROR', 'NODISK', 'READY', 'PLAYING', 'PAUSED', 'STILL']def prstatus(status):	state, track, curtime, abstime, totaltime, first, last, \		scsi_audio, cur_block, dummy = status	print 'Status:',	if 0 <= state < len(statedict):		print statedict[state]	else:		print state	print 'Track: ', track	print 'Time:  ', triple(curtime)	print 'Abs:   ', triple(abstime)	print 'Total: ', triple(totaltime)	print 'First: ', first	print 'Last:  ', last	print 'SCSI:  ', scsi_audio	print 'Block: ', cur_block	print 'Future:', dummydef main():	import sys, readcd, al, AL, cd, cdplayer	verbose = 0	r = readcd.Readcd()	prstatus(r.getstatus())	prtrackinfo(r.gettrackinfo())	cdinfo = cdplayer.Cdplayer(r.gettrackinfo())	if cdinfo.title <> '':		print 'Title: "' + cdinfo.title + '"'	if cdinfo.artist <> '':		print 'Artist: ' + cdinfo.artist	for arg in sys.argv[1:]:		if arg == '-v':			verbose = 1			continue		x = eval(arg)		try:			l = len(x)			r.appendstretch(x[0], x[1])		except TypeError:			r.appendtrack(x)	try:		oldparams = [AL.OUTPUT_RATE, 0]		params = oldparams[:]		al.getparams(AL.DEFAULT_DEVICE, oldparams)		params[1] = AL.RATE_44100		al.setparams(AL.DEFAULT_DEVICE, params)		config = al.newconfig()		config.setwidth(AL.SAMPLE_16)		config.setchannels(AL.STEREO)		port = al.openport('CD Player', 'w', config)		for i in range(8):			r.setcallback(i, callback, None)		if verbose:			r.setcallback(cd.ptime, tcallback, None)			r.setcallback(cd.atime, tcallback, None)		else:			r.removecallback(cd.ptime)			r.removecallback(cd.atime)		r.setcallback(cd.pnum, prtrack, cdinfo)		r.setcallback(cd.audio, playaudio, port)		data = r.play()	except KeyboardInterrupt:		status = r.getstatus()		print 'Interrupted at '+triple(status[2])+' into track '+ \			  `status[1]`+' (absolute time '+triple(status[3])+')'	al.setparams(AL.DEFAULT_DEVICE, oldparams)main()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -