将酷狗krc歌词解析并转换为lrc歌词php源码


Posted in PHP onJune 20, 2014

最近在进行一次对酷狗音乐歌词采集时发现酷狗音乐的歌词直接浏览都是“乱码”,自己平时所见的歌词都是lrc格式的文本,这种酷狗专用的krc格式的显然是经过特别处理过的,平时用酷狗听音乐也没仔细看他的歌词有什么不同,只是与天天静听等不同的是可以逐字高亮显示歌词。

对酷狗的flash播放器进行反编译,发现这段krc解密的ActionScript代码:

public function loaderCompleteHandler(param1:ByteArray) : void{ 
 this.newkeyBytes = [64, 71, 97, 119, 94, 50, 116, 71, 81, 54, 49, 45, 206, 210, 110, 105]; 
 var result:* = param1; 
 var krcBytes:* = new ByteArray(); 
 result.position = 4; 
 result.readBytes(krcBytes); 
 var l:* = krcBytes.length; 
 var i:int; 
 while (i < l) {
 krcBytes[i] = krcBytes[i] ^ this.newkeyBytes[i % this.newkeyBytes.length]; 
 i = (i + 1); 
 }
 try { 
 krcBytes.uncompress(); 
 } catch (error:SecurityError) { 
 errorfun("uncompressError");
 return; 
 } 
 krcBytes.position = 0; 
 this.myLyric.dataStr = krcBytes.readUTFBytes(krcBytes.length); 
 this.successfun(); 
 return; 
}

根据这段代码可以很快转换成php解析代码:

$enKey = array(64, 71, 97, 119, 94, 50, 116, 71, 81, 54, 49, 45, 206, 210, 110, 105);
$krc_content = substr($krc_content,4);
$len = strlen($krc_content);
$krc_compress = '';
for ($k = 0; $k < $len; $k++){
 $krc_compress .= chr(ord($krc_content[$k]) ^ $enKey[$k % 16]);
}
$krc_text = gzuncompress($krc_compress);

上面的$krc_content为krc歌词压缩加密的文本内容,得到了解析后的krc明文文本歌词$krc_text,然后就可以很容易的转换成lrc歌词了,如下:

function krc2lrc($krc_content,$glue = "n"){
 $enKey = array(64, 71, 97, 119, 94, 50, 116, 71, 81, 54, 49, 45, 206, 210, 110, 105);
 $krc_content = substr($krc_content,4);
 $len = strlen($krc_content);
 $krc_compress = '';
 for ($k = 0; $k < $len; $k++){
 $krc_compress .= chr(ord($krc_content[$k]) ^ $enKey[$k % 16]);
 }
 $krc_text = gzuncompress($krc_compress);
 preg_match_all("/[(ar|ti|offset):(.+)]/",$krc_text,$matches);
 $lrc_text = implode($glue,$matches[0]).$glue;
 preg_match_all("/[(d{0,8}),(d{0,8})](.+)/",$krc_text,$matches);
 unset($krc_text,$krc_compress,$krc_content,$enKey);
 if(!empty($matches[1])){
 foreach($matches[1] as $k=>$v){
 list($seconds, $millis) = explode('.', $v / 1000); 
 $lrc_time = date('i:s',1388534400 + $seconds).'.'.substr($millis,0,2);
 $lrc_cont = preg_replace("/<d{1,8},d{1,8},d{1,8}>/",'',$matches[3][$k]);
 $lrc_text .= "[{$lrc_time}]{$lrc_cont}{$glue}";
 }
 }
 return $lrc_text;
}

简单示例如下:

$content = file_get_contents('1.krc');
echo krc2lrc($content,'<br/>');
PHP 相关文章推荐
PHP Token(令牌)设计
Mar 15 PHP
php判断字符串在另一个字符串位置的方法
Feb 27 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
详解php设置session(过期、失效、有效期)
Nov 12 PHP
学习php设计模式 php实现建造者模式
Dec 07 PHP
简单概括PHP的字符串中单引号与双引号的区别
May 07 PHP
php+html5+ajax实现上传图片的方法
May 14 PHP
简单理解PHP的面向对象编程方式
May 17 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
Feb 12 PHP
php解决约瑟夫环算法实例分析
Sep 30 PHP
在laravel中实现将查询的对象转换为多维数组的函数
Oct 21 PHP
使用PHP开发留言板功能
Nov 19 PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 #PHP
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 #PHP
PHP扩展CURL的用法详解
Jun 20 #PHP
教你如何解密 “ PHP 神盾解密工具 ”
Jun 20 #PHP
ThinkPHP3.1查询语言详解
Jun 19 #PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 #PHP
ThinkPHP3.1.3版本新特性概述
Jun 19 #PHP
You might like
用PHP实现WEB动态网页静态
2006/10/09 PHP
刚才在简化php的库,结果发现很多东西
2006/12/31 PHP
php下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
php中过滤非法字符的具体实现
2013/10/29 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
理解javascript模块化
2016/03/28 Javascript
利用JS实现页面删除并重新排序功能
2016/12/09 Javascript
JavaScript之生成器_动力节点Java学院整理
2017/06/30 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
2019/04/04 Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
2019/08/29 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python常用正则表达式符号浅析
2014/08/13 Python
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
Python英文文章词频统计(14份剑桥真题词频统计)
2019/10/13 Python
妙用itchat! python实现久坐提醒功能
2019/11/25 Python
python爬虫实现获取下一页代码
2020/03/13 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
python 制作本地应用搜索工具
2021/02/27 Python
Champs Sports加拿大:北美最大的以商场为基础的专业运动鞋和服装零售商之一
2018/05/01 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
机电一体化专业应届生求职信
2013/11/27 职场文书
公务员职业生涯规划书范文  
2014/01/19 职场文书
借款协议书
2014/04/12 职场文书
国贸专业求职信
2014/06/28 职场文书
幼儿园植树节活动总结
2014/07/04 职场文书
物流管理专业推荐信
2014/09/06 职场文书
教师研修随笔感言
2015/11/18 职场文书
《吸血鬼:避世 血猎》官宣4.27发售 系列首款大逃杀
2022/04/03 其他游戏