gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章将酷狗krc歌词解析并转换为lrc歌词php源码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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解析代码:

?
1
2
3
4
5
6
7
8
$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歌词了,如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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 ;
}

简单示例如下:

?
1
2
$content = file_get_contents ( '1.krc' );
echo krc2lrc( $content , '<br/>' );

最后此篇关于将酷狗krc歌词解析并转换为lrc歌词php源码的文章就讲到这里了,如果你想了解更多关于将酷狗krc歌词解析并转换为lrc歌词php源码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com