免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2209 | 回复: 0

Python 下载器 [复制链接]

论坛徽章:
0
发表于 2011-01-28 19:16 |显示全部楼层
Python 下载器
来自 OSchina

代码] downloadfile.py
view sourceprint?
01
# coding=UTF-8
02
import wx;
03
from com.download import download;
04
import os;
05
class Downloadfile(wx.Frame):
06
    def __init__(self):
07
        #save file url;
08
        self.saveURL = ""
09
        wx.Frame.__init__(self,None,-1,"download",size=(400,150));
10
        panel = wx.Panel(self,-1);
11
        self.topLabel = wx.StaticText(panel,-1,"1,enter url 2, click save 3, start down")
12
        self.topLabel.SetFont(wx.Font(18,wx.SWISS,wx.NORMAL,wx.BOLD))
13
        self.label1 = wx.StaticText(panel,-1,"  url:  ");
14
        self.label1.SetFont(wx.Font(14,wx.SWISS,wx.NORMAL,wx.BOLD))
15
        self.input1 = wx.TextCtrl(panel,-1);
16
        #self.input1.SetInsertionPoint(0);
17
        self.input1.Value = "http://archive.ibobar.com/files/huana/audio/elva/elva05.mp3"
18
        self.saveBtn = wx.Button(panel,-1,"save");
19
        self.Bind(wx.EVT_BUTTON,self.save,self.saveBtn)
20
        self.button = wx.Button(panel,-1,"down");
21
        self.Bind(wx.EVT_BUTTON,self.startDown,self.button);
22
        self.gauge = wx.Gauge(panel,-1,100,(20,90),(350,25));
23
        self.gauge.SetBezelFace(3);
24
        self.gauge.SetShadowWidth(3);
25
        self.gaugeLB = wx.StaticText(panel,-1,"0%");
26
        self.gaugeLB.SetFont(wx.Font(14,wx.SWISS,wx.NORMAL,wx.BOLD))
27
        self.multText = wx.TextCtrl(panel,-1,"",size=(400,100),style=wx.TE_MULTILINE)
28
        #Add(window, proportion=0, flag=0, border=0, userData=None)
29
        mainSize = wx.BoxSizer(wx.VERTICAL);
30
        mainSize.Add(wx.StaticLine(panel),0,wx.EXPAND);
31
        mainSize.Add(self.topLabel);
32
        mainSize.Add(wx.StaticLine(panel),0,wx.EXPAND);
33
        urlSizer = wx.FlexGridSizer(cols=2,hgap=5,vgap=5);
34
        urlSizer.AddGrowableCol(1);
35
        urlSizer.Add(self.label1,0,wx.Left);
36
        urlSizer.Add(self.input1,0,wx.EXPAND);
37
        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
38
        btnSizer.Add((20,20), 1)
39
        btnSizer.Add(self.saveBtn)
40
        btnSizer.Add((20,20), 1)
41
        btnSizer.Add(self.button)
42
        btnSizer.Add((20,20), 1)
43
        progressSizer = wx.BoxSizer(wx.HORIZONTAL);
44
        progressSizer.Add(self.gauge);
45
        progressSizer.Add((20,20), 0)
46
        progressSizer.Add(self.gaugeLB);
47
        textSizer = wx.FlexGridSizer(cols=2,hgap=5,vgap=5);
48
        textSizer.AddGrowableCol(0);
49
        textSizer.Add(self.multText,0,wx.EXPAND);
50
        mainSize.Add(urlSizer,0,wx.EXPAND|wx.ALL,10);
51
        mainSize.Add(btnSizer,0,wx.EXPAND|wx.ALL,10);
52
        mainSize.Add(progressSizer,0,wx.EXPAND|wx.ALL,10);
53
        mainSize.Add(textSizer,0,wx.EXPAND|wx.ALL,10);
54
        panel.SetSizer(mainSize);
55
        mainSize.Fit(self);
56
        mainSize.SetSizeHints(self);
57
        self.addLog("---------please select save file-------");
58
    def addLog(self,t):
59
        self.multText.AppendText(t+'\n');
60
    def startDown(self,event):
61
        self.addLog("---start download file");
62
        down = download(self.input1.Value,self.saveURL,self.changeProgress,self.downComplete)
63
    def getNameFromURL(self,url = ""):
64
        ls = str(url).split("/");
65
        return ls[len(ls)-1];
66
    def save(self,event):
67
        self.addLog("---start select save file");
68
        woldcard= "All files(*.*)|*.*";
69
        dialog = wx.FileDialog( None , "save file" , os.getcwd() , self.getNameFromURL(self.input1.Value) , woldcard , wx.SAVE);
70
        if dialog.ShowModal() == wx.ID_OK:
71
            self.saveURL = dialog.GetPath();
72
            self.addLog("---selected file: " + self.saveURL )
73
        dialog.Destroy();
74
    def changeProgress(self,n=0):
75
        self.gauge.SetValue(n);
76
        self.gaugeLB.SetLabel( str(n)+'%')
77
    def downComplete(self,event):
78
        self.addLog("---------down complete ! ---------");
79
        dlg = wx.MessageDialog(None,"download complete! " , "complete" , style = wx.OK)
80
        code = dlg.ShowModal();
81
        dlg.Destroy();
82
if __name__ == "__main__":
83
    app = wx.PySimpleApp();
84
    frame = Downloadfile();
85
    frame.Show();
86
    app.MainLoop();

[代码] download.py

01
# coding=UTF-8
02
import urllib;
03
import wx;
04
def download(url,filename="" , fun="" ,completeF=""):
05
    def myreporthook(block_count,block_size,file_size):
06
         if file_size == -1 :
07
            print "can't download file";
08
         else:
09
            percentage = int( (block_count*block_size*100)/file_size );
10
            fun(percentage);
11
            if percentage > 100 :
12
                print "100%";
13
            else:
14
              print "%d%%" % (percentage);
15
    filehandler,m = urllib.urlretrieve(url,filename,reporthook = myreporthook );
16
    print "done";
17
    completeF();
18
    return filehandler;
19
#if __name__ == "__main__":
20
#  http = download("http://archive.ibobar.com/files/huana/audio/elva/elva05.mp3" , "e:/1.mp3");
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP