在这里我们介绍使用php来实现酷狗krc歌词解析并转换为lrc歌词了,文章是转一站长的希望对各位朋友会有所帮助。

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

于是搜索了下发现有个java版的半成品解密代码,测试了下竟然还是“乱码”,巨坑!于是只有采用最原始的办法,对酷狗的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歌词了,如下:

 代码如下 复制代码

/**

* krc歌词解析并转换为lrc歌词

* $Name: krc2lrc  2014-4-18  qaulau$

*

* @param string $krc_content 加密的krc歌词内容

* @param string $glue   处理后的lrc歌词连接字符,默认为换行符n

*/

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. php中文歌词,将酷狗krc歌词解析并转换为lrc歌词php源码

    最近在进行一次对酷狗音乐歌词采集时发现酷狗音乐的歌词直接浏览都是"乱码",自己平时所见的歌词都是lrc格式的文本,这种酷狗专用的krc格式的显然是经过特别处理过的,平时用酷狗听音乐 ...

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

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

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

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

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

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

  5. 酷狗音乐列表解析,提取歌曲名

    (目前,支持的浏览器有:IE.火狐,及搜狗的IE模式) 该博文要解决的问题是:将酷狗音乐列表中的歌曲名提取出来. 我们清楚,如果你的好友没有装KuGoo音乐播放器.那么你是不能通过,导出音乐列表的方式 ...

  6. android 酷狗demo_酷狗音乐(Android)v8.1.5去广告清爽版

    本帖最后由 三生三世 于 2016-7-11 10:56 编辑 酷狗音乐安卓版更新至v8.1.5版.酷狗音乐(Android)是迄今为止最强大,最多人使用的音乐软件!有强大的音乐搜索,高速下载,海量曲 ...

  7. 酷狗 KRC 文件的解析

    清理硬盘发现以前写过一个进行一半的代码,这次补全并从硬盘删掉. 格式说明来自 https://shansing.com/read/392/ krc解码并解压缩后得到一个字符串,例子: [id:$000 ...

  8. 酷狗mv php解析api接口,酷狗音乐API接口大全(40 个)

    歌单分类部分 获取精选专区所有分类 http://mobilecdnbj.kugou.com/api/v3/tag/list?pid=0&apiver=2&plat=0 获取热门推荐分 ...

  9. 酷狗mv php解析api接口,酷狗音乐API接口大全(40+个)

    歌单分类部分 获取精选专区所有分类 获取热门推荐分类 获取分类详细信息 获取分类歌单信息 歌单 热门歌单 新歌部分 华语新歌 1 欧美新歌 2 日韩新歌 3 歌曲部分 歌曲下载链接(通过album_i ...

  10. [Qt C++]对酷狗krc文件进行解码

    按照http://www.52pojie.cn/thread-286822-1-1.html 的方法,用楼主提供的E语言代码,改写了一个C++的.程序用到了Zlib库进行解码,请参看我上一篇文章.(h ...

最新文章

  1. 不若鸿蒙的意思,任正非说鸿蒙媲美iOS不用三年,华为若出鸿蒙手机你会买吗?...
  2. Zookeeper和 Google Chubby对比分析
  3. 北京内推 | 微软亚洲研究院机器学习组招聘AI for Health实习生
  4. C语言振动排序shaker sort算法(附完整源码)
  5. exls导入数据库 php_PHP Excel导入数据到MySQL数据库
  6. IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡
  7. (并查集)How Many Tables -- HDU --1213
  8. 全国750所高校(50所985/211)501个专业的毕业生在同一家公司搞事情
  9. Application和Console Application
  10. 如何阅读MySQL源码
  11. “至良知”学习心得—奎特尔星球复活了!
  12. 【集合】CFdiv.2#600B Silly Mistake
  13. 计算机查看图片的打开方式,win10如何设置打开图片方式为照片查看器-img文件怎么打开...
  14. Altium Designer原理图与PCB设计学习笔记6——AD如何在多个原理图中查找相同的网络标号
  15. System.BadImageFormatException: 未能加载文件或程序集
  16. c语言中地址值是什么意思,单片机C语言中如何区别是地址还是数值啊?
  17. Linux进程管理四大工具ps \dstat\ top\ htop
  18. 根据经纬度查询地名,
  19. matlab并行加路径,matlab parfor_matlab 添加到路径_matlab 分布式计算
  20. 弘辽科技:数字化衍生菜篮子工程,电商巨头纷纷布局

热门文章

  1. 中国中央空调行业竞争力策略及未来发展潜力预测报告2021年版
  2. python 使用 reportlab 生成 pdf
  3. 三凌PLC源码,STM32F205VCT6主控PLC控制器板,已批量生产
  4. SQL(五) 数据库 表格删除 表格内容删除
  5. 《信条》中国内地IMAX首周末票房表现强劲;洲际集团将在川滇环线新开四家酒店 | 美通企业日报...
  6. 华展云-让展览更高效 2017第6届中国国防信息化装备与技术博览会会刊(参展商名录)
  7. 字体大宝库:15款漂亮的艺术字体免费下载
  8. VL17-decoder38译码器带使能端、低电平有效!
  9. 如何对酒店的固定资产进行日常管理?
  10. C#网络编程技术教程pdf 文档分享