浅谈动感歌词-歌词解析篇

1引言

要解析动感歌词文件,首先就要清楚动感歌词的文件内容,当然歌词的文件内容,我们已经在分析篇的文章里面介绍过了,这里将不再做详细的介绍,当我们可以把歌词成功解析出来后,再结合歌词生成篇,一个简单的歌词格式转换工具也就出来了。

2歌词解析

歌词解析,其实就是把文件里面的标签内容、歌词时间和歌词内容解析出来,当然,为了后期拓展其它的动感歌词格式,我们这里要好好设计一番。

2.1实体类

2.1.1歌词读取器

主要用来约束动感歌词读取器要实现的方法,可用于拓展实现其它的动感歌词格式。



2.1.2歌词实体



2.1.3行歌词实体



2.1.4标签实体



2.2ksc解析

2.2.1文件内容

karaoke.songname := '你要的爱';

karaoke.singer := '戴佩妮';

karaoke.add('00:03.298', '00:06.771', '虽然经常梦见你', '467,215,195,936,282,568,810');

karaoke.add('00:09.571', '00:12.105', '还是毫无头绪', '245,164,211,261,451,1202');

karaoke.add('00:14.809', '00:16.626', '外面正在下着雨', '271,200,195,179,271,266,435');

karaoke.add('00:17.245', '00:19.908', '今天是星期几', '195,143,175,379,758,1013');

karaoke.add('00:20.492', '00:22.089', '[but ][i ][don`t ][know]', '179,190,286,942');

2.2.2歌词读取器实体



2.2.3歌词解析部分代码




2.3krc解析

2.3.1文件内容

[id:$00FF2B12]

[ar:李健]

[ti:美若黎明]

[by:]

[hash:e1c2628fad0a46f94df6b8b071df078f]

[al:]

[sign:]

[qq:]

[total:267096]

[offset:10000]

[language:eyJjb250ZW50IjpbXSwidmVyc2lvbiI6MX0=]

[1679,1550]<0,399,0>作<399,200,0>词<599,250,0>:<849,301,0>李<1150,400,0>健

[3229,1650]<0,350,0>作<350,300,0>曲<650,350,0>:<1000,350,0>李<1350,300,0>健

2.3.2歌词读取器实体



2.3.3歌词解析部分代码




2.4hrcx解析

2.4.1文件内容

[ti:右手戒指];

[total:272706];

[ar:金海心];

[offset:0];

[by:HappyPlayer-PC];

haplayer.lrc('<1270,9630>','金海[心 ][- ]右手戒指','<1010,780,830,1410,800,1210,1410,910>');

haplayer.lrc('<18710,19810>','[la ][la ][la ]','<300,400,400>');

haplayer.lrc('<20020,22840><77150,79970><163120,165840><191920,194740>','是你梦中的女郎','<200,300,400,300,510,500,610><310,400,300,510,400,400,500><200,510,400,400,410,500,300><210,400,300,400,400,510,600>');

2.4.2歌词读取器实体



2.4.3歌词解析部分代码





3总结

经过以上歌词的解析,我觉得酷狗的歌词解析起来是最为轻松的。

不过歌词的解析的过程,大致可概括为如下几点:

(1)读取文件内容,如果歌词内容加密的,要进行解密

(2)以行分割文件内容,得到每一行的内容

(3)匹配行内容,判断是标签行、还是歌词内容行

(4)如果是标签行内容,则根据标签类型解析内容

(5)如果是歌词内容行,则根据歌词格式解析歌词内容(主要用到正则表达式)

4参考

酷狗的krc歌词文件的解析

5源码

歌词解析和生成器

6最后

下一篇,将介绍动感歌词的显示。如有侵权,麻烦告知。

相关文章
相关标签/搜索