コード例 #1
0
class App(QWidget):
    def __init__(self):
        super().__init__()
        self.title = 'Nike bot'
        self.left = 600
        self.top = 300
        self.width = 670
        self.height = 480
        self.all_extensions = ["xlsx", "xlsm", "xlsb", "xls", "xlam"]
        self.browser = "firefox"
        self.my_threads = []
        self.current_date = ''
        self.data = []
        self.initUI()
        # req_proxy = RequestProxy()
        # self.proxies = req_proxy.get_proxy_list()
        # # self.rus_proxies = []
        # for proxy in self.proxies:
        #     if proxy.country == 'Russian Federation':
        #         print(proxy.country)
        #         self.rus_proxies.append(proxy)

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        self.setFixedSize(self.width, self.height)

        # Create widget
        label = QLabel(self)

        self.lable_file = QLabel(self)
        self.lable_file.setStyleSheet("background-color:red;")
        self.lable_file.setText("File is not uploaded")
        self.lable_file.setGeometry(470, 30, 135, 30)

        self.button_file = QPushButton(self)
        self.button_file.setStyleSheet(
            "background-color:#301b28;color:#ddc5a2;")
        self.button_file.setGeometry(470, 60, 135, 40)
        self.button_file.setText("Brows file")
        self.button_file.clicked.connect(lambda: self.openFileNameDialog())

        self.button_start = QPushButton(self)
        self.button_start.setGeometry(470, 250, 135, 40)
        self.button_start.setText("Start")
        self.button_start.setStyleSheet(
            "background-color:#301b28;color:#ddc5a2;")
        self.button_start.clicked.connect(
            lambda: self.create_threads(self.browser, self.data))
        self.button_start.setDisabled(True)

        self.button_close = QPushButton(self)
        self.button_close.setStyleSheet(
            "background-color:#301b28;color:#ddc5a2;")
        self.button_close.setGeometry(470, 290, 135, 40)
        self.button_close.setText("Close")
        self.button_close.clicked.connect(lambda: self.close_browsers())

        self.label_brows = QLabel(self)
        self.label_brows.setGeometry(470, 120, 135, 30)
        self.label_brows.setStyleSheet("color:#301b28;")
        self.label_brows.setText("Choose browser:")

        self.combo = QComboBox(self)
        self.combo.addItems(["firefox", "chrome", "opera"])
        self.combo.setGeometry(470, 150, 135, 40)
        self.combo.setStyleSheet("background-color:#301b28;color:#ddc5a2;")
        self.combo.activated[str].connect(self.setBrowser)

        self.table = QTableWidget(self)
        self.table.setGeometry(0, 0, 450, 400)
        self.table.setStyleSheet("background-color:#301b28;color:#ddc5a2;")
        self.table.setColumnCount(7)
        self.table.setRowCount(1)
        self.table.setItem(0, 0, QTableWidgetItem("Login"))
        self.table.setItem(0, 1, QTableWidgetItem("Password"))
        self.table.setItem(0, 2, QTableWidgetItem("Middle name"))
        self.table.setItem(0, 3, QTableWidgetItem("Card number"))
        self.table.setItem(0, 4, QTableWidgetItem("Date"))
        self.table.setItem(0, 5, QTableWidgetItem("Cvv"))
        self.table.setItem(0, 6, QTableWidgetItem("Url"))

        self.date_field = QDateTimeEdit(self)
        self.date_field.setGeometry(470, 350, 165, 40)
        self.date_field.setStyleSheet(
            "background-color:#301b28;color:#ddc5a2;")
        self.date_field.setDisplayFormat("yyyy-MM-dd HH:mm:ss")
        self.date_field.setMinimumDateTime(QDateTime.currentDateTime())

        self.url = QTextEdit(self)
        self.url.setGeometry(10, 430, 400, 30)
        self.url.setStyleSheet("background-color:#301b28;color:#ddc5a2;")

        self.url_text = QLabel(self)
        self.url_text.setGeometry(10, 400, 400, 30)
        self.url_text.setStyleSheet("color:#301b28;")
        self.url_text.setText("Url:")

        self.button_url = QPushButton(self)
        self.button_url.setStyleSheet(
            "background-color:#301b28;color:#ddc5a2;")
        self.button_url.setGeometry(410, 430, 100, 30)
        self.button_url.setText("ADD")
        self.button_url.clicked.connect(lambda: self.add_url())

        self.usr_text = QLabel(self)
        self.usr_text.setGeometry(520, 430, 80, 30)
        self.usr_text.setStyleSheet("color:#301b28;")
        self.usr_text.setText("User count:")

        self.users = QTextEdit(self)
        self.users.setGeometry(600, 430, 40, 30)
        self.users.setStyleSheet("background-color:#301b28;color:#ddc5a2;")

        pixmap = QPixmap('static/back.jpeg').scaled(self.width, self.height)
        label.setPixmap(pixmap)

        self.show()

    def openFileNameDialog(self):
        options = QFileDialog.Options()
        options |= QFileDialog.DontUseNativeDialog
        fileName, _ = QFileDialog.getOpenFileName(
            self, "QFileDialog.getOpenFileName()", "", "", options=options)
        extension = fileName.split(".")[-1]

        if fileName and extension in self.all_extensions:
            self.start(fileName)
        else:
            msg = QMessageBox()
            msg.setIcon(QMessageBox.Critical)
            msg.setStyleSheet("background-color:#301b28;color:#ddc5a2;")
            msg.setText("Wrong file format!")
            msg.setInformativeText('Only excel file format')
            msg.setWindowTitle("Error")
            msg.exec_()

    def setBrowser(self, browser):
        self.browser = browser

    def start(self, name):
        self.lable_file.setStyleSheet("background-color:green;")
        self.lable_file.setText("    File is uploaded")
        self.data = pars_xls(name)
        if self.data != "Wrong header params, should be:  Login, Password, Middle_name, Card_number, Date, Cvv":
            self.table.setRowCount(len(self.data))
            self.user_count = len(self.data) - 1
            self.users.setText(str(self.user_count))
            self.fill_table()
        else:
            msg = QMessageBox()
            msg.setIcon(QMessageBox.Critical)
            msg.setStyleSheet("background-color:#301b28;color:#ddc5a2;")
            msg.setText("Wrong file format!")
            msg.setInformativeText(
                "Wrong header params, should be:  Login, Password, Middle_name, Card_number, Date, Cvv"
            )
            msg.setWindowTitle("Error")
            msg.exec_()

    def fill_table(self):
        self.table.setItem(0, 0, QTableWidgetItem("Login"))
        self.table.setItem(0, 1, QTableWidgetItem("Password"))
        self.table.setItem(0, 2, QTableWidgetItem("Middle name"))
        self.table.setItem(0, 3, QTableWidgetItem("Card number"))
        self.table.setItem(0, 4, QTableWidgetItem("Date"))
        self.table.setItem(0, 5, QTableWidgetItem("Cvv"))
        self.table.setItem(0, 6, QTableWidgetItem("Url"))
        for i in range(len(self.data) - 1):
            for j in range(len(self.data[i])):
                self.table.setItem(i + 1, j, QTableWidgetItem(self.data[i][j]))

    def create_threads(self, browser, data):
        self.button_start.setDisabled(True)
        k = len(self.my_threads)
        self.user_count = int(self.users.toPlainText())
        drop_time = int(
            datetime.fromisoformat(self.date_field.dateTime().toString(
                "yyyy-MM-dd HH:mm:ss")).timestamp())

        for i in data:
            # proxy = self.rus_proxies[k].get_address()
            self.my_threads.append(
                bot_on_thread(url=i[6],
                              browser=browser,
                              login=i[0],
                              password=i[1],
                              middle_name=i[2],
                              cardNumber=i[3],
                              cardExpiry=i[4],
                              cardCvc=i[5],
                              drop_time=drop_time))
            self.my_threads[k].start()
            k += 1

            if k == self.user_count:
                break

    def close_browsers(self):
        for i in self.my_threads:
            try:
                i.close_browser()
            except:
                del i
                continue
            del i
        self.my_threads = []
        self.button_start.setDisabled(False)

    def add_url(self):
        if len(self.data) != 0:
            for i in range(len(self.data)):
                self.data[i].append(self.url.toPlainText())
                self.table.setItem(i + 1, 6,
                                   QTableWidgetItem(self.url.toPlainText()))
            self.button_start.setDisabled(False)
            print(self.data)
コード例 #2
0
ファイル: RunAPI7.py プロジェクト: zkkxyz/Robot
class OWO(QWidget):
    def __init__(self):
        super(QWidget, self).__init__()

        tempTime = datetime.datetime.now()
        tempTime = tempTime.strftime(r'%Y-%m-%d %H %M %S')
        self.logFile = codecs.open('./log/' + str(tempTime) + '日志' + '.html',
                                   'w', 'utf-8')
        self.htmlPart1 = """
                    <!DOCTYPE html>
            <html lang="en">
            <head>
                <meta charset="UTF-8">
                <title>Log</title>
            </head>
            <body>
                <table>
        """
        self.htmlPart2 = """
            </table>
            </body>
            </html>
        """
        self.logFile.write(self.htmlPart1)

        vBox = QVBoxLayout()

        logG = QGroupBox()
        logG.setTitle('信息')
        hBox = QHBoxLayout()
        self.logList = QListWidget()
        hBox.addWidget(self.logList)
        logG.setLayout(hBox)

        iniG = QGroupBox()
        iniG.setTitle('设置')
        vBox2 = QVBoxLayout()

        hBox1 = QHBoxLayout()
        mylable1 = QLabel('交易对1:')
        self.input1 = QLineEdit()
        self.input1.setText('usdt')
        hBox1.addWidget(mylable1)
        hBox1.addWidget(self.input1)
        vBox2.addLayout(hBox1)

        hBox2 = QHBoxLayout()
        mylable2 = QLabel('交易对2:')
        self.input2 = QLineEdit()
        self.input2.setText('ft')
        hBox2.addWidget(mylable2)
        hBox2.addWidget(self.input2)
        vBox2.addLayout(hBox2)

        hBox3 = QHBoxLayout()
        mylable3 = QLabel('交易数量:')
        self.input3 = QLineEdit()
        self.input3.setText('10')
        hBox3.addWidget(mylable3)
        hBox3.addWidget(self.input3)
        vBox2.addLayout(hBox3)

        hBox4 = QHBoxLayout()
        mylable4 = QLabel('交易对:')
        self.input4 = QLineEdit()
        self.input4.setText('ftusdt')
        hBox4.addWidget(mylable4)
        hBox4.addWidget(self.input4)
        vBox2.addLayout(hBox4)

        hBox6 = QHBoxLayout()
        mylable6 = QLabel('交易时间:')
        self.input6 = QLineEdit()
        self.input6.setText('10')
        hBox6.addWidget(mylable6)
        hBox6.addWidget(self.input6)
        vBox2.addLayout(hBox6)

        hBox7 = QHBoxLayout()
        mylable6 = QLabel('价格小数:')
        self.input7 = QLineEdit()
        self.input7.setText('6')
        hBox7.addWidget(mylable6)
        hBox7.addWidget(self.input7)
        vBox2.addLayout(hBox7)

        hBox11 = QHBoxLayout()
        mylable11 = QLabel('输入数值!:')
        self.input11 = QLineEdit()
        self.input11.setText('0')
        hBox11.addWidget(mylable11)
        hBox11.addWidget(self.input11)
        vBox2.addLayout(hBox11)

        hBox5 = QHBoxLayout()
        self.input8 = QCheckBox()
        self.input8.setText('当余额不足是否市价增补仓')
        mylable7 = QLabel('输入手机号:')
        self.input8.setChecked(True)
        self.input9 = QLineEdit()
        mylable9 = QLabel('请输入多久取消订单(秒):')
        self.input10 = QLineEdit()
        self.input10.setText('5')
        submitBtn = QPushButton('  提交  ')
        submitBtn.clicked.connect(self.submitFn)
        hBox5.addWidget(self.input8)
        hBox5.addSpacing(8)
        hBox5.addWidget(mylable7)
        hBox5.addWidget(self.input9)
        hBox5.addSpacing(8)
        hBox5.addWidget(mylable9)
        hBox5.addWidget(self.input10)
        hBox5.addStretch()
        hBox5.addWidget(submitBtn)
        # hBox5.addStretch()
        vBox2.addLayout(hBox5)

        iniG.setLayout(vBox2)

        vBox.addWidget(logG)
        vBox.addWidget(iniG)

        hBox7 = QHBoxLayout()
        self.startBtn = QPushButton('  运行  ')
        self.startBtn.clicked.connect(self.startBtnClick)
        self.stopBtn = QPushButton('  停止  ')
        self.stopBtn.clicked.connect(self.stopBtnClick)
        mylable8 = QLabel('JC软件工作室 微信:jcccccccc1991')
        font = QFont('微软雅黑')
        font.setPixelSize(18)
        mylable8.setFont(font)
        mylable8.setStyleSheet("""
            QLabel{color:#FF0000}
        """)
        hBox7.addWidget(self.startBtn)
        hBox7.addStretch()
        hBox7.addWidget(mylable8)
        hBox7.addStretch()
        hBox7.addWidget(self.stopBtn)

        hBox8 = QHBoxLayout()
        tempNowTime = QtCore.QDateTime.currentDateTime()
        self.timerC = QCheckBox()
        self.timerC.setText('启用定时运行   ')
        self.timerC.stateChanged.connect(self.timerClicked)
        startLab = QLabel('开始时间:')
        self.startTimeEdit = QDateTimeEdit()
        self.startTimeEdit.setDateTime(tempNowTime)
        self.startTimeEdit.setStyleSheet("""
                    QDateTimeEdit{width:110px}
                """)
        endLab = QLabel('<--> 结束时间:')
        self.endTimeEdit = QDateTimeEdit()
        self.endTimeEdit.setDateTime(tempNowTime)
        self.endTimeEdit.setStyleSheet("""
                    QDateTimeEdit{width:110px}
                """)
        hBox8.addWidget(self.timerC)
        hBox8.addWidget(startLab)
        hBox8.addWidget(self.startTimeEdit)
        hBox8.addWidget(endLab)
        hBox8.addWidget(self.endTimeEdit)
        hBox8.addStretch()

        vBox.addLayout(hBox8)
        vBox.addLayout(hBox7)
        self.stopBtn.setEnabled(False)

        icon = QIcon()
        icon.addPixmap(QPixmap('./JC.ico'), QIcon.Normal)
        self.setWindowIcon(icon)
        self.setLayout(vBox)
        self.setWindowTitle('JC全自动挖矿交易软件')
        self.resize(700, 500)
        self.show()

    def submitFn(self, click):
        self.sendIni()

    def sendIni(self):
        global gIniQueue
        myList = [
            str(self.input1.text()),
            str(self.input2.text()),
            float(self.input3.text()),
            str(self.input4.text()),
            int(self.input6.text()),
            int(self.input7.text()),
            bool(self.input8.isChecked()),
            str(self.input9.text()),
            int(self.input10.text()),
            int(self.input11.text())
        ]
        gIniQueue.put(myList)

    def printLog(self, dic):
        item = QListWidgetItem(dic['msg'])
        self.logList.addItem(item)
        self.logList.setCurrentRow(self.logList.count() - 1)
        self.logFile.write(r'<tr><td>' + dic['msg'] + r'</td></tr>')
        if self.logList.count() > 1000:
            item = self.logList.takeItem(0)
            del item

    def startBtnClick(self, click):
        self.startBtn.setEnabled(False)
        self.stopBtn.setEnabled(True)
        if not gTimeFlag:
            self.runWorkTh()
        elif gTimeFlag:
            self.runTimerTh()

    def runTimerTh(self):
        global gStartTime
        global gEndTime
        gStartTime = self.startTimeEdit.dateTime().toPyDateTime()
        gEndTime = self.endTimeEdit.dateTime().toPyDateTime()
        self.timerTh = timerThread()
        self.timerTh.startSignal.connect(self.runWorkTh)
        self.timerTh.endSignal.connect(self.stopBtnClick)
        self.timerTh.start()
        self.printLog({'msg': '启动定时器'})

    def runWorkTh(self):
        global gFlag
        gFlag = True
        self.sendIni()
        self.myTh = workThread()
        self.myTh.logSignal.connect(self.printLog)
        self.myTh.start()
        self.printLog({'msg': '正在启动软件'})

    def stopBtnClick(self, click=None):
        global gFlag
        self.startBtn.setEnabled(True)
        self.stopBtn.setEnabled(False)
        gFlag = False
        self.printLog({'msg': '正在关闭软件'})

    def closeEvent(self, QCloseEvent):
        global gFlag
        self.logFile.write(self.htmlPart2)
        self.logFile.close()
        gFlag = False
        QCloseEvent.accept()

    def timerClicked(self, status):
        global gTimeFlag
        gTimeFlag = status