Skip to content

YCTS-otree/LRC_timestamp_fixer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

LRC Timestamp Fixer(双语歌词时间戳修复器)

很多双语 .lrc 会把“上一句翻译”和“下一句原文”写在同一个时间戳上,例如:

[00:07.50]Moon's up high, shining wide.
[00:09.05]明月光,夜夜亮
[00:09.05]Counting sheep on my bed.
[00:11.68]让我来看看:有谁睡得不香?

部分播放器会因为连续相同时间戳而解析报错或显示错乱。

本工具用于自动修复这种问题:

  • 修改模式:检测到连续相同时间戳时,将第一条时间戳减去 0.01s(10ms),让它们不再“抢同一个座位”
  • 还原模式:自动识别这种 -0.01s 的修复痕迹并恢复为原来的相同时间戳
  • 支持输入单个 .lrc 文件或目录(仅扫描 .lrc,可递归)

特性

  • ✅ 修复 连续相同时间戳(常见于“原文/翻译交错”的双语 LRC)
  • ✅ 只动时间戳,不碰歌词内容
  • ✅ 防重复:已修复过(形如 前一行 = 后一行 -0.01s)会自动跳过,避免越改越离谱
  • ✅ 支持批量:输入目录扫描 .lrc(可递归)
  • ✅ 支持还原:可恢复到修复前的相同时间戳布局
  • ✅ 自动备份:对发生改动的文件生成 .bak(默认开启)

安装

只需要 Python 3.8+(建议 3.10+)

git clone <your-repo-url>
cd <repo-folder>
python lrc_timestamp_fixer.py

没有第三方依赖,不需要 pip install


使用方法

运行脚本后会提示:

  1. 选择模式
  • 1 修改:连续相同时间戳 → 第一条减去 0.01s
  • 2 还原:检测到 -0.01s 修复形式 → 恢复相同时间戳
  1. 输入路径
  • 可以是单个 .lrc 文件
  • 也可以是目录(仅扫描 .lrc

修改效果示例

修改模式(Fix)

输入:

[00:01.01]
[00:01.01]

输出:

[00:01.00]
[00:01.01]

还原模式(Restore)

输入:

[00:01.00]
[00:01.01]

输出:

[00:01.01]
[00:01.01]

工作原理(简述)

  • 扫描每行的第一枚时间戳

  • 当发现第 i 行与第 i+1 行时间戳相同:

    • 若不是“已修复”的形态(i + 0.01s == i+1
    • 则将第 i 行时间戳减去 0.01s
  • 还原模式做相反操作:检测到 i + 0.01s == i+1 时将 i 恢复为 i+1

默认只处理带小数的时间戳(例如 [00:01.01])。 元信息标签行如 [ar:xxx][ti:xxx] 会被跳过。


配置

首次运行会在脚本同目录生成 lrc_timestamp_fixer_config.json,可直接修改:

  • TICK_MS:默认 10(即 10ms / 0.01s)
  • MAKE_BACKUP:是否生成 .bak 备份
  • RECURSIVE:目录扫描是否递归

注意事项

  • 如果你遇到“同一时间戳三连/四连”,目前策略是只对每组里的第一个做偏移 (这是为了尽量少改动,避免引入新的显示问题)
  • 如果你希望改成“每条都错开 0.01 / 0.02 / 0.03 …”的更激进模式,欢迎提 issue(或你直接 PR,我给你点个大拇指)

About

Fix duplicated timestamps in bilingual .lrc lyrics to avoid player parsing errors — batch modify & restore supported. CN:修复双语 LRC 同时间戳冲突,避免播放器报错,支持批量修改与还原。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages