admin管理员组文章数量:1650881
上篇中得到的JSON穿通过解析可以得到以下数据
TSearchKg=record
singername:string;//歌手名
filename:string;//歌词名
hash:string;//哈希验证
timelength:string;//时长
end;
酷狗歌词下载Url:http://mobilecdn.kugou/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 try 11 for i := 0 to ss.Size - 1 do 12 begin 13 reg.Subject:=char(ss.Bytes[i]); 14 reg.RegEx:= '[a-zA-Z0-9]|\-|\.'; 15 if reg.Match then 16 begin 17 result:=result+char(ss.Bytes[i]); 18 continue; 19 end; 20 21 if Trim(Char(ss.Bytes[i])) = ' ' then 22 begin 23 result:=Result + '%20'; 24 Continue; 25 end; 26 27 Result := Result + '%' + Format('%.2x', [ss.Bytes[i]]); 28 end; 29 finally 30 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);即可
转载于:https://wwwblogs/ab0416/p/4087673.html
版权声明:本文标题:二、酷狗 歌词下载 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1729550224a1206118.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论