最近在进行一次对酷狗音乐歌词采集时发现酷狗音乐的歌词直接浏览都是“乱码”,自己平时所见的歌词都是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("//",'',$matches[3][$k]);

$lrc_text .= "[{$lrc_time}]{$lrc_cont}{$glue}";

}

}

return $lrc_text;

}

简单示例如下:

$content = file_get_contents('1.krc');

echo krc2lrc($content,'
');

php中文歌词,将酷狗krc歌词解析并转换为lrc歌词php源码相关推荐

  1. 仿酷狗播放显示界面返回动画效果(附源码)

    分类 奇技淫巧 的第一篇博文,以后会有更多奇技淫巧与大家分享~ 先看看酷狗的效果: [img]http://dl2.iteye.com/upload/attachment/0096/6694/1e91 ...

  2. java仿酷狗音乐源码_【附项目源码】仿酷狗音乐客户端,浅淡动感歌词补充

    原标题:[附项目源码]仿酷狗音乐客户端,浅淡动感歌词补充 1.前言 之前写了几篇关于动感歌词的简单介绍,相信大家还有印象,这里就不多说了,这篇要说的是,关于翻译歌词和音译歌词,以及我在解析和显示这两种 ...

  3. 截获网易云、酷狗、QQ音乐播放器桌面歌词画面心德

    在直播项目中 需要捕获某个窗口的画面并共享 总结了如下几种场景中窗口的捕获方法 1.dc拷贝(BitBlt.PrintWindow) 这是最基本的方法 直接拿到窗口dc 然后从dc中拷贝窗口画面 可优 ...

  4. 炫酷手持滚动弹幕生成小工具微信小程序源码

    ☑️ 编号:ym335 ☑️ 品牌:无 ☑️ 语言:php ☑️ 大小:1.18MB ☑️ 类型:炫酷手持滚动弹幕生成 ☑️ 支持:微信小程序源码

  5. 优雅炫酷的WordPress 导航主题 适合做小众化导航站 源码下载

    优雅炫酷的WordPress 导航主题 适合做小众化导航站 源码下载-八羊资源下载_资源下载_方法获取_课程下载

  6. 机器狗写入到userinit.exe文件的下载者源码(c及汇编)

    机器狗源码(C语言的),将病毒体从资源中提取出来写入到第一个分区的指定文件中 // Test.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" ...

  7. 仿优酷视频焦点轮播图布局html页面前端源码

    大家好,今天给大家介绍一款,仿优酷视频焦点轮播图布局html页面前端源码(图1).送给大家哦,获取方式在本文末尾. 图1 可以用菜单控制切换(图2) 图2 整体布局简洁明了,干净简单(图3) 图3 代 ...

  8. 网易云音乐歌曲没歌词用酷狗展现的方式

    有时候, 网易云音乐的伴奏的歌曲是没有歌词的, 这个时候我们又需要歌词怎么办, 笔者测试发现部分伴奏的歌曲在酷狗是可以直接匹配到歌词的,于是提供这种思路来完成这个功能. 在网易云音乐里下载下来歌曲,用 ...

  9. php计算QQ音乐guid,php实现网易云音乐 QQ音乐 酷狗音乐直链获取 搜索音乐及歌词...

    抓取方法来源于 其中酷狗与QQ来源于网络上的Meting.php 访问形式为GET 参数: method 值: netease //网易 tencent //QQ kugou //酷狗 参数: typ ...

最新文章

  1. 比特币现金社区推出OP_RETURN的4字节前缀指南
  2. C++中的变量不初始化是什么结果?(整型、bool型、字符型)结果都是随机的,不确定
  3. JSON序列化(stringify)对象时排除某些属性的两种方法
  4. Vue CLI 3 可以使用 TypeScript 生成新工程
  5. self-trainning, co-trainning
  6. C语言指针实数组输入输出,C语言:回来两个数组中第一个元素的指针,并输出这个值...
  7. 广西专业技术人员职称个人版_「职称评审」机械工程专业技术人员如何写职称论文?...
  8. Javascript对象扩展 - JsPoint类
  9. 链表(创建,插入,删除和打印输出
  10. leetcode 并查集 547.省份数量/200岛屿数量
  11. jsf初学解决faces 中文输入乱码问题
  12. pytorch: 将一序列操作串联
  13. php 监听redis,swoole如何监听redis数据
  14. 阿里云云计算 41 阿里云CDN的工作原理
  15. debian笔记本电源管理
  16. 鬼谷子---捭阖第一
  17. win7台式计算机型号怎么查,教您电脑主板型号怎么看
  18. 非常有用的制作logo的网站
  19. BUUCTF:[INSHack2018]Self Congratulation
  20. 微信定位和HTML5定位

热门文章

  1. QPS/TPS/并发量/系统吞吐量概念和公式
  2. malloc与new,free与delete
  3. 手机芯片三国杀:高通、联发科、展讯都想成霸主
  4. C/C++通用Makefile
  5. defer与async的认识
  6. 怎样解决ASP图片上传漏洞的方法
  7. 猫叫老鼠跑的事件例子
  8. 在AD中批量添加多个用户帐号
  9. jquery的closest方法和parents方法的区别
  10. 移动开发架构之MVVM模式