淘小宝相册下载工具v2.0开发手记

2010021512390743.gif

图1:软件界面

软件用途:
这个小软件主要目的是为了方便批量下载淘小宝网络相册中的图片。
因为这个相册是收费的,空间有限,做服装等类型网店的朋友手中的产品图片往往过多,如果空间容量不够,解决办法当然是把过季的服装图片下载下来保存到硬盘上,再删除相册中的图片以节约空间。

目前淘宝店铺用得较广泛的支持外链的相册有:淘小宝,巴比豆,淘宝自己的相册空间,拍拍乐则已经倒闭了。

这个小程序很简单,原理无非是用正则式分析链接,然后按链接地址把图片下载下来。
以前开发的V1.0是易语言写的,有些用户报毒,我也很无耐,在易语言静态编译出来之前,这个是易语言的癌症。
所以现在V2.0换成了C#编写,彻底没有了这种烦恼。

代码如下,已经详细注释,不在浪费口条了:

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        //静态变量
        static String foldername = null; //保存用户输入的保存图片文件夹名称
        static int oversum = 0; //保存已经完成下载的计数
        static DateTime beginT; //下载开始的起始计时,用于完成下载统计总用时

        //用于更新标签文字的委托
        public delegate void delegateHandle(String msg1);
        public delegateHandle myDelegate;
        //用于更新进度条的委托
        public delegate void delegateHandle1(int value1);
        public delegateHandle1 myDelegate1;
       
        public Form1()
        {
            InitializeComponent();
            //绑定委托的成员函数
            myDelegate = new delegateHandle(refreshLable1);
            myDelegate1 = new delegateHandle1(refreshProgress1);
        }

        //委托成员函数refreshLable1
        p rivate void refreshLable1(String msg1)
        {
           this.label1.Text=msg1;
        }

        //委托成员函数refreshProgress1
        p rivate void refreshProgress1(int value1)
        {
            progressBar1.Value = value1;
            if (progressBar1.Maximum == oversum) //如果计数到达进度条最大值则转完成处理
            {
                //下载按钮恢复可用
                button1.Enabled = true;
                //静态变量清场
                foldername = null;
                oversum = 0;

                //更新lable1
                this.label1.Invoke(this.myDelegate, new object[] { "所有图片下载完成!耗时:"+DateTime.Now.Subtract(beginT)});

            }
        }
      
        p rivate void button2_Click(object sender, EventArgs e)
        {
            //用户点击帮助按钮
            Help.ShowHelp(this, "http://www.hackpig.cn/post/36.html");
        }

        p rivate void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Length < 10)
            {
                MessageBox.Show("没有输入链接地址,或者输入非法!");
                return;
            }

           
            foldername = Interaction.InputBox("请输入保存图片文件夹名称", "提示", "temp", this.Top, this.Left);
            if (foldername == "")
            {
                return;
            }
            //Debug.WriteLine(foldername);
            //创建目录
            foldername = Application.StartupPath + "\\" + foldername;
            try
            {
                Directory.CreateDirectory(foldername);
            }
            catch (Exception m)
            {
                MessageBox.Show(m.Message);
                return;
            }

            //下载按钮变灰
            button1.Enabled = false;
            //记录下载开始时间
            beginT = DateTime.Now;


            //正则式分析链接
            String imgurl = null;
            int s1 = 0;
            int s2 = 0;

            MatchCollection m1 = Regex.Matches(textBox1.Text, @"<\w+\s+src=(?<url>[\w\.\d:/]*)>", RegexOptions.IgnoreCase);
            //设置进度条最大值
            this.progressBar1.Maximum = m1.Count;

            //控制线程数量
            if (checkBox1.Checked)
            {
                s1 = 20; s2 = 20;
            }
            else
            {
                s1 = 1; s2 = 1;
            }
            //置线程池最大线程数
            ThreadPool.SetMaxThreads(s1, s2);

            foreach (Match m in m1)
            {
                imgurl = m.Groups["url"].ToString();
                ThreadPool.QueueUserWorkItem(new WaitCallback(dowork), (object)imgurl);
            }
           
        }
      
        //线程池回调函数dowork
        p rivate void dowork(object url)
        {
            WebClient web1 = new WebClient();
            //从链接取图片链接名
            //http://www21.tx8.cn/photo/youran362/201012094446744.jpg
            String linkurl = (String)url;
            String imgname = null;

            try
            {
                int pi = linkurl.LastIndexOf("/", StringComparison.InvariantCultureIgnoreCase) + 1;
                imgname = foldername + "\\" + linkurl.Substring(pi, linkurl.Length - pi);
                //Debug.WriteLine(imgname);

                web1.DownloadFile(linkurl, imgname);
                Debug.WriteLine(linkurl);
                Debug.WriteLine(Thread.CurrentThread.ManagedThreadId);
                Debug.WriteLine(DateTime.Now.ToString("mm:ss"));

                //更新UI的Lable1标签文本
                String msg1 = linkurl.Substring(pi, linkurl.Length - pi) + "下载完成!";
                this.label1.Invoke(this.myDelegate, new object[] { msg1 });
                //更新UI进度条
                ++oversum;
                this.progressBar1.Invoke(this.myDelegate1, new object[] { oversum });
            }
            catch (Exception e2)
            {
                MessageBox.Show(e2.Message);
            }

        }

    }
}
 

下载淘小宝相册下载工具

转载于:https://www.cnblogs.com/hackpig/archive/2010/02/15/1668488.html

演示图片: http://www.codepub.com/u/img/software1/2009-02-10_125912.gif 后台图片: http://www.codepub.com/u/img/software1/2009-02-10_125845.gif 本套系统为高仿小宝相册存储空间网络系统V1.0使用说明 -----系统功能-------- 1.系统网址、版权、备案、电信增值业务证、QQ、email、 联系电话、店铺名称、店铺链接、宝旺旺ID信息的设置 2.网店装修设计用户信息管理、审核开通功能 3.销售代理管理、开通和禁用 4.销售代理续费管理 5.相册空间套餐的增删改操作 6.首页轮播广告管理 7.网站帮助信息管理、添加 8.注册用户管理 9.修改密码 10.安全退出 --------购买空间的用户模块功能------- 1.空间功能免费体验 2.用户注册 3.用户登陆 4.找回密码 5.浏览方式管理图片 6.查看图片实际效果图 7.复制文件地址到剪贴板 8.复制图片代码到剪贴板 9.点击关闭图片信息页面 10.文件全选功能 11.图片批量复制 12.图片批量删除 13.图片批量转移 14.信息分页功能 15.拷贝网络地址到剪贴板 16.列表方式管理图片 17.文件夹管理 18.新建文件夹 19.删除文件夹 20.文件夹名称修改 21.图片批量上传 22.用户信息修改 23.用户在线续费/变更空间套餐 24.用户查看系统帮助信息 25.用户自己图片快速查找功能 26.安全退出 27.用户空间使用情况信息展示 28.在线购买空间功能 --------代理加盟模块功能------- 1.代理商申请注册 2.代理商管理后台 3.代理商信息展示(账号余额、代理ID、拥有会员总数、享受折扣、代理链接) 4.代理商基本信息修改、代理级别变更 4.用户管理 5.续费管理 6.账户详单查询 7.修改密码 8.安全退出 ----网店装修设计模块-------------- 1.网店装修用户在线申请加入注册 2.上传店铺图标、店铺名、店铺简介、宝旺旺ID、QQ、店铺链接 3.网店装修用户刷新置顶自己店铺信息功能 后台路径:bbhtgl/login.asp 管理账号、密码都是admin 代理商管理入口:adminht/login.asp 设计装修用户注册路径:/jrsjtd.asp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值