zoukankan      html  css  js  c++  java
  • 酷狗歌手写真一键提取工具

    工具下载:酷狗写真一键提取工具.zip

    前几天在听歌时,发现by2那性感撩人的照片,一股热血涌上心头,突然非常想下载这些照片。于是我百度了一下怎么提取,百度经验告诉了我。

    酷狗的歌词写真是保存在C:Users用户名AppDataRoamingKuGou8(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:UsersAdministratorAppDataRoamingKuGou8SingerImgSingerRes.xml 保存了歌手和KRS对应关系,可以分文件夹保存。

    如果工具不适合自己,可以自己修改和开发,现在感觉达到我的需求了。这些功能我就不实现了,如果有兴趣的可以反编译我的工具,代码太丑,全部代码就不公布了...

  • 相关阅读:
    Windows Phone开发之路(10) 进军WP的第一个程序
    Windows Phone开发之路(9) Silverlight之动画
    Windows Phone开发之路(13) 触摸
    使用Beetle进行高效的自定义二进制序列化
    网络通讯合并数据发送的重要性和实现原理
    开源网络文件管理工具SmarkNetDisk
    .net socket吞吐能力测试结果
    数值压缩存储方法Varint
    .NET 程序优化不要仅仅盯着代码执行时间
    ActionScript简单实现Socket Tcp应用协议分析器
  • 原文地址:https://www.cnblogs.com/xiaoshuai1992/p/kugouTool.html
Copyright © 2011-2022 走看看