def main(argv): helpMsg = """Usage : python <file.py> Arguments: -h,--help : Show This Message -e,--errorCheck : Only Recheck The Error Link (Status Code == -1) -d,--databse : Use Custom Database """ runMode = 0 dbFile = "moehui.db" try: opts, args = getopt.getopt(argv, "hed:", ["help", "errorCheck", "database="]) except getopt.GetoptError: print(helpMsg) sys.exit(2) for opt, arg in opts: if (opt == "-h" or opt == "--help"): print(helpMsg) sys.exit(0) elif (opt == "-e" or opt == "--errorCheck"): runMode = -1 elif (opt == "-d" or opt == "--database"): dbFile = arg mf = MainFramework(dbFile, runMode) mf.run()
def __startTransfer(self): if (self.__isTransferStarted): pass #Error On Transfer Is Started return if (self.__runModeCheckBox.isChecked()): self.__runMode = -1 else: self.__runMode = 0 self.__isTransferStarted = True self.__transferFramework = MainFramework(self.__transferDBFile, self.__runMode) self.__transferFramework.run(self.__guiCallback) self.__isTransferStarted = False
class AutoTransferGUI(QWidget): def __init__(self): super(AutoTransferGUI, self).__init__() self.__consoleConfig = MainConfigUpdater("config.json") self.__codeTextBoxXPath = "" self.__codeEnterBtnXPath = "" self.__transferBtnClassName = "" self.__transferBtnSelector = "" self.__checkBoxClassName = "" self.__fileTreeNodeClassName = "" self.__fileTreeDialogXPath = "" self.__destnationPath = "" self.__fileTreeConfirmClassName = "" self.__notFoundID = "" self.__langFloder = "." + os.sep + "lang" + os.sep self.__langList = [] self.__config = {} self.__curLang = "en" self.__getLangList() self.__loadConfig() self.__isTransferStarted = False self.__transferFramework = None self.__transferDBFile = "" self.__runMode = 0 self.__lang = Lang(self.__curLang) if (self.__lang.reload(self.__curLang) == -1): print("Language Pack Error.") sys.exit(1) self.__title = self.__lang.get("title") self.__left = 50 self.__top = 50 self.__width = 500 self.__heigth = 600 self.__widgetList = [] self.__initUI() self.show() def __initUI(self): self.setWindowTitle(self.__title) self.setGeometry(self.__left, self.__top, self.__width, self.__heigth) # self.setWindowIcon(QIcon(IconFile)) self.__createLabel() self.__createTextBox() self.__createButton() self.__createComboBox() self.__createCheckBox() self.__createStatusTextBox() self.__createStatusLabel() self.__gridLayout = QGridLayout() self.__gridLayout.setSpacing(8) self.__gridLayout.addWidget(self.__destLabel, 0, 0, 1, 2) self.__gridLayout.addWidget(self.__destTextBox, 0, 2, 1, 2) self.__gridLayout.addWidget(self.__codeTBLabel, 1, 0, 1, 2) self.__gridLayout.addWidget(self.__codeTBTextBox, 1, 2, 1, 2) self.__gridLayout.addWidget(self.__codeBtnXPathLabel, 2, 0, 1, 2) self.__gridLayout.addWidget(self.__codeBtnXPathTextBox, 2, 2, 1, 2) self.__gridLayout.addWidget(self.__transferBtnSelectorLabel, 3, 0, 1, 2) self.__gridLayout.addWidget(self.__transferBtnSelectorTextBox, 3, 2, 1, 2) self.__gridLayout.addWidget(self.__checkBoxClassLabel, 4, 0, 1, 2) self.__gridLayout.addWidget(self.__checkBoxClassTextBox, 4, 2, 1, 2) self.__gridLayout.addWidget(self.__fileTreeNodeClassLabel, 5, 0, 1, 2) self.__gridLayout.addWidget(self.__fileTreeNodeClassTextBox, 5, 2, 1, 2) self.__gridLayout.addWidget(self.__fileTreeDialogXPathLabel, 6, 0, 1, 2) self.__gridLayout.addWidget(self.__fileTreeDialogXPathTextBox, 6, 2, 1, 2) self.__gridLayout.addWidget(self.__fileTreeCfmClassLabel, 7, 0, 1, 2) self.__gridLayout.addWidget(self.__fileTreeCfmClassTextBox, 7, 2, 1, 2) self.__gridLayout.addWidget(self.__notFoundLabel, 8, 0, 1, 2) self.__gridLayout.addWidget(self.__notFoundTextBox, 8, 2, 1, 2) self.__gridLayout.addWidget(self.__runModeCheckBox, 9, 0, 1, 2) self.__gridLayout.addWidget(self.__langLabel, 9, 2, 1, 1) self.__gridLayout.addWidget(self.__langSelectBox, 9, 3, 1, 1) self.__gridLayout.addWidget(self.__saveButton, 10, 0, 2, 2) self.__gridLayout.addWidget(self.__startButton, 10, 2, 2, 2) self.__gridLayout.addWidget(self.__selectDBFileButton, 12, 0, 1, 1) self.__gridLayout.addWidget(self.__dbLocationTextBox, 12, 1, 1, 3) self.__gridLayout.addWidget(self.__statusLabel, 13, 0, 1, 2) self.__gridLayout.addWidget(self.__errLabel, 13, 2, 1, 2) self.__gridLayout.addWidget(self.__statusTextBox, 14, 0, 3, 4) for widget in self.__widgetList: widget.setMaximumHeight(30) self.setLayout(self.__gridLayout) def __createStatusLabel(self): self.__statusLabel = QLabel() self.__statusLabel.setText(self.__lang.get("doneLink")) self.__errLabel = QLabel() self.__errLabel.setText(self.__lang.get("errorLink")) self.__widgetList.append(self.__statusLabel) self.__widgetList.append(self.__errLabel) def __createTextBox(self): self.__destTextBox = QTextEdit() self.__destTextBox.setText(self.__destnationPath) self.__widgetList.append(self.__destTextBox) self.__codeTBTextBox = QTextEdit() self.__codeTBTextBox.setText(self.__codeTextBoxXPath) self.__widgetList.append(self.__codeTBTextBox) self.__codeBtnXPathTextBox = QTextEdit() self.__codeBtnXPathTextBox.setText(self.__codeEnterBtnXPath) self.__widgetList.append(self.__codeBtnXPathTextBox) self.__transferBtnSelectorTextBox = QTextEdit() self.__transferBtnSelectorTextBox.setText(self.__transferBtnSelector) self.__widgetList.append(self.__transferBtnSelectorTextBox) self.__checkBoxClassTextBox = QTextEdit() self.__checkBoxClassTextBox.setText(self.__checkBoxClassName) self.__widgetList.append(self.__checkBoxClassTextBox) self.__fileTreeNodeClassTextBox = QTextEdit() self.__fileTreeNodeClassTextBox.setText(self.__fileTreeNodeClassName) self.__widgetList.append(self.__fileTreeNodeClassTextBox) self.__fileTreeDialogXPathTextBox = QTextEdit() self.__fileTreeDialogXPathTextBox.setText(self.__fileTreeDialogXPath) self.__widgetList.append(self.__fileTreeDialogXPathTextBox) self.__fileTreeCfmClassTextBox = QTextEdit() self.__fileTreeCfmClassTextBox.setText(self.__fileTreeConfirmClassName) self.__widgetList.append(self.__fileTreeCfmClassTextBox) self.__notFoundTextBox = QTextEdit() self.__notFoundTextBox.setText(self.__notFoundID) self.__widgetList.append(self.__notFoundTextBox) self.__dbLocationTextBox = QTextEdit() self.__dbLocationTextBox.setText("") self.__widgetList.append(self.__dbLocationTextBox) # def __guiCallback(self,) def closeEvent(self, event): sys.exit(0) def __createStatusTextBox(self): self.__statusTextBox = QTextEdit() self.__statusTextBox.setText(self.__lang.get("defaultStatusTextBox")) #self.__statusLabel.setText("Status Label Test") def __outputToTextBox(self, newInfo): newInfo += '\n' oriTextBoxData = self.__statusTextBox.toPlainText() oriTextBoxData += newInfo self.__statusTextBox.setText(oriTextBoxData) def __createButton(self): self.__saveButton = QPushButton(self.__lang.get("saveChangeButton"), self) self.__saveButton.clicked.connect(lambda: self.__saveConfig()) self.__startButton = QPushButton( self.__lang.get("startTransferButton"), self) self.__startButton.clicked.connect(lambda: self.__startTransfer()) self.__selectDBFileButton = QPushButton( self.__lang.get("selectDBFileButton")) self.__selectDBFileButton.clicked.connect(lambda: self.__selectDB()) self.__widgetList.append(self.__saveButton) self.__widgetList.append(self.__startButton) self.__widgetList.append(self.__selectDBFileButton) def __selectDB(self): self.__transferDBFile = QFileDialog.getOpenFileName( self, self.__lang.get("selectDBFileDialog"), os.getcwd(), "SQLite3 Database (*.db)")[0] self.__dbLocationTextBox.setText(self.__transferDBFile) def __createLabel(self): self.__destLabel = QLabel() self.__destLabel.setText(self.__lang.get("destPathLabel")) self.__widgetList.append(self.__destLabel) self.__codeTBLabel = QLabel() self.__codeTBLabel.setText(self.__lang.get("codeTextBoxXPathLabel")) self.__widgetList.append(self.__codeTBLabel) self.__codeBtnXPathLabel = QLabel() self.__codeBtnXPathLabel.setText(self.__lang.get("codeBtnXPathLabel")) self.__widgetList.append(self.__codeBtnXPathLabel) self.__transferBtnSelectorLabel = QLabel() self.__transferBtnSelectorLabel.setText( self.__lang.get("transferBtnSelectorLabel")) self.__widgetList.append(self.__transferBtnSelectorLabel) self.__checkBoxClassLabel = QLabel() self.__checkBoxClassLabel.setText( self.__lang.get("checkBoxClassLabel")) self.__widgetList.append(self.__checkBoxClassLabel) self.__fileTreeNodeClassLabel = QLabel() self.__fileTreeNodeClassLabel.setText( self.__lang.get("fileTreeNodeClassLabel")) self.__widgetList.append(self.__fileTreeNodeClassLabel) self.__fileTreeDialogXPathLabel = QLabel() self.__fileTreeDialogXPathLabel.setText( self.__lang.get("fileTreeDiaXPathLabel")) self.__widgetList.append(self.__fileTreeDialogXPathLabel) self.__fileTreeCfmClassLabel = QLabel() self.__fileTreeCfmClassLabel.setText( self.__lang.get("fileTreeCfmClassLabel")) self.__widgetList.append(self.__fileTreeCfmClassLabel) self.__notFoundLabel = QLabel() self.__notFoundLabel.setText(self.__lang.get("notFoundLabel")) self.__widgetList.append(self.__notFoundLabel) def __createCheckBox(self): self.__runModeCheckBox = QCheckBox(self.__lang.get("runModeCheckBox"), self) self.__widgetList.append(self.__runModeCheckBox) def __createComboBox(self): self.__langLabel = QLabel() self.__langLabel.setText(self.__lang.get("langLabel")) self.__langSelectBox = QComboBox() for langItem in self.__langList: self.__langSelectBox.addItem(langItem) self.__langSelectBox.setCurrentIndex( self.__langSelectBox.findText(self.__curLang)) self.__widgetList.append(self.__langLabel) self.__widgetList.append(self.__langSelectBox) def __startTransfer(self): if (self.__isTransferStarted): pass #Error On Transfer Is Started return if (self.__runModeCheckBox.isChecked()): self.__runMode = -1 else: self.__runMode = 0 self.__isTransferStarted = True self.__transferFramework = MainFramework(self.__transferDBFile, self.__runMode) self.__transferFramework.run(self.__guiCallback) self.__isTransferStarted = False # self.__transferThread = threading.Thread(target = self.__transferThreadFunc,args=()) # self.__transferThread.daemon = True # self.__transferThread.start() def __guiCallback(self, panLink, retStatus): if (retStatus == 1): self.__outputToTextBox("Transfer : " + panLink + " Successed.") elif (retStatus == -1): self.__outputToTextBox("Transfer : " + panLink + " Failed.") elif (retStatus == -2): self.__outputToTextBox("Link : " + panLink + " Has Been Banned.") self.__statusLabel.setText( self.__lang.get("doneLink") + str(self.__transferFramework.doneLinkCount)) self.__errLabel.setText( self.__lang.get("errorLink") + str(self.__transferFramework.errLinkCount)) def __transferThreadFunc(self): self.__transferFramework = MainFramework(self.__transferDBFile, self.__runMode) self.__transferFramework.run(self.__guiCallback) self.__isTransferStarted = False def __saveConfig(self): self.__config["lang"] = self.__langSelectBox.currentText() with open("guiConfig.json", "w+") as configFile: configFile.writelines( json.dumps(self.__config, sort_keys=True, indent=4, separators=(',', ':'))) configFile.close() self.__consoleConfig.update("destnationPath", self.__destTextBox.toPlainText()) self.__consoleConfig.update("codeTextBoxXPath", self.__codeTBTextBox.toPlainText()) self.__consoleConfig.update("codeEnterBtnXPath", self.__codeBtnXPathTextBox.toPlainText()) self.__consoleConfig.update( "transferBtnSelector", self.__transferBtnSelectorTextBox.toPlainText()) self.__consoleConfig.update("checkBoxClassName", self.__checkBoxClassTextBox.toPlainText()) self.__consoleConfig.update( "fileTreeNodeClassName", self.__fileTreeNodeClassTextBox.toPlainText()) self.__consoleConfig.update( "fileTreeDialogXPath", self.__fileTreeDialogXPathTextBox.toPlainText()) self.__consoleConfig.update( "fileTreeConfirmBtnClassName", self.__fileTreeCfmClassTextBox.toPlainText()) self.__consoleConfig.update("notFoundID", self.__notFoundTextBox.toPlainText()) self.__consoleConfig.save() self.__outputToTextBox("Configuration Saved.") def __loadConfig(self): if (not os.path.exists("guiConfig.json")): print("Can not find configuration file.") sys.exit(1) with open("guiConfig.json", "r+") as configFile: self.__config = json.load(configFile) configFile.close() self.__curLang = self.__config["lang"] self.__destnationPath = self.__consoleConfig.get("destnationPath") self.__codeTextBoxXPath = self.__consoleConfig.get("codeTextBoxXPath") self.__codeEnterBtnXPath = self.__consoleConfig.get( "codeEnterBtnXPath") self.__transferBtnSelector = self.__consoleConfig.get( "transferBtnSelector") self.__checkBoxClassName = self.__consoleConfig.get( "checkBoxClassName") self.__fileTreeNodeClassName = self.__consoleConfig.get( "fileTreeNodeClassName") self.__fileTreeDialogXPath = self.__consoleConfig.get( "fileTreeDialogXPath") self.__fileTreeConfirmClassName = self.__consoleConfig.get( "fileTreeConfirmBtnClassName") self.__notFoundID = self.__consoleConfig.get("notFoundID") # self.__outputToTextBox("Configuration Loaded.") def __getLangList(self): if (not os.path.exists(self.__langFloder)): print("Language Pack Not Found.") sys.exit(1) if (os.path.isfile(self.__langFloder)): print("Language Pack Not Found.") sys.exit(1) for root, dirs, files in os.walk(self.__langFloder): for file in files: self.__langList.append(os.path.splitext(file)[0])
def __transferThreadFunc(self): self.__transferFramework = MainFramework(self.__transferDBFile, self.__runMode) self.__transferFramework.run(self.__guiCallback) self.__isTransferStarted = False