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,''); 分享,方便以后有类似需求的人查询! |
|
|
|