吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2557|回复: 6
收起左侧

[Python 转载] 将lrc歌词整体提前或推迟

  [复制链接]
mlyde 发表于 2021-5-4 20:02
本帖最后由 mlyde 于 2021-5-4 21:55 编辑

将lrc歌词整体提前或推迟

想把以前下载的一些歌配上歌词,但有的歌词比歌曲整体慢了几秒,一句句手改就太麻烦了,于是写了这个python脚本,顺便练练手,将lrc中的时间标签全部加或减一点儿。(当然,要手动听一下确认要加还是减,加减的幅度)
本来lrc是支持时间补偿的,就是在前面注释的位置加上[Offset:毫秒数] 就可以,但我的播放器不支持这样,只好改一下时间标签了。

说明

因为是覆盖保存,使用前请备份您要修改的文件。
如果出现文件编码不支持,请将 .lrc 文件以 UTF-8 保存。可以用记事本打开>文件>另存为>编码,选择 UTF-8 。

使用方法

输入要修改的 .lrc 文件名,若不在同一目录下,需输入完整路径,带不带引号均可。
例: TheStar-阿泱.lrcD:\Desktop\TheStar-阿泱.lrc“D:\Desktop\TheStar-阿泱.lrc” 等。
输入歌词要提前的时间,单位为秒(s),推迟时间用负数。
例: 10.5-2 等。
确认覆盖并保存。

代码


[Python] 纯文本查看 复制代码
# 将.lrc歌词全部提前或推迟, 并以原文件名覆盖保存
import os
import re

# 文件名
filename = ''

# 歌词
lrc = ''

def readfile():
        """ 打开(.lrc)文件并返回文件内容 """
        global filename
        filename = input('filename(.lrc):')
        filename = filename.replace('"', '', 2)        # 将两个"删去
        if os.path.isfile(filename):
                if os.path.exists(filename):
                        # file exists
                        try:
                                with open(filename, 'r', encoding='utf-8') as fp:
                                        return fp.read()
                        except UnicodeDecodeError:
                                print('\a文件编码不支持!')
                                os.system('pause')
                                return 0
                else:
                        # file not exists
                        return 0
        else:
                # not a normal file
                return 0

def change(second):
        """ 修改并写回改变后的内容 """
        global lrc
        # 找到时间标签, 匹配 [01:23.456]
        timestamp = re.findall('\[([0-9]{0,3}\:[0-9]{0,2}\.[0-9]{0,3})\]', lrc)
        timestamp_n = []
        for i in range(len(timestamp)):
                min = timestamp[i].split(':')
                second_n = int(min[0]) * 60 + float(min[1]) - second
                if second_n < 0:        # 避免出现负值
                        second_n = 0
                min_n = second_n // 60
                second_n = second_n % 60
                timestamp_n.append(('%02d' % min_n) + ':' + ('%05.2f' % second_n))
                lrc = lrc.replace(timestamp[i], timestamp_n[i])
        return lrc

def save():
        """ 覆盖保存文件 """
        with open(filename, 'w', encoding='utf-8') as fp:
                fp.write(lrc)

def main():
        """ 主函数 """
        global lrc

        # 读取文件
        while True:
                lrc = readfile()
                if not lrc:
                        print('\aNot Found!  (文件名为文件夹 或 文件不存在)\n')
                else:
                        break

        # 询问提前时间
        while True:
                try:
                        second = float(input('输入歌词要提前的时间(s): '))
                        break
                # 防止输入非数字导致的程序终止
                except ValueError:
                        print('请输入数字!\n\a')

        # 修改lrc
        lrc = change(second)

        # 提示保存
        while True:
                result = input('是否覆盖并保存(Y/N)? ')
                if result == 'Y' or result == 'y':
                        save()
                        break
                if result == 'N' or result == 'n':
                        break

if __name__ == "__main__":
        main()

免费评分

参与人数 2吾爱币 +6 热心值 +2 收起 理由
0821fzh + 1 + 1 谢谢@Thanks!
苏紫方璇 + 5 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

纸飞机文案 发表于 2021-5-4 21:33
其实这个可以搜索下语句就可以更改下的
按规则来修改就可以了
芽衣 发表于 2021-5-4 21:39
旧版百度音乐有这个歌词编辑器……以前我用百度音乐制作歌词
冰楓丶殘瀷 发表于 2021-5-4 21:39
yeqin 发表于 2021-5-5 16:08
很有用的创意!

希望有EXE文件,方便我等不玩python的筒子使用。
 楼主| mlyde 发表于 2021-5-7 18:41
yeqin 发表于 2021-5-5 16:08
很有用的创意!

希望有EXE文件,方便我等不玩python的筒子使用。

exe的话,编译出来文件有点大,从github上下载吧。
下载Windows命令行程序https://github.com/mlyde/lrc-timetag-change/raw/main/lrc-timetag-change.exe
(用 pyinstaller 编译为exe,大小:6.53MB,无python环境可下载运行)  

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
yeqin + 1 + 1 热心回复!

查看全部评分

yeqin 发表于 2021-5-7 19:32
mlyde 发表于 2021-5-7 18:41
exe的话,编译出来文件有点大,从github上下载吧。
下载Windows命令行程序https://github.com/mlyde/lrc ...

已经顺利将相册音乐字幕改变,加了10秒
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 17:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表