酷狗歌手写真一键提取工具
工具下载:酷狗写真一键提取工具.zip
前几天在听歌时,发现by2那性感撩人的照片,一股热血涌上心头,突然非常想下载这些照片。于是我百度了一下怎么提取,百度经验告诉了我。
酷狗的歌词写真是保存在C:\Users\用户名\AppData\Roaming\KuGou8(7)\SingerImg 目录下,格式为KRS,不容易提取。
有一个园友刚好写过一个KRS提取工具,也是用来提取酷狗歌词的,但是不是很智能,而且功能比较简单,于是我就自己搞了个,本人运行效果还不错。
软件界面和说明
1.自动识别当前用户,找到酷狗写真文件夹
2.友好的提示和进度信息
3.一键获取,不需要额外的操作,默认保存路径为D:\酷狗歌手写真,没有D盘我也没有办法...
4.运行清理工具清理后我也没有办法...
5. win7 net framework 3.5
6,安装了酷狗,有写真需要提取...
运行后的结果
代码实现
主要的核心是怎么提取KRS文件,解析代码如下
/// <summary> /// 获取KRS文件流的字符串 /// </summary> /// <param name="path"></param> /// <returns></returns> public string ReadFiles(string path) { FileStream stream = null; string str; try { if (File.Exists(path)) { stream = File.OpenRead(path); byte[] buffer = new byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); stream.Flush(); return this.byteToHexStr(buffer); } str = null; } catch (Exception exception) { throw exception; } finally { if (stream != null) { stream.Close(); stream.Dispose(); } } return str; }
/// <summary> /// 转16进制 /// </summary> /// <param name="bytes"></param> /// <returns></returns> public string byteToHexStr(byte[] bytes) { string str; try { StringBuilder builder = new StringBuilder(); if (bytes != null) { for (int i = 0; i < bytes.Length; i++) { builder.Append(bytes[i].ToString("X2")); } } str = builder.ToString(); } catch (Exception exception) { throw exception; } return str; }
/// <summary> /// 得到文件的进制字符串 /// </summary> /// <param name="krsData"></param> /// <returns></returns> public List<string> getPicHexs(string krsData) { List<string> list = new List<string>(); Regex regex = new Regex("FFD9(0A)*$"); string[] strArray = krsData.Replace("FFD8FFE0", "|").Split(new char[] { '|' }); foreach (string str in strArray) { if (regex.IsMatch(str)) { list.Add("FFD8FFE0" + str); } } return list; }
/// <summary> /// 保存图片文件 /// </summary> /// <param name="data">KRS单个图片的字符串</param> /// <param name="path">图片文件保存路径</param> public void WriteFiles(string data, string path) { FileStream stream = null; try { stream = File.Create(path); byte[] buffer = strToToHexByte(data); stream.Write(buffer, 0, buffer.Length); stream.Flush(); } catch (Exception exception) { throw exception; } finally { if (stream != null) { stream.Close(); stream.Dispose(); } } }
思考和可扩展功能
1.自由选取保存和打开路径
2.C:\Users\Administrator\AppData\Roaming\KuGou8\SingerImg\SingerRes.xml 保存了歌手和KRS对应关系,可以分文件夹保存。
如果工具不适合自己,可以自己修改和开发,现在感觉达到我的需求了。这些功能我就不实现了,如果有兴趣的可以反编译我的工具,代码太丑,全部代码就不公布了...