#!/usr/bin/env python # -*- coding: utf-8 -*- import wx from urllib2 import URLError from urllib2 import HTTPError import urllib2,os import random import time from wx.lib.pubsub import pub from threading import Thread class DownloadFile(): def __init__(self,url,nameFile): self.url = url self.nameFile = nameFile self.downloading = True def start(self): file_name = self.nameFile try: u = urllib2.urlopen(self.url) f = open(file_name, 'wb') meta = u.info() file_size = int(meta.getheaders("Content-Length")[0]) except: return False block_sz = 8192 while self.downloading: buffer = u.read(block_sz) if not buffer: self.downloading = False f.write(buffer) return True class DownloadFile2(Thread): def __init__(self,url,nameFile): self.url = url self.nameFile = nameFile self.downloading = True Thread.__init__(self) def stop(self): self.downloading = False def run(self): file_name = self.nameFile try: u = urllib2.urlopen(self.url) f = open(file_name, 'wb') meta = u.info() file_size = int(meta.getheaders("Content-Length")[0]) except : wx.CallAfter(pub.sendMessage, "erroDeConexao", msg="Falha na conexao") self.downloading = False; return False file_size_dl = 0 block_sz = 8192 while self.downloading: buffer = u.read(block_sz) if not buffer: break file_size_dl += len(buffer) f.write(buffer) status = r"%10d [%3.2f%%]" % (file_size_dl, file_size_dl * 100. / file_size) status = status + chr(8)*(len(status)+1) wx.CallAfter(pub.sendMessage, "updateProgress", msg=(file_size_dl * 100. / file_size)) if (file_size_dl * 100. / file_size) >=100: wx.CallAfter(pub.sendMessage, "downloadSucess", msg="Download realizado")