酷狗

最近在进行一次对酷狗音乐歌词采集时发现酷狗音乐的歌词直接浏览都是“乱码”,自己平时所见的歌词都是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中文网

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

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

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

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

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

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

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

  4. java解析xml文件的几种方式(DOM解析)

    好久不用的东西,今天居然被面试官问到了.那既然这样,我们就一起回顾下java解析xml文件的几种方式吧. DOM解析 dom解析所需依赖是我们jdk自带的,所以只需要使用jdk为我们提供的接口即可上手 ...

  5. 程序实现php文件上传,PHP实例:实现文件上传的程序源码_php

    以下为引用的内容: 文件上传界面 http://www.gaodaima.com/48380.htmlphp实例:实现文件上传的程序源码_php if($UploadAction){ $UploadA ...

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

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

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

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

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

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

  9. 酷狗 KRC 文件的解析

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

  10. php中文歌词,将酷狗krc歌词解析并转换为lrc歌词php源码

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

最新文章

  1. C语言图书管理系统注册功能,图书管理系统的c语言源程序
  2. 数据库查询构建控件集Active Query Builder 控件
  3. spring IOC容器设计理念与核心注解的使用
  4. 【赫夫曼树详解】赫夫曼树简介及java代码实现-数据结构07
  5. 资源不关闭,会导致什么最坏的结果
  6. jzoj3508-好元素【hash,优雅的暴力】
  7. 非替换元素和替换元素
  8. 如何实现上一条、下一条的功能
  9. pytorch load state dict_pytorch源码阅读(二)optimizer原理
  10. 【Codeforces Round #442 (Div. 2) C】Slava and tanks
  11. Mysql DBA 高级运维学习之路-DQL语句之select知识讲解
  12. android mvp快速创建,学习MVPArms历程之Android Studio快速创建ArmsComponent组件化项目
  13. Xmind思维导图 常用快捷键使用
  14. MATLAB-APP编程
  15. github热门java项目_盘点Github上热门的Java开源项目
  16. iOS App处于后台/被杀死的状态仍可进行语言播报的实现 (适配iOS12.1 ,iOS15的本地通知功能)
  17. SetDlgItemText
  18. CentOS 7虚拟机克隆,以及克隆后主机名和静态IP地址的修改,无法重启网络服务( because the control process exited with error code)的解决方法
  19. 韩立刚网络视频—学习记录
  20. Spring Boot+OAuth2使用GitHub登录自己的服务

热门文章

  1. 产品需求文档模板,不用找了(附“简”例)【转】
  2. 人脸识别之数据库存取
  3. 初中计算机成绩评定方案,初中信息技术学科评价方案
  4. 星空特效HTML代码,旋转的星空特效代码
  5. dk 7 linux x64.rpm,linux x64 Java/JDK 11下载 jdk-11.0.7_linux-x64_bin.rpm官方镜像版
  6. 计算机常见故障英语,常见电脑黑屏(有英文字母)的解决办法
  7. message计算机英语,计算机英语词汇解释汇总
  8. linux经典学习网站及博客
  9. MMI、SS、USSD介绍
  10. Altium Designer 2020 学习笔记(四)------PCB布线、DRC检查、拼版设计、资料输出(配动态图操作演示)