Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- from PyQt4 import QtCore, QtGui
- import os, easygui, urllib.request, CreateFiles, zipfile, GetAccessToken
- try:
- _fromUtf8 = QtCore.QString.fromUtf8
- except AttributeError:
- def _fromUtf8(s):
- return s
- try:
- _encoding = QtGui.QApplication.UnicodeUTF8
- def _translate(context, text, disambig):
- return QtGui.QApplication.translate(context, text, disambig, _encoding)
- except AttributeError:
- def _translate(context, text, disambig):
- return QtGui.QApplication.translate(context, text, disambig)
- class Ui_widget(object):
- def setupUi(self, widget):
- widget.setObjectName(_fromUtf8("widget"))
- widget.resize(825, 593)
- font = QtGui.QFont()
- font.setPointSize(11)
- widget.setFont(font)
- icon = QtGui.QIcon()
- icon.addPixmap(QtGui.QPixmap(_fromUtf8("../../Minecraft Launcher/Scripts/favicon.ico")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- widget.setWindowIcon(icon)
- self.gridLayout_4 = QtGui.QGridLayout(widget)
- self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4"))
- self.progressBar = QtGui.QProgressBar(widget)
- self.progressBar.setCursor(QtGui.QCursor(QtCore.Qt.IBeamCursor))
- self.progressBar.setProperty("value", 0)
- self.progressBar.setAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignHCenter)
- self.progressBar.setTextVisible(True)
- self.progressBar.setOrientation(QtCore.Qt.Horizontal)
- self.progressBar.setInvertedAppearance(False)
- self.progressBar.setObjectName(_fromUtf8("progressBar"))
- self.gridLayout_4.addWidget(self.progressBar, 1, 0, 1, 1)
- self.gridLayout_3 = QtGui.QGridLayout()
- self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3"))
- self.password = QtGui.QLineEdit(widget)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.password.sizePolicy().hasHeightForWidth())
- self.password.setSizePolicy(sizePolicy)
- self.password.setEchoMode(QtGui.QLineEdit.Password)
- self.password.setObjectName(_fromUtf8("password"))
- self.gridLayout_3.addWidget(self.password, 1, 0, 1, 1)
- self.play = QtGui.QPushButton(widget)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Expanding)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.play.sizePolicy().hasHeightForWidth())
- self.play.setSizePolicy(sizePolicy)
- self.play.setMinimumSize(QtCore.QSize(250, 0))
- font = QtGui.QFont()
- font.setPointSize(20)
- font.setBold(True)
- font.setWeight(75)
- self.play.setFont(font)
- self.play.setObjectName(_fromUtf8("play"))
- self.gridLayout_3.addWidget(self.play, 0, 2, 2, 1)
- self.email = QtGui.QLineEdit(widget)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.email.sizePolicy().hasHeightForWidth())
- self.email.setSizePolicy(sizePolicy)
- self.email.setObjectName(_fromUtf8("email"))
- self.gridLayout_3.addWidget(self.email, 0, 0, 1, 1)
- self.line = QtGui.QFrame(widget)
- self.line.setMinimumSize(QtCore.QSize(20, 100))
- self.line.setFrameShape(QtGui.QFrame.VLine)
- self.line.setFrameShadow(QtGui.QFrame.Sunken)
- self.line.setObjectName(_fromUtf8("line"))
- self.gridLayout_3.addWidget(self.line, 0, 1, 2, 1)
- self.gridLayout_4.addLayout(self.gridLayout_3, 2, 0, 1, 1)
- self.tabWidget = QtGui.QTabWidget(widget)
- self.tabWidget.setObjectName(_fromUtf8("tabWidget"))
- self.tab = QtGui.QWidget()
- self.tab.setObjectName(_fromUtf8("tab"))
- self.gridLayout = QtGui.QGridLayout(self.tab)
- self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
- self.webView = QtWebKit.QWebView(self.tab)
- self.webView.setUrl(QtCore.QUrl(_fromUtf8("http://mcupdate.tumblr.com/")))
- self.webView.setObjectName(_fromUtf8("webView"))
- self.gridLayout.addWidget(self.webView, 0, 0, 1, 1)
- self.tabWidget.addTab(self.tab, _fromUtf8(""))
- self.tab_2 = QtGui.QWidget()
- self.tab_2.setObjectName(_fromUtf8("tab_2"))
- self.gridLayout_2 = QtGui.QGridLayout(self.tab_2)
- self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
- self.webView_2 = QtWebKit.QWebView(self.tab_2)
- self.webView_2.setUrl(QtCore.QUrl(_fromUtf8("http://www.pixelmining.de/lauchner/index.html")))
- self.webView_2.setZoomFactor(1.0)
- self.webView_2.setObjectName(_fromUtf8("webView_2"))
- self.gridLayout_2.addWidget(self.webView_2, 0, 0, 1, 1)
- self.tabWidget.addTab(self.tab_2, _fromUtf8(""))
- self.tab_4 = QtGui.QWidget()
- self.tab_4.setObjectName(_fromUtf8("tab_4"))
- self.gridLayout_9 = QtGui.QGridLayout(self.tab_4)
- self.gridLayout_9.setObjectName(_fromUtf8("gridLayout_9"))
- self.webView_3 = QtWebKit.QWebView(self.tab_4)
- self.webView_3.setUrl(QtCore.QUrl(_fromUtf8("http://www.pixelmining.de/teamspeak3/index.html")))
- self.webView_3.setObjectName(_fromUtf8("webView_3"))
- self.gridLayout_9.addWidget(self.webView_3, 0, 0, 1, 1)
- self.tabWidget.addTab(self.tab_4, _fromUtf8(""))
- self.tab_3 = QtGui.QWidget()
- self.tab_3.setObjectName(_fromUtf8("tab_3"))
- self.gridLayout_8 = QtGui.QGridLayout(self.tab_3)
- self.gridLayout_8.setObjectName(_fromUtf8("gridLayout_8"))
- self.gridLayout_5 = QtGui.QGridLayout()
- self.gridLayout_5.setObjectName(_fromUtf8("gridLayout_5"))
- self.groupBox = QtGui.QGroupBox(self.tab_3)
- self.groupBox.setMaximumSize(QtCore.QSize(16777215, 100))
- self.groupBox.setObjectName(_fromUtf8("groupBox"))
- self.gridLayout_6 = QtGui.QGridLayout(self.groupBox)
- self.gridLayout_6.setObjectName(_fromUtf8("gridLayout_6"))
- self.version = QtGui.QComboBox(self.groupBox)
- self.version.setObjectName(_fromUtf8("version"))
- self.gridLayout_6.addWidget(self.version, 0, 0, 1, 1)
- self.gridLayout_5.addWidget(self.groupBox, 0, 0, 1, 1)
- self.gridLayout_8.addLayout(self.gridLayout_5, 0, 0, 1, 1)
- self.groupBox_2 = QtGui.QGroupBox(self.tab_3)
- self.groupBox_2.setMaximumSize(QtCore.QSize(16777215, 100))
- self.groupBox_2.setObjectName(_fromUtf8("groupBox_2"))
- self.gridLayout_7 = QtGui.QGridLayout(self.groupBox_2)
- self.gridLayout_7.setObjectName(_fromUtf8("gridLayout_7"))
- self.offlineMode = QtGui.QCheckBox(self.groupBox_2)
- self.offlineMode.setObjectName(_fromUtf8("offlineMode"))
- self.gridLayout_7.addWidget(self.offlineMode, 0, 0, 1, 1)
- self.offlineUsername = QtGui.QLineEdit(self.groupBox_2)
- self.offlineUsername.setEnabled(False)
- self.offlineUsername.setObjectName(_fromUtf8("offlineUsername"))
- self.gridLayout_7.addWidget(self.offlineUsername, 0, 1, 1, 1)
- self.gridLayout_8.addWidget(self.groupBox_2, 0, 1, 1, 1)
- self.launcherVisible = QtGui.QCheckBox(self.tab_3)
- self.launcherVisible.setObjectName(_fromUtf8("launcherVisible"))
- self.gridLayout_8.addWidget(self.launcherVisible, 1, 0, 1, 2)
- self.tabWidget.addTab(self.tab_3, _fromUtf8(""))
- self.gridLayout_4.addWidget(self.tabWidget, 0, 0, 1, 1)
- self.play.clicked.connect(self.Play)
- self.retranslateUi(widget)
- self.tabWidget.setCurrentIndex(3)
- QtCore.QObject.connect(self.offlineMode, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.offlineUsername.setEnabled)
- QtCore.QMetaObject.connectSlotsByName(widget)
- def retranslateUi(self, widget):
- widget.setWindowTitle(_translate("widget", "PixelMining - Launcher", None))
- self.progressBar.setFormat(_translate("widget", "%p% heruntergeladen", None))
- self.password.setPlaceholderText(_translate("widget", "Passwort", None))
- self.play.setText(_translate("widget", "Play", None))
- self.email.setPlaceholderText(_translate("widget", "Benutzername / E-Mail Adresse", None))
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("widget", "Minecraft Updates", None))
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("widget", "PixelMining Updates", None))
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("widget", "TeamSpeak3", None))
- self.groupBox.setTitle(_translate("widget", "Version", None))
- self.groupBox_2.setTitle(_translate("widget", "Offline Einstellungen", None))
- self.offlineMode.setText(_translate("widget", "Offline Mode", None))
- self.launcherVisible.setText(_translate("widget", "Launcher beim Start geöffnet lassen", None))
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("widget", "Einstellungen", None))
- 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 hertuntergeladen werden. Bitte überprüfe deine Verbindung zum Server.")
- self.play.setEnabled(True)
- self.progressBar.setValue(0)
- return
- if os.path.isdir("./data/.minecraft/versions/" + currentVersion[0]):
- self.progressBar.setValue(50)
- else:
- try:
- urllib.request.urlretrieve(currentVersion[2], "./data/" + currentVersion[0] + ".zip", self.Reporthook1)
- except:
- easygui.msgbox("Version konnte nicht hertuntergeladen werden. Bitte überprüfe deine Verbindung zum Server.")
- 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://www.pixelmining.de/Launcher/.minecraftVersion.txt", "./data/.minecraftVersion.mcv")
- except:
- easygui.msgbox("Minecraft konnte nicht heruntergeladen werden. Bitte überprüfe deine Verbindung zum Server.")
- 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/")
- file.close()
- except:
- easygui.msgbox("Minecraft konnte nicht hertuntergeladen werden. Bitte überprüfe deine Verbindung zum Server.")
- 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)
- # start Minecraft
- os.popen(startCommand)
- from PyQt4 import QtWebKit
- if __name__ == "__main__":
- import sys
- app = QtGui.QApplication(sys.argv)
- widget = QtGui.QWidget()
- ui = Ui_widget()
- ui.setupUi(widget)
- widget.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 diesen Launcher als Administrator ausführen.", "Error")
- sys.exit()
- #Create Files
- CreateFiles.Create()
- #VersionList download
- try:
- urllib.request.urlretrieve("http://www.pixelmining.de/Launcher/VersionList.txt", "./data/versionList.mcv")
- except:
- easygui.msgbox("Keine Verbindung zum Server.")
- 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)
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement