# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'C:\pyprojects\porndownload\gui.ui' # # Created by: PyQt5 UI code generator 5.9 # # WARNING! All changes made in this file will be lost! import requests,traceback from requests.exceptions import Timeout,HTTPError,ConnectionError from PyQt5 import QtCore, QtGui, QtWidgets from get_video import get_video class Ui_Dialog(QtWidgets.QDialog): def __init__(self): super(Ui_Dialog,self).__init__() self.adds,self.infos,self.title=None,None,None self.headers={'use-agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"} self.proxies={'https': 'https://127.0.0.1:1080','http': 'http://127.0.0.1:1080'} self.set_ui() self.set_logic() def set_ui(self): self.setObjectName("Dialog") self.resize(594, 659) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.sizePolicy().hasHeightForWidth()) self.setSizePolicy(sizePolicy) self.setSizeGripEnabled(True) self.gridLayout_2 = QtWidgets.QGridLayout(self) self.gridLayout_2.setObjectName("gridLayout_2") self.lb_cover = QtWidgets.QLabel(self) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.lb_cover.sizePolicy().hasHeightForWidth()) self.lb_cover.setSizePolicy(sizePolicy) self.lb_cover.setObjectName("lb_cover") self.gridLayout_2.addWidget(self.lb_cover, 0, 0, 1, 1) self.gridLayout = QtWidgets.QGridLayout() self.gridLayout.setObjectName("gridLayout") self.le_input = QtWidgets.QLineEdit(self) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.le_input.sizePolicy().hasHeightForWidth()) self.le_input.setSizePolicy(sizePolicy) self.le_input.setObjectName("le_input") self.gridLayout.addWidget(self.le_input, 0, 0, 1, 1) self.bt_confirm = QtWidgets.QPushButton(self) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.bt_confirm.sizePolicy().hasHeightForWidth()) self.bt_confirm.setSizePolicy(sizePolicy) self.bt_confirm.setObjectName("bt_confirm") self.gridLayout.addWidget(self.bt_confirm, 0, 1, 1, 1) self.cb_quality = QtWidgets.QComboBox(self) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.cb_quality.sizePolicy().hasHeightForWidth()) self.cb_quality.setSizePolicy(sizePolicy) self.cb_quality.setToolTip("") self.cb_quality.setObjectName("cb_quality") self.gridLayout.addWidget(self.cb_quality, 0, 2, 1, 1) self.tb_infos = QtWidgets.QTextBrowser(self) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.tb_infos.sizePolicy().hasHeightForWidth()) self.tb_infos.setSizePolicy(sizePolicy) self.tb_infos.setObjectName("tb_infos") self.gridLayout.addWidget(self.tb_infos, 1, 0, 1, 3) self.le_url = QtWidgets.QLineEdit(self) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.le_url.sizePolicy().hasHeightForWidth()) self.le_url.setSizePolicy(sizePolicy) self.le_url.setObjectName("le_url") self.gridLayout.addWidget(self.le_url, 2, 0, 1, 3) self.gridLayout_2.addLayout(self.gridLayout, 1, 0, 1, 1) self.retranslateUi() QtCore.QMetaObject.connectSlotsByName(self) def set_logic(self): self.bt_confirm.clicked.connect(self.confirm) self.cb_quality.activated.connect(self.show_url) def confirm(self): url=self.le_input.text() try: self.adds,self.title,self.infos=get_video(url) self.show_cover(self.infos['cover']) self.show_infos() self.update_cb() self.cb_quality.setCurrentIndex(0) self.show_url() except (Timeout,HTTPError,ConnectionError): exc=traceback.format_exc() QtWidgets.QMessageBox.warning(self,'Warning','Got exception:\n'+exc) self.tb_infos.setText(exc) def update_cb(self): qualities=list(self.adds.keys()) self.cb_quality.addItems(qualities) def show_url(self): q=self.cb_quality.currentText() url=self.adds[q] self.le_url.setText(url) def show_cover(self,cover_url): print(cover_url) data=requests.get(cover_url,headers=self.headers,proxies=self.proxies).content qp = QtGui.QPixmap() qp.loadFromData(data) self.lb_cover.setPixmap(qp) def show_infos(self): text='Video title:{}\nDuration:{}\nAvailable qualities:{}\nCategories:{}' cats=','.join(self.infos['categories']) duration=self.infos['duration'] qualities=','.join(list(self.adds.keys())) text=text.format(self.title,duration,qualities,cats) self.tb_infos.setText(text) def retranslateUi(self): _translate = QtCore.QCoreApplication.translate self.setWindowTitle(_translate("PornHubDownloader", "PornHubDownloader")) self.lb_cover.setText(_translate("PornHubDownloader", "Video cover")) self.bt_confirm.setText(_translate("PornHubDownloader", "Confirm")) self.tb_infos.setText(_translate("PornHubDownloader", "Infos")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) ui = Ui_Dialog() ui.show() sys.exit(app.exec_())