def draw(): g.scr.nodelay(True) statMsg = 'MP3 文件:' + path.basename(g.song) lrcTitle = '未知歌曲名' if g.lrcFile: lrcMsg = 'LRC 文件:' + path.basename(g.lrcFile) if lrc.g.lrcds.has_key('ti'): lrcTitle = lrc.g.lrcds['ti'] lyrics = lrc.getLrc(g.current_time) else: lrcMsg = '没有 LRC 文件' lyrics = ['提醒:', '找不到 LRC 文件。',\ "您有没有将其命名为 %s 呢?" % path.basename(lrc.changeExt(g.song))] statMsg = threelize(statMsg, lrcTitle, lrcMsg, g.scr.getmaxyx()[1] - 4) msgs = [[statMsg, 4],\ ['', 1],\ [lyrics[0], 6],\ [lyrics[1], 5],\ [lyrics[2], 6],\ ['', 1],\ [generateStatus(), 1]] drawMessage('LRC MP3 播放器 v0.2', msgs) if g.step == 0: key = g.scr.getch() if key in range(256): if chr(key) == 'q': exit() elif chr(key) == 'p': player.g.paused = True g.step = 1 curses.beep() elif chr(key) == 's': player.g.skip = True elif chr(key) == 'h': showHelp() elif g.step == 1: key = g.scr.getch() if key in range(256): if chr(key) == 'q': exit() elif chr(key) == 'p': player.g.paused = False g.step = 0 elif chr(key) == 'h': showHelp()
def play(f): # f: Filename if not path.exists(f): ui.throw('文件不存在:' + f) return mf = mad.MadFile(f) dev = ao.AudioDevice('alsa', rate = mf.samplerate()) ui.setInfo(f, mf.total_time()) ui.g.lrcFile = lrc.changeExt(f) if not lrc.loadLrc(ui.g.lrcFile): # No LRC file ui.g.lrcFile = '' g.skip = False while not g.skip: if not g.paused: buf = mf.read() if buf is None: break dev.play(buf, len(buf)) ui.setTime(mf.current_time()) else: time.sleep(0.1) ui.draw()
def play(f): # f: Filename if not path.exists(f): ui.throw('文件不存在:' + f) return mf = mad.MadFile(f) dev = ao.AudioDevice('alsa', rate=mf.samplerate()) ui.setInfo(f, mf.total_time()) ui.g.lrcFile = lrc.changeExt(f) if not lrc.loadLrc(ui.g.lrcFile): # No LRC file ui.g.lrcFile = '' g.skip = False while not g.skip: if not g.paused: buf = mf.read() if buf is None: break dev.play(buf, len(buf)) ui.setTime(mf.current_time()) else: time.sleep(0.1) ui.draw()