中英歌词自动分行小工具

使用音乐标签软件对FLAC格式的英文歌曲添加歌词时,自动匹配的歌词的中文和英文是混在一行的。
例如:“[00:07.50]Some days 许多时候”
想要让播放器在播放时更加美观的双行显示就需要把它改为:
[00:07.50]Some days
[00:07.50]许多时候。
当面对几十首歌曲时一句一句的改动费时费力,于是用Python做了一个小工具,循环自动将一行中英混合歌词分离成英文歌词+中文歌词两行显示,最终结果输出为TXT文档,方便复制,小工具开发的着急,勉强能用,可能还有不少缺陷,附上源码,有需要的可以完善使用。小工具下载地址:

https://love-mei.lanzoue.com/iWpSm26lfp4j

密码:9bpw

import re
from datetime import datetime


def find_chinese_in_english_sentence_include_s(sentence1):
    chinese_pattern = re.compile(r'[u4e00-u9fa5]+s+[u4e00-u9fa5]*')
    matches = chinese_pattern.findall(sentence1)
    return ''.join(matches)


def find_chinese_in_english_sentence(sentence2):
    chinese_pattern = re.compile(r'[u4e00-u9fa5]+')
    matches = chinese_pattern.findall(sentence2)
    return ''.join(matches)


while 1:
    # 修正
    sentence = []

    while True:
        s = input('粘贴后敲敲回车:')
        sentence.append(s)
        if s == '':
            break

    lrc = []

    for i in sentence:

        # 消除片头信息影响
        if 'by:' not in i:
            if '作词' not in i:
                if '作曲' not in i:

                    # 判断中文是否带有空格并分类执行修正
                    get_time = i[:10]
                    chinese_content = find_chinese_in_english_sentence_include_s(i)
                    if chinese_content == '':
                        chinese_content = find_chinese_in_english_sentence(i)

                        # 消除带有时间码的自然空行
                        if chinese_content == '':
                            lrc.append(get_time)
                        else:
                            lrc.append(i.replace(chinese_content, ''))
                            lrc.append(get_time + chinese_content)
                    else:
                        lrc.append(i.replace(chinese_content, ''))
                        lrc.append(get_time + chinese_content)
                else:
                    lrc.append(i)
            else:
                lrc.append(i)
        else:
            lrc.append(i)

    # 获取当前精准时间
    now = datetime.now()

    # 获取当前时间的时间戳
    timestamp = now.timestamp()

    # 输出
    for lr in lrc:
        print(lr)

        # 打开文件,以追加模式
        with open(str(timestamp) + '_output.txt', 'a') as file:
            # 写入内容
            file.write(lr + '
')

附图:原歌词、输出文件和结果

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 共15条

请登录后发表评论