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参考
5源码
6最后
下一篇,将介绍动感歌词的显示。如有侵权,麻烦告知。