str = """[00:00.00]《左手指月》
[00:04.00]演唱:萨顶顶
[00:07.00]
[00:09.00]作词:喻江
[00:12.00]作曲:萨顶顶
[00:15.00]
[00:24.98]左手握大地 右手握着天
[00:31.34]掌纹裂出了 十方的闪电
[00:37.31]把时光匆匆 兑换成了年
[00:43.86]三千世 如所不见
[00:50.19]
[00:51.19]左手拈着花 右手舞着剑
[00:58.00]眉间落下了 一万年的雪
[01:03.36]一滴泪 啊啊啊
[01:10.17]那是我 啊啊啊
[01:17.66](Music)
[01:43.88]左手一弹指 右手弹着弦
[01:50.22]舟楫摆渡在 忘川的水间
[01:56.04]当烦恼能开出 一朵红莲
[02:02.48]莫停歇 给我杂念
[02:09.25]
[02:09.95]左手指着月 右手取红线
[02:16.42]赐予你和我 如愿的情缘
[02:22.22]月光中 啊啊啊
[02:29.02]你和我 啊啊啊
[02:36.33](Music)
[02:49.81]左手化成羽 右手成鳞片
[02:56.32]某世在云上 某世在林间
[03:01.88]愿随你 用一粒微尘 的模样
[03:08.25]在所有尘世 浮现
[03:14.84]
[03:15.84]我左手拿起你 右手放下你
[03:22.48]合掌时 你全部 被收回心间
[03:28.27]一炷香 啊啊啊
[03:34.63]你是我 无二无别
[03:42.82](The end)
[03:45.00]☆谢谢欣赏☆"""
listLrc = str.split("\n")
for i in range(len(listLrc)):
listLrc[i] = listLrc[i][1:] #去掉了列表中所有的“[”
listLrc[i] = listLrc[i].split("]") #以“]”为分隔符,把原列表每个元素分割成新列表;原列表变为二维列表
m1 = int(listLrc[i][0][:2]) * 60 #m1提取的是原时间格式里分钟部分,*60转换成秒
m2 = float(listLrc[i][0][3:]) #m2提取的是原时间格式里秒的部分
m = m1 + m2 #把原时间格式改为秒
listLrc[i][0] = m #二维列表时间部分更新成秒为单位的新列表
import time
sj = 0 #初始时间设置为0秒,确保首行歌词能正常输出(很多lrc,歌词首行的时间都是0秒)
while sj <= float(listLrc[-1][0]): #只要sj不大于歌曲时长就一直循环
for index in range(len(listLrc)): #遍历列表每个下标,直到歌词时间与sj误差在半秒以内,输出对应歌词
if float(listLrc[index][0]) - float(sj) < 0.5 and float(listLrc[index][0]) - float(sj) >= 0:
print(listLrc[index][1]) #输出歌词
time.sleep(0.5) #参数数值太小,会出现同一句歌词多次输出;参数太大,会有部分歌词漏掉;
sj += 0.5 #与sleep同步,保证sj起到计时作用
Python:让歌词按时间与歌曲同步播放
最新推荐文章于 2021-06-05 10:53:59 发布