pyqt5+python3 簡單的下載器

PyQt5 我也是剛剛接觸所以博客中又錯誤的話,還請諒解!>_<!

話不多說直接擼碼!

# -*- coding:utf-8 -*-
import requests
import sys
from PyQt5.QtWidgets import (QWidget, QLabel,QInputDialog,QMessageBox,
    QLineEdit, QApplication)
from PyQt5.QtWidgets import (QMainWindow, QFileDialog, QApplication,QPushButton)
import os
import random

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        """設置個個元素的基本信息"""
        lbl1 = QLabel('Url:', self)
        lbl1.move(10, 10)

        self.lbl = QLabel(self)
        self.qle = QLineEdit(self)
        self.qle.move(40, 5)
        self.qle.resize(450,25)
        self.lbl.move(120, 80)

        lbl2 = QLabel('DataName:', self)
        lbl2.move(10, 45)

        self.lb2 = QLabel(self)
        self.qle2 = QLineEdit(self)
        self.qle2.move(70, 40)
        self.qle2.resize(420, 25)
        self.lb2.move(120, 80)

        lbl3 = QLabel('SaveUrl:', self)
        lbl3.move(10, 80)

        self.lb3 = QLabel(self)
        self.lb3.move(120, 80)
        self.qle3 = QLineEdit(self)
        self.qle3.move(70, 75)
        self.qle3.resize(420, 25)
        self.button = QPushButton('選取儲存文件夾', self)
        self.button.move(5, 110)
        # self.button.resize(95, 25)
        # 綁定按鈕事件,進行點擊
        self.button.clicked.connect(self.on_click)

        self.button2 = QPushButton('開始下載', self)
        self.button2.move(105, 110)
        self.button2.clicked.connect(self.DownData)

        self.button3 = QPushButton('文件重命名', self)
        self.button3.move(190, 110)
        self.button3.clicked.connect(self.ReName)

        self.button4 = QPushButton('打開文件夾', self)
        self.button4.move(275, 110)
        self.button4.clicked.connect(self.PaperFile)

        self.setGeometry(300, 300, 500, 300)
        self.setWindowTitle('下載器')
        self.show()


    # 選擇文件夾
    def on_click(self):
        fname = QFileDialog.getExistingDirectory(self, '選取文件夾', './')
        self.qle3.setText(fname)

        # 選擇文件
        # fname = QFileDialog.getOpenFileName(self, 'Open file', '/home')
    def DownData(self):
        self.url = self.qle.text()

        if self.qle2.text():
            dataname = self.qle2.text()
            if '.' in dataname:
                self.qle2.setText(dataname)
                self.GetUrl(dataname)
                reply = QMessageBox.information(self, ">_<", "下載完成")
            else:
                dataname = dataname + '.' + self.url.split('/')[-1].split('.')[-1]
                print(dataname)
                self.qle2.setText(dataname)
                self.GetUrl(dataname)
                reply = QMessageBox.information(self, ">_<", "下載完成")
        else:
            # 通過地址檢測下載的是什麼
            self.dataname = self.url.split('/')[-1]
            self.qle2.setText(self.dataname)
            self.GetUrl(self.dataname)
            reply = QMessageBox.information(self, ">_<", "下載完成")


    def Ua_headers():
        user_agent_list = [
            'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0',
            'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/66.0.3359.139 Safari/537.36',
            'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0',
            'Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0',]
        user_agent = random.choice(user_agent_list)
        headers = {
            'Accept': 'application/json, text/javascript, */*; q=0.01',
            'X-Requested-With': 'XMLHttpRequest',
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
        }
        headers['user_agent'] = user_agent
        return headers

    # 下載
    def GetUrl(self,dataname):
        # 就是簡單的get請求抓取信息T_T
        headers = self.Ua_headers()
        saveUrl = self.qle3.text()
        if not saveUrl:
            respon = requests.get(self.url,headers=headers,verify=False)
            f = open(dataname,'wb')
            f.write(respon.content)
            f.close()
        else:
            DataN = str(saveUrl) + '/' + str(dataname)
            respon = requests.get(self.url)
            f = open(DataN, 'wb')
            f.write(respon.content)
            f.close()

    # 重命名
    def ReName(self,event):
        if self.qle2.text():
            # 判斷文件是否存在
            if str(self.qle3.text()):
                DataPath = str(self.qle3.text()) + '/' + str(self.qle2.text())
                if os.path.exists(DataPath):
                    value, ok = QInputDialog.getText(self, "修改文件名", "請輸入新的文件名:", QLineEdit.Normal,
                                                     "N%s" % self.qle2.text())
                    if ok:
                        name = self.qle2.text()
                        HZ = name.split('.')[-1]
                        VA = value.split('.')[0]
                        os.rename(DataPath, str(self.qle3.text()) + '/' + '%s.%s' % (VA, HZ))
                        reply = QMessageBox.information(self, "O_O", "修改成功")
                        self.qle2.setText('%s.%s' % (VA, HZ))
                    else:
                        pass
                else:
                    reply = QMessageBox.information(self, "O_O", "文件不存在請輸入正確的文件名")
            else:
                if os.path.exists(self.qle2.text()):
                    value, ok = QInputDialog.getText(self, "修改文件名", "請輸入新的文件名:", QLineEdit.Normal,
                                                     "N%s" % self.qle2.text())
                    if ok:
                        name = self.qle2.text()
                        HZ = name.split('.')[-1]
                        VA = value.split('.')[0]
                        os.rename(name, '%s.%s' % (VA, HZ))
                        reply = QMessageBox.information(self, "O_O", "修改成功")
                        self.qle2.setText('%s.%s' % (VA, HZ))
                    else:
                        pass

                else:
                    reply = QMessageBox.information(self, "O_O", "文件不存在請輸入正確的文件名")
        else:
            reply = QMessageBox.information(self, "O_O", "請在文件名欄處輸入文件名")


    # 打開文件夾
    def PaperFile(self):
        saveUrl = self.qle3.text()
        if saveUrl:
            os.system('explorer %s' % saveUrl)
        else:
            GG = os.getcwd()
            # 括號裏是cmd命令
            os.system('explorer %s'%GG)


# https://www.66s.cc/e/DownSys/play/ckplayer/ckplayer.swf


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

可直接運行,運行如下

這個下載器也沒啥p2p加速啥的,純屬娛樂 歡迎點評! 

感覺自己蠢得可以啦! 總算也是下載成功啦!

純屬娛樂 純屬娛樂  見諒見諒!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章