Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- from PyQt5 import QtCore, QtGui, QtWidgets
- import os, easygui, urllib.request, CreateFiles, zipfile, GetAccessToken, base64
- class Ui_Form(object):
- def setupUi(self, Form):
- Form.setObjectName("Form")
- Form.resize(837, 579)
- font = QtGui.QFont()
- font.setPointSize(12)
- Form.setFont(font)
- icon = QtGui.QIcon()
- icon.addPixmap(QtGui.QPixmap("../../../../../GILI#S desktop/Webseite Opas CD/Website/gr33nbl00d/apple-touch-icon-57x57-precomposed.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- Form.setWindowIcon(icon)
- self.gridLayout_4 = QtWidgets.QGridLayout(Form)
- self.gridLayout_4.setObjectName("gridLayout_4")
- self.tabWidget = QtWidgets.QTabWidget(Form)
- self.tabWidget.setObjectName("tabWidget")
- self.tab = QtWidgets.QWidget()
- self.tab.setObjectName("tab")
- self.gridLayout = QtWidgets.QGridLayout(self.tab)
- self.gridLayout.setObjectName("gridLayout")
- self.webView = QtWebKitWidgets.QWebView(self.tab)
- self.webView.setUrl(QtCore.QUrl("http://mcupdate.tumblr.com/"))
- self.webView.setObjectName("webView")
- self.gridLayout.addWidget(self.webView, 0, 0, 1, 1)
- self.tabWidget.addTab(self.tab, "")
- self.tab_2 = QtWidgets.QWidget()
- self.tab_2.setObjectName("tab_2")
- self.gridLayout_2 = QtWidgets.QGridLayout(self.tab_2)
- self.gridLayout_2.setObjectName("gridLayout_2")
- self.webView_2 = QtWebKitWidgets.QWebView(self.tab_2)
- self.webView_2.setUrl(QtCore.QUrl("http://gr33nbl00d.de/"))
- self.webView_2.setObjectName("webView_2")
- self.gridLayout_2.addWidget(self.webView_2, 0, 0, 1, 1)
- self.tabWidget.addTab(self.tab_2, "")
- self.tab_3 = QtWidgets.QWidget()
- self.tab_3.setObjectName("tab_3")
- self.gridLayout_7 = QtWidgets.QGridLayout(self.tab_3)
- self.gridLayout_7.setObjectName("gridLayout_7")
- self.groupBox = QtWidgets.QGroupBox(self.tab_3)
- self.groupBox.setMinimumSize(QtCore.QSize(0, 0))
- self.groupBox.setMaximumSize(QtCore.QSize(16777215, 100))
- self.groupBox.setObjectName("groupBox")
- self.gridLayout_5 = QtWidgets.QGridLayout(self.groupBox)
- self.gridLayout_5.setObjectName("gridLayout_5")
- self.version = QtWidgets.QComboBox(self.groupBox)
- self.version.setEditable(False)
- self.version.setObjectName("version")
- self.gridLayout_5.addWidget(self.version, 0, 0, 1, 1)
- self.gridLayout_7.addWidget(self.groupBox, 0, 0, 1, 1)
- self.groupBox_2 = QtWidgets.QGroupBox(self.tab_3)
- self.groupBox_2.setMinimumSize(QtCore.QSize(0, 0))
- self.groupBox_2.setMaximumSize(QtCore.QSize(16777215, 100))
- self.groupBox_2.setObjectName("groupBox_2")
- self.gridLayout_6 = QtWidgets.QGridLayout(self.groupBox_2)
- self.gridLayout_6.setObjectName("gridLayout_6")
- self.offlineMode = QtWidgets.QCheckBox(self.groupBox_2)
- self.offlineMode.setObjectName("offlineMode")
- self.gridLayout_6.addWidget(self.offlineMode, 0, 0, 1, 1)
- self.offlineUsername = QtWidgets.QLineEdit(self.groupBox_2)
- self.offlineUsername.setEnabled(False)
- self.offlineUsername.setObjectName("offlineUsername")
- self.gridLayout_6.addWidget(self.offlineUsername, 0, 1, 1, 1)
- self.gridLayout_7.addWidget(self.groupBox_2, 0, 1, 1, 1)
- self.launcherVisible = QtWidgets.QCheckBox(self.tab_3)
- self.launcherVisible.setObjectName("launcherVisible")
- self.gridLayout_7.addWidget(self.launcherVisible, 1, 0, 1, 2)
- self.tabWidget.addTab(self.tab_3, "")
- self.gridLayout_4.addWidget(self.tabWidget, 0, 0, 1, 1)
- self.progressBar = QtWidgets.QProgressBar(Form)
- self.progressBar.setProperty("value", 0)
- self.progressBar.setAlignment(QtCore.Qt.AlignCenter)
- self.progressBar.setTextVisible(True)
- self.progressBar.setTextDirection(QtWidgets.QProgressBar.TopToBottom)
- self.progressBar.setObjectName("progressBar")
- self.gridLayout_4.addWidget(self.progressBar, 1, 0, 1, 1)
- self.gridLayout_3 = QtWidgets.QGridLayout()
- self.gridLayout_3.setObjectName("gridLayout_3")
- self.email = QtWidgets.QLineEdit(Form)
- sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.email.sizePolicy().hasHeightForWidth())
- self.email.setSizePolicy(sizePolicy)
- self.email.setMinimumSize(QtCore.QSize(400, 0))
- self.email.setObjectName("email")
- self.gridLayout_3.addWidget(self.email, 0, 0, 1, 1)
- self.line = QtWidgets.QFrame(Form)
- sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.line.sizePolicy().hasHeightForWidth())
- self.line.setSizePolicy(sizePolicy)
- self.line.setMinimumSize(QtCore.QSize(20, 100))
- self.line.setFrameShape(QtWidgets.QFrame.VLine)
- self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
- self.line.setObjectName("line")
- self.gridLayout_3.addWidget(self.line, 0, 1, 2, 1)
- self.play = QtWidgets.QPushButton(Form)
- sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.play.sizePolicy().hasHeightForWidth())
- self.play.setSizePolicy(sizePolicy)
- self.play.setMinimumSize(QtCore.QSize(100, 100))
- font = QtGui.QFont()
- font.setPointSize(20)
- font.setBold(True)
- font.setWeight(75)
- self.play.setFont(font)
- self.play.setAutoDefault(False)
- self.play.setDefault(False)
- self.play.setFlat(False)
- self.play.setObjectName("play")
- self.gridLayout_3.addWidget(self.play, 0, 2, 2, 1)
- self.password = QtWidgets.QLineEdit(Form)
- sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.password.sizePolicy().hasHeightForWidth())
- self.password.setSizePolicy(sizePolicy)
- self.password.setMinimumSize(QtCore.QSize(400, 0))
- self.password.setEchoMode(QtWidgets.QLineEdit.Password)
- self.password.setObjectName("password")
- self.gridLayout_3.addWidget(self.password, 1, 0, 1, 1)
- self.gridLayout_4.addLayout(self.gridLayout_3, 2, 0, 1, 1)
- self.play.clicked.connect(self.Play)
- self.retranslateUi(Form)
- self.tabWidget.setCurrentIndex(0)
- self.offlineMode.clicked['bool'].connect(self.offlineUsername.setEnabled)
- QtCore.QMetaObject.connectSlotsByName(Form)
- def retranslateUi(self, Form):
- _translate = QtCore.QCoreApplication.translate
- Form.setWindowTitle(_translate("Form", "Gr33ncraft"))
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Form", "Minecraft Updates"))
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("Form", "Gr33nbl00d.de"))
- self.groupBox.setTitle(_translate("Form", "Version"))
- self.groupBox_2.setTitle(_translate("Form", "Offline Einstellungen"))
- self.offlineMode.setText(_translate("Form", "Offline Mode"))
- self.launcherVisible.setText(_translate("Form", "Launcher beim Start geöffnet lassen"))
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("Form", "Einstellungen"))
- self.progressBar.setFormat(_translate("Form", "%p%"))
- self.email.setPlaceholderText(_translate("Form", "E-Mail Adresse"))
- self.play.setText(_translate("Form", "Play"))
- self.password.setPlaceholderText(_translate("Form", "Passwort"))
- def Reporthook1(self, blocknum, blocksize, totalsize):
- versionIndex = self.version.currentIndex()
- currentVersion = versions[versionIndex].split("|")
- #totalsize Fix
- totalsize = int(currentVersion[3])
- readsofar = blocknum * blocksize
- percent = (readsofar * 1e2 / totalsize) / 2
- self.progressBar.setValue(percent)
- app.processEvents()
- def Reporthook2(self, blocknum, blocksize, totalsize):
- file = open("./data/.minecraftVersion.mcv", "r")
- minecraftVersion = file.read().split("|")
- file.close()
- #totalsize Fix
- totalsize = int(minecraftVersion[2])
- readsofar = blocknum * blocksize
- percent = ((readsofar * 1e2 / totalsize) / 2) + 50
- self.progressBar.setValue(percent)
- app.processEvents()
- def Play(self, o):
- self.play.setEnabled(False)
- app.processEvents()
- versionIndex = self.version.currentIndex()
- currentVersion = versions[versionIndex].split("|")
- try:
- urllib.request.urlretrieve(currentVersion[1], "./data/" + currentVersion[0] + ".mcs")
- except:
- easygui.msgbox("Startdatei konnte nicht heruntergeladen werden. Bitte überprüfe deine Verbindung zum Internet.")
- self.play.setEnabled(True)
- self.progressBar.setValue(0)
- return
- if os.path.isdir("./data/.minecraft/versions/" + currentVersion[0]):
- self.progressBar.setValue(50)
- pass
- else:
- try:
- urllib.request.urlretrieve(currentVersion[2], "./data/" + currentVersion[0] + ".zip", self.Reporthook1)
- except:
- easygui.msgbox("Version konnte nicht heruntergeladen werden. Bitte überprüfe deine Verbindung zum Internet.")
- self.play.setEnabled(True)
- self.progressBar.setValue(0)
- return
- #Zipfile entpacken
- file = zipfile.ZipFile("./data/" + currentVersion[0] + ".zip", "r")
- file.extractall("./data/")
- file.close()
- #Check .minecraft Version
- try:
- urllib.request.urlretrieve("http://googledrive.com/host/0B7hBEuj6vVFWdnZlQU9McVQtcEU/", "./data/.minecraftVersion.mcv")
- except:
- easygui.msgbox("Minecraft konnte nicht heruntergeladen werden. Bitte überprüfe deine Verbindung zum Internet.")
- self.play.setEnabled(True)
- self.progressBar.setValue(0)
- return
- file = open("./data/.minecraftVersion.mcv", "r")
- minecraftVersion = file.read().split("|")
- file.close()
- file = open("./data/.minecraft/.minecraftVersion.mcv")
- currentMinecraftVersion = file.read()
- file.close()
- if minecraftVersion[0] == currentMinecraftVersion:
- self.progressBar.setValue(100)
- else:
- try:
- urllib.request.urlretrieve(minecraftVersion[1], "./data/.minecraft.zip", self.Reporthook2)
- file = zipfile.ZipFile("./data/.minecraft.zip", "r")
- file.extractall("./data/.minecraft/")
- file.close()
- except:
- easygui.msgbox("Minecraft konnte nicht heruntergeladen werden. Bitte überprüfe deine Verbindung zum Internet.")
- self.play.setEnabled(True)
- self.progressBar.setValue(0)
- return
- file = open("./data/.minecraft/.minecraftVersion.mcv", "w")
- file.write(minecraftVersion[0])
- file.close()
- #Minecraft starten
- accessToken, uuid, username = GetAccessToken.GetToken(self.email.text(), self.password.text())
- if uuid == False:
- easygui.msgbox("Benutzername oder Passwort falsch!")
- self.play.setEnabled(True)
- self.progressBar.setValue(0)
- return
- file = open("./data/" + currentVersion[0] + ".mcs", "r")
- startCommand = file.read()
- file.close()
- path = os.path.realpath(".") + "/data/"
- #replace placeholder
- startCommand = startCommand.replace("[username]", username)
- startCommand = startCommand.replace("[uuid]", uuid)
- startCommand = startCommand.replace("[accessToken]", accessToken)
- startCommand = startCommand.replace("[path]", path)
- #save options
- file = open("./data/options.mcl", "wb")
- file.write(base64.b64encode(str(self.email.text()+"|"+self.password.text()+"|"+str(offlineMode.isEnabled())+"|"+self.offlineUsername.text()+"|"+str(self.launcherVisible.isEnabled())).encode()))
- file.close()
- #start Minecraft
- os.popen(startCommand)
- from PyQt5 import QtWebKitWidgets
- if __name__ == "__main__":
- import sys
- app = QtWidgets.QApplication(sys.argv)
- Form = QtWidgets.QWidget()
- ui = Ui_Form()
- ui.setupUi(Form)
- Form.show()
- #Run as admin
- import win32com.shell.shell as shell
- ASADMIN = 'asadmin'
- if sys.argv[-1] != ASADMIN:
- script = os.path.abspath(sys.argv[0])
- params = ' '.join([script] + sys.argv[1:] + [ASADMIN])
- try:
- shell.ShellExecuteEx(lpVerb='runas', lpFile=sys.executable, lpParameters=params)
- except:
- easygui.msgbox("Du musst Adminrechte haben um den Launcher auszuführen.", "Error")
- sys.exit()
- #Create Files
- CreateFiles.Create()
- #VersionList download
- try:
- urllib.request.urlretrieve("http://googledrive.com/host/0B7hBEuj6vVFWTi1Tbk9wR2I0U2M/", "./data/versionList.mcv")
- except:
- easygui.msgbox("Keine Verbindung zum Internet oder so.", "Error")
- sys.exit()
- file = open("./data/versionList.mcv")
- versions = file.read()
- file.close()
- versions = versions.split("\n")
- versionNames = []
- for i in versions:
- versionNames.append(i.split("|")[0])
- ui.version.addItems(versionNames)
- #load options
- file = open("./data/options.mcl", "rb")
- options = base64.b64decode(file.read()).decode().split("|")
- file.close()
- ui.email.setText(options[0])
- ui.password.setText(options[1])
- ui.offlineUsername.setText(options[3])
- if options[2] == "True":
- ui.offlineMode.setChecked(True)
- else:
- ui.offlineMode.setChecked(False)
- if options[4] == "True":
- ui.launcherVisible.setChecked(True)
- else:
- ui.launcherVisible.setChecked(False)
- sys.exit(app.exec_())
- Ab hier Createfiles.py:
- def Create():
- import os, base64
- if os.path.isdir("./data"):
- pass
- else:
- os.mkdir("./data")
- if os.path.isdir("./data/.minecraft"):
- pass
- else:
- os.mkdir("./data/.minecraft")
- if os.path.isdir("./data/.minecraft/versions"):
- pass
- else:
- os.mkdir("./data/.minecraft/versions")
- if os.path.isfile("./data/.minecraft/.minecraftVersion.mcv"):
- pass
- else:
- file = open("./data/.minecraft/.minecraftVersion.mcv", "w")
- file.write("0.0")
- file.close()
- if os.path.isfile("./data/options.mcl"):
- pass
- else:
- file = open("./data/options.mcl", "wb")
- file.write(base64.b64encode(b" | |False| |False"))
- file.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement