马黑黑 发表于 2022-6-19 09:50

常规lrc歌词转花潮格式(测试)

本帖最后由 马黑黑 于 2022-6-19 20:51 编辑 <br /><br /><style>

.mama { margin: auto; width: fit-content; height: fit-content;}
.mama p { margin: 6px 0; padding: 0; text-align: center; }
.mama h5 { margin: 16px 0; padding: 0; font: bold 1.4em sans-serif; text-align: center; }
#lrcText { padding: 10px; width: 600px; height: 460px; outline: none; border: 1px solid; font: normal 1em / 1.2em sans-serif; }
#bntok {}

</style>

<div class="mama">
        <h5>常规lrc转花潮格式</h5>
        <textarea rows="18" cols="60" id="lrcText" placeholder="支持格式: [时间]歌词 及 [时间1][时间2][时间n]歌词"></textarea>
        <p><input type="button" value=" 开始转换 " id="btnok" /></p>
</div>

<script>

let btnok = document.getElementById('btnok'), lrcText = document.getElementById('lrcText');
let lrcArr = [];

btnok.onclick = function() {
        if(lrcText.value == '') return false;
        lrcArr.length = 0; //初始化数组
        let str = lrcText.value;
        let ar = getLrcMsg(str);
        for(j=0; j<ar.length; j++) {
                let tmpar = ar.split('=');
                if(tmpar.length > 1) {
                        let timeMsg = tmpar.split(':');
                        let tnum = parseFloat(timeMsg) * 60 + parseFloat(timeMsg);
                        tmpar = `\n\t['${tnum.toFixed(2)}'`;
                        tmpar = `'${tmpar}']`;
                        lrcArr.push(tmpar);
                }
        }
        lrcText.value = 'let lrcAr = [' + lrcArr + '\n];';
}

function getLrcMsg(txt) {
        let txtAr = txt.split('\n');
        let newAr = [];
        for(j=0; j<txtAr.length; j++) {
                let words = txtAr.replace(/(?:\[\d+\:\d+(?:[.:]\d+)?\])+/g, '').trim(); //获取歌词
                if(words) { //歌词若存在
                        let time = txtAr.match(/(?:\[\d+\:\d+(?:[.:]\d+)?\])/g); //获得时间
                                if(time != null) { //若时间存在
                                time = time.toString();
                                time = time.replace(/\[|\]/g,''); //去掉 [ 和 ]
                                let timeAr = time.split(',');
                                for(k=0; k<timeAr.length; k++) {//处理(多)时间信息
                                        //构建格式便于后续处理 : 时间=歌词
                                        newAr.push(timeAr + '=' + words);
                                }
                        }
                }
        }
        newAr.sort((a,b) => a.localeCompare(b)); //重新排序
        return newAr;
}

</script>

马黑黑 发表于 2022-6-19 09:54

本帖最后由 马黑黑 于 2022-6-19 09:57 编辑

原始lrc歌词举例:






匹配时间为: 04 分 44 秒 的歌曲
我爱歌词网 [www.5ilrc.com]
有谁能够一夜之间长大 - 戊道子
词:[盘子]
曲:[陈绍楠]
编曲:

走去忘记 旧的人旧的自己
远离回忆 找个人说我爱你
别带着沉重去飞行
别怀疑内心深处的勇气
放纵地拥抱晨曦
在路上遇见新的自己
什么乱七八糟的的都来吧我不理你

马黑黑 发表于 2022-6-19 09:59

什么乱七八糟的都可以上,程序仅处理合法的信息,不合法的无视

马黑黑 发表于 2022-6-19 10:00

@醉美水芙蓉

看看这个行不行。收集使用情况。

马黑黑 发表于 2022-6-19 10:01

@醉美水芙蓉
又call不上

@醉美水芙蓉

醉美水芙蓉 发表于 2022-6-19 10:05

醉美水芙蓉 发表于 2022-6-19 10:06

醉美水芙蓉 发表于 2022-6-19 10:07

马黑黑 发表于 2022-6-19 10:31

醉美水芙蓉 发表于 2022-6-19 10:07
黑黑老师厉害!现在什么样的LRC歌词都可以了!老师辛苦了!祝父亲节快乐!

也不是什么格式的都成。一楼这个,主要针对你昨晚说的lrc歌词格式,先测试一下,正常了再说

红影 发表于 2022-6-19 11:07

的确都能转换呢。只是,貌似少了最后一句{:4_173:}

马黑黑 发表于 2022-6-19 11:09

本帖最后由 马黑黑 于 2022-6-19 11:19 编辑

红影 发表于 2022-6-19 11:07
的确都能转换呢。只是,貌似少了最后一句
少的理论上应该是信息不合法吧,你再检查看看

红影 发表于 2022-6-19 11:09

比如放5句只转4句,放50句就只转49句{:4_173:}

红影 发表于 2022-6-19 11:09

黑黑厉害,什么都能弄得出来{:4_199:}

马黑黑 发表于 2022-6-19 11:15

红影 发表于 2022-6-19 11:09
比如放5句只转4句,放50句就只转49句

嗯,我也亲测了一下,是有这个问题。现在好了,你再试试。

感谢反馈。

马黑黑 发表于 2022-6-19 11:15

本帖最后由 马黑黑 于 2022-6-19 11:18 编辑

红影 发表于 2022-6-19 11:09
黑黑厉害,什么都能弄得出来
那也不是,只是比较刻苦而已

马黑黑 发表于 2022-6-19 11:17

醉美水芙蓉 发表于 2022-6-19 10:07
黑黑老师厉害!现在什么样的LRC歌词都可以了!老师辛苦了!祝父亲节快乐!

前面的测试过程中,红影发现了一个问题:会少最后一句歌词。现已修复此问题。

加林森 发表于 2022-6-19 12:13

老黑的节奏太快了。这个转换器真厉害。{:4_199:}

绿叶清舟 发表于 2022-6-19 12:15

这样就不用一句句的来的

马黑黑 发表于 2022-6-19 12:16

绿叶清舟 发表于 2022-6-19 12:15
这样就不用一句句的来的

嗯,偷懒的做法。试试吧

马黑黑 发表于 2022-6-19 12:17

加林森 发表于 2022-6-19 12:13
老黑的节奏太快了。这个转换器真厉害。

测试中,有问题吱一声
页: [1] 2 3 4 5 6 7 8
查看完整版本: 常规lrc歌词转花潮格式(测试)