Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys, os
- from PyQt4 import QtCore, QtGui
- from PyQt4.QtCore import *
- from PyQt4.QtGui import *
- from PyQt4.QtNetwork import *
- class QDownloader(QProgressDialog):
- def __init__(self, parent=None):
- QProgressDialog.__init__(self, parent)
- self.parent = parent
- self.url = "https://sourceforge.net/projects/python-jake/files/betas/Jake-PyQT4-0.1.zip/download"
- #self.url = "http://www.foro3d.com/attachments/51633d1181932251-ultimos-render-3d-max-vry-photoshop-puente-genil.jpg"
- self.downloadPath = "/tmp/tmpreadfile"
- self.manager = QNetworkAccessManager()
- self.resize(self.size().width()*2, self.size().height())
- self.manager.finished.connect(self.downloadFinished)
- self.canceled.connect(self.cancelDownload)
- self.show()
- self.download()
- def download(self):
- self.url = QUrl(self.url)
- self.reply = self.manager.get(QNetworkRequest(self.url))
- self.reply.downloadProgress.connect(self.updateDataReadProgress)
- def updateDataReadProgress(self, done, total):
- print "UPDATE: " + str(done) + " of " + str(total)
- self.setMaximum(total)
- self.setValue(done)
- def downloadFinished(self, reply):
- redirect = reply.attribute(QNetworkRequest.RedirectionTargetAttribute).toUrl()
- print "ERROR: " + str(reply.attribute(QNetworkRequest.HttpStatusCodeAttribute).toInt())
- print "HEADER: " + str(reply.header(2).toString())
- if not redirect.isEmpty():
- print "REDIRECT: " + str(redirect)
- self.reply = self.manager.get(QNetworkRequest(redirect))
- self.reply.downloadProgress.connect(self.updateDataReadProgress)
- else:
- self.updateFile = QFile(self.downloadPath)
- self.updateFile.open(QIODevice.WriteOnly)
- self.updateFile.write(self.reply.readAll())
- self.updateFile.close()
- self.reply.deleteLater()
- self.manager.deleteLater()
- reply.deleteLater()
- def cancelDownload(self):
- self.reply.abort()
- app = QtGui.QApplication(sys.argv)
- window = QDownloader()
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement