Python:让歌词按时间与歌曲同步播放

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起到计时作用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值