Advertisement
Guest User

Untitled

a guest
Sep 17th, 2010
425
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.00 KB | None | 0 0
  1. import sys, os
  2. from PyQt4 import QtCore, QtGui
  3. from PyQt4.QtCore import *
  4. from PyQt4.QtGui import *
  5. from PyQt4.QtNetwork import *
  6. class QDownloader(QProgressDialog):
  7.   def __init__(self, parent=None):
  8.     QProgressDialog.__init__(self, parent)
  9.     self.parent = parent
  10.     self.url = "https://sourceforge.net/projects/python-jake/files/betas/Jake-PyQT4-0.1.zip/download"
  11.     #self.url = "http://www.foro3d.com/attachments/51633d1181932251-ultimos-render-3d-max-vry-photoshop-puente-genil.jpg"
  12.     self.downloadPath = "/tmp/tmpreadfile"
  13.     self.manager = QNetworkAccessManager()
  14.     self.resize(self.size().width()*2, self.size().height())
  15.     self.manager.finished.connect(self.downloadFinished)
  16.     self.canceled.connect(self.cancelDownload)
  17.     self.show()
  18.     self.download()
  19.  
  20.   def download(self):
  21.     self.url = QUrl(self.url)
  22.     self.reply = self.manager.get(QNetworkRequest(self.url))
  23.     self.reply.downloadProgress.connect(self.updateDataReadProgress)
  24.  
  25.   def updateDataReadProgress(self, done, total):
  26.     print "UPDATE: " + str(done) + " of " + str(total)
  27.     self.setMaximum(total)
  28.     self.setValue(done)
  29.  
  30.   def downloadFinished(self, reply):
  31.     redirect = reply.attribute(QNetworkRequest.RedirectionTargetAttribute).toUrl()
  32.     print "ERROR: " + str(reply.attribute(QNetworkRequest.HttpStatusCodeAttribute).toInt())
  33.     print "HEADER: " + str(reply.header(2).toString())
  34.     if not redirect.isEmpty():
  35.       print "REDIRECT: " + str(redirect)
  36.       self.reply = self.manager.get(QNetworkRequest(redirect))
  37.       self.reply.downloadProgress.connect(self.updateDataReadProgress)
  38.     else:
  39.       self.updateFile = QFile(self.downloadPath)
  40.       self.updateFile.open(QIODevice.WriteOnly)
  41.       self.updateFile.write(self.reply.readAll())
  42.       self.updateFile.close()
  43.       self.reply.deleteLater()
  44.       self.manager.deleteLater()
  45.     reply.deleteLater()
  46.  
  47.   def cancelDownload(self):
  48.     self.reply.abort()
  49.  
  50. app = QtGui.QApplication(sys.argv)
  51. window = QDownloader()
  52. sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement