Código
from audio import * from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog,QFileDialog, QMessageBox,QTableWidget,QTableWidgetItem from PyQt5.QtCore import QThread, pyqtSignal import getpass, glob, pafy class DownloadAudio(QThread): signal_recvd = pyqtSignal(int) signal_total = pyqtSignal(int) def download(self, ruta, url): ruta = ruta url = url video = pafy.new(url) title = video.title duration = video.duration dwn = video.getbestaudio() dwn.download(filepath=ruta, callback=self.mycb, meta=True) def mycb(self,total, recvd, ratio, rate,eta): #Metodo de la libreria Pafy para saber los kbs recibidos y los totales (con este me apoyo para establecer la barra de progreso) self.signal_total.emit(total) self.signal_recvd.emit(recvd) class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): def __init__(self, *args, **kwargs): QtWidgets.QMainWindow.__init__(self, *args, **kwargs) self.setupUi(self) self.setFixedSize(920,700) self.txt_ruta.setText("/home/"+getpass.getuser()+"/Música") self.tableWidget.setColumnWidth(0, 350) self.tableWidget.setColumnWidth(1, 350) self.btn_descargar.clicked.connect(self.download_audio) self.btn_destino.clicked.connect(self.ruta) def download_audio(self): ruta = self.txt_ruta.text() self.progressBar.setValue(0) url = self.txt_url.text() video = pafy.new(url) title = video.title duration = video.duration self.tableWidget.setItem(0,0, QTableWidgetItem(title)) self.tableWidget.setItem(0,1, QTableWidgetItem(duration)) self.calc = DownloadAudio() self.calc.download(ruta,url) self.calc.signal_recvd.connect(self.progress) def progress(self,value): self.progressBar.setValue(value) def ruta(self): path = os.path.normpath(QFileDialog.getExistingDirectory(self)) self.txt_ruta.setText(path) if __name__ == '__main__': app = QtWidgets.QApplication([]) window = MainWindow() window.show() app.exec_()
Con este código el proceso funciona aunque no correctamente ni mucho menos puedo establecer la barra de progreso.