首页 > 代码库 > 二、酷狗 歌词下载
二、酷狗 歌词下载
上篇中得到的JSON穿通过解析可以得到以下数据
TSearchKg=record
singername:string;//歌手名
filename:string;//歌词名
hash:string;//哈希验证
timelength:string;//时长
end;
酷狗歌词下载Url:http://mobilecdn.kugou.com/new/app/i/krc.php?‘ + ‘keyword=‘ +
song + ‘&timelength=‘ + timelength + ‘&type=1‘ + ‘&cmd=200‘ +‘&time=‘+time+
‘&hash=‘ + hash;
song为utf8编码,有字符的处理转码需要特别处理,也许有更巧妙的UrlCode方式,但是我这里只解析song字段,所以这样处理,可能比较麻烦
1 function StrToHex5(str: string; AEncoding: TEncoding): string; 2 var 3 ss: TStringStream; 4 i: Integer; 5 reg:TPerlRegex; 6 begin 7 Result := ‘‘; 8 reg:=TPerlregex.Create; 9 ss := TStringStream.Create(str, AEncoding);10 try11 for i := 0 to ss.Size - 1 do12 begin13 reg.Subject:=char(ss.Bytes[i]);14 reg.RegEx:= ‘[a-zA-Z0-9]|\-|\.‘;15 if reg.Match then16 begin17 result:=result+char(ss.Bytes[i]);18 continue;19 end;20 21 if Trim(Char(ss.Bytes[i])) = ‘ ‘ then22 begin23 result:=Result + ‘%20‘;24 Continue;25 end;26 27 Result := Result + ‘%‘ + Format(‘%.2x‘, [ss.Bytes[i]]);28 end;29 finally30 ss.Free;31 reg.Free;32 end;33 end;
timelength,hash以通过搜索获取
time字段为时间戳,System.DateUtils单元中有function DateTimeToUnix(const AValue: TDateTime; AInputIsUTC: Boolean): Int64;
可以转换获取AInputIsUTC默认True设置False
字段值全部获取成功,提交链接,我通过Idhttp下载下来的文件在头尾都会多出一些内容,尚未查明原因,
所以直接用系统自带的下载Api下载
添加Winapi.UrlMon单元,使用URLDownloadToFile(nil,pchar(下载链接),pchar(保存路径),0,nil);即可
二、酷狗 歌词下载
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。