Advertisement
Guest User

Meine main und CreateFiles.py

a guest
Feb 24th, 2016
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 15.47 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. from PyQt5 import QtCore, QtGui, QtWidgets
  4. import os, easygui, urllib.request, CreateFiles, zipfile, GetAccessToken, base64
  5.  
  6. class Ui_Form(object):
  7.     def setupUi(self, Form):
  8.         Form.setObjectName("Form")
  9.         Form.resize(837, 579)
  10.         font = QtGui.QFont()
  11.         font.setPointSize(12)
  12.         Form.setFont(font)
  13.         icon = QtGui.QIcon()
  14.         icon.addPixmap(QtGui.QPixmap("../../../../../GILI#S desktop/Webseite Opas CD/Website/gr33nbl00d/apple-touch-icon-57x57-precomposed.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
  15.         Form.setWindowIcon(icon)
  16.         self.gridLayout_4 = QtWidgets.QGridLayout(Form)
  17.         self.gridLayout_4.setObjectName("gridLayout_4")
  18.         self.tabWidget = QtWidgets.QTabWidget(Form)
  19.         self.tabWidget.setObjectName("tabWidget")
  20.         self.tab = QtWidgets.QWidget()
  21.         self.tab.setObjectName("tab")
  22.         self.gridLayout = QtWidgets.QGridLayout(self.tab)
  23.         self.gridLayout.setObjectName("gridLayout")
  24.         self.webView = QtWebKitWidgets.QWebView(self.tab)
  25.         self.webView.setUrl(QtCore.QUrl("http://mcupdate.tumblr.com/"))
  26.         self.webView.setObjectName("webView")
  27.         self.gridLayout.addWidget(self.webView, 0, 0, 1, 1)
  28.         self.tabWidget.addTab(self.tab, "")
  29.         self.tab_2 = QtWidgets.QWidget()
  30.         self.tab_2.setObjectName("tab_2")
  31.         self.gridLayout_2 = QtWidgets.QGridLayout(self.tab_2)
  32.         self.gridLayout_2.setObjectName("gridLayout_2")
  33.         self.webView_2 = QtWebKitWidgets.QWebView(self.tab_2)
  34.         self.webView_2.setUrl(QtCore.QUrl("http://gr33nbl00d.de/"))
  35.         self.webView_2.setObjectName("webView_2")
  36.         self.gridLayout_2.addWidget(self.webView_2, 0, 0, 1, 1)
  37.         self.tabWidget.addTab(self.tab_2, "")
  38.         self.tab_3 = QtWidgets.QWidget()
  39.         self.tab_3.setObjectName("tab_3")
  40.         self.gridLayout_7 = QtWidgets.QGridLayout(self.tab_3)
  41.         self.gridLayout_7.setObjectName("gridLayout_7")
  42.         self.groupBox = QtWidgets.QGroupBox(self.tab_3)
  43.         self.groupBox.setMinimumSize(QtCore.QSize(0, 0))
  44.         self.groupBox.setMaximumSize(QtCore.QSize(16777215, 100))
  45.         self.groupBox.setObjectName("groupBox")
  46.         self.gridLayout_5 = QtWidgets.QGridLayout(self.groupBox)
  47.         self.gridLayout_5.setObjectName("gridLayout_5")
  48.         self.version = QtWidgets.QComboBox(self.groupBox)
  49.         self.version.setEditable(False)
  50.         self.version.setObjectName("version")
  51.         self.gridLayout_5.addWidget(self.version, 0, 0, 1, 1)
  52.         self.gridLayout_7.addWidget(self.groupBox, 0, 0, 1, 1)
  53.         self.groupBox_2 = QtWidgets.QGroupBox(self.tab_3)
  54.         self.groupBox_2.setMinimumSize(QtCore.QSize(0, 0))
  55.         self.groupBox_2.setMaximumSize(QtCore.QSize(16777215, 100))
  56.         self.groupBox_2.setObjectName("groupBox_2")
  57.         self.gridLayout_6 = QtWidgets.QGridLayout(self.groupBox_2)
  58.         self.gridLayout_6.setObjectName("gridLayout_6")
  59.         self.offlineMode = QtWidgets.QCheckBox(self.groupBox_2)
  60.         self.offlineMode.setObjectName("offlineMode")
  61.         self.gridLayout_6.addWidget(self.offlineMode, 0, 0, 1, 1)
  62.         self.offlineUsername = QtWidgets.QLineEdit(self.groupBox_2)
  63.         self.offlineUsername.setEnabled(False)
  64.         self.offlineUsername.setObjectName("offlineUsername")
  65.         self.gridLayout_6.addWidget(self.offlineUsername, 0, 1, 1, 1)
  66.         self.gridLayout_7.addWidget(self.groupBox_2, 0, 1, 1, 1)
  67.         self.launcherVisible = QtWidgets.QCheckBox(self.tab_3)
  68.         self.launcherVisible.setObjectName("launcherVisible")
  69.         self.gridLayout_7.addWidget(self.launcherVisible, 1, 0, 1, 2)
  70.         self.tabWidget.addTab(self.tab_3, "")
  71.         self.gridLayout_4.addWidget(self.tabWidget, 0, 0, 1, 1)
  72.         self.progressBar = QtWidgets.QProgressBar(Form)
  73.         self.progressBar.setProperty("value", 0)
  74.         self.progressBar.setAlignment(QtCore.Qt.AlignCenter)
  75.         self.progressBar.setTextVisible(True)
  76.         self.progressBar.setTextDirection(QtWidgets.QProgressBar.TopToBottom)
  77.         self.progressBar.setObjectName("progressBar")
  78.         self.gridLayout_4.addWidget(self.progressBar, 1, 0, 1, 1)
  79.         self.gridLayout_3 = QtWidgets.QGridLayout()
  80.         self.gridLayout_3.setObjectName("gridLayout_3")
  81.         self.email = QtWidgets.QLineEdit(Form)
  82.         sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
  83.         sizePolicy.setHorizontalStretch(0)
  84.         sizePolicy.setVerticalStretch(0)
  85.         sizePolicy.setHeightForWidth(self.email.sizePolicy().hasHeightForWidth())
  86.         self.email.setSizePolicy(sizePolicy)
  87.         self.email.setMinimumSize(QtCore.QSize(400, 0))
  88.         self.email.setObjectName("email")
  89.         self.gridLayout_3.addWidget(self.email, 0, 0, 1, 1)
  90.         self.line = QtWidgets.QFrame(Form)
  91.         sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
  92.         sizePolicy.setHorizontalStretch(0)
  93.         sizePolicy.setVerticalStretch(0)
  94.         sizePolicy.setHeightForWidth(self.line.sizePolicy().hasHeightForWidth())
  95.         self.line.setSizePolicy(sizePolicy)
  96.         self.line.setMinimumSize(QtCore.QSize(20, 100))
  97.         self.line.setFrameShape(QtWidgets.QFrame.VLine)
  98.         self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
  99.         self.line.setObjectName("line")
  100.         self.gridLayout_3.addWidget(self.line, 0, 1, 2, 1)
  101.         self.play = QtWidgets.QPushButton(Form)
  102.         sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
  103.         sizePolicy.setHorizontalStretch(0)
  104.         sizePolicy.setVerticalStretch(0)
  105.         sizePolicy.setHeightForWidth(self.play.sizePolicy().hasHeightForWidth())
  106.         self.play.setSizePolicy(sizePolicy)
  107.         self.play.setMinimumSize(QtCore.QSize(100, 100))
  108.         font = QtGui.QFont()
  109.         font.setPointSize(20)
  110.         font.setBold(True)
  111.         font.setWeight(75)
  112.         self.play.setFont(font)
  113.         self.play.setAutoDefault(False)
  114.         self.play.setDefault(False)
  115.         self.play.setFlat(False)
  116.         self.play.setObjectName("play")
  117.         self.gridLayout_3.addWidget(self.play, 0, 2, 2, 1)
  118.         self.password = QtWidgets.QLineEdit(Form)
  119.         sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
  120.         sizePolicy.setHorizontalStretch(0)
  121.         sizePolicy.setVerticalStretch(0)
  122.         sizePolicy.setHeightForWidth(self.password.sizePolicy().hasHeightForWidth())
  123.         self.password.setSizePolicy(sizePolicy)
  124.         self.password.setMinimumSize(QtCore.QSize(400, 0))
  125.         self.password.setEchoMode(QtWidgets.QLineEdit.Password)
  126.         self.password.setObjectName("password")
  127.         self.gridLayout_3.addWidget(self.password, 1, 0, 1, 1)
  128.         self.gridLayout_4.addLayout(self.gridLayout_3, 2, 0, 1, 1)
  129.  
  130.         self.play.clicked.connect(self.Play)
  131.  
  132.         self.retranslateUi(Form)
  133.         self.tabWidget.setCurrentIndex(0)
  134.         self.offlineMode.clicked['bool'].connect(self.offlineUsername.setEnabled)
  135.         QtCore.QMetaObject.connectSlotsByName(Form)
  136.  
  137.     def retranslateUi(self, Form):
  138.         _translate = QtCore.QCoreApplication.translate
  139.         Form.setWindowTitle(_translate("Form", "Gr33ncraft"))
  140.         self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Form", "Minecraft Updates"))
  141.         self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("Form", "Gr33nbl00d.de"))
  142.         self.groupBox.setTitle(_translate("Form", "Version"))
  143.         self.groupBox_2.setTitle(_translate("Form", "Offline Einstellungen"))
  144.         self.offlineMode.setText(_translate("Form", "Offline Mode"))
  145.         self.launcherVisible.setText(_translate("Form", "Launcher beim Start geöffnet lassen"))
  146.         self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("Form", "Einstellungen"))
  147.         self.progressBar.setFormat(_translate("Form", "%p%"))
  148.         self.email.setPlaceholderText(_translate("Form", "E-Mail Adresse"))
  149.         self.play.setText(_translate("Form", "Play"))
  150.         self.password.setPlaceholderText(_translate("Form", "Passwort"))
  151.  
  152.     def Reporthook1(self, blocknum, blocksize, totalsize):
  153.         versionIndex = self.version.currentIndex()
  154.         currentVersion = versions[versionIndex].split("|")
  155.  
  156.         #totalsize Fix
  157.         totalsize = int(currentVersion[3])
  158.         readsofar = blocknum * blocksize
  159.         percent = (readsofar * 1e2 / totalsize) / 2
  160.  
  161.         self.progressBar.setValue(percent)
  162.         app.processEvents()
  163.  
  164.     def Reporthook2(self, blocknum, blocksize, totalsize):
  165.         file = open("./data/.minecraftVersion.mcv", "r")
  166.         minecraftVersion = file.read().split("|")
  167.         file.close()
  168.  
  169.         #totalsize Fix
  170.         totalsize = int(minecraftVersion[2])
  171.         readsofar = blocknum * blocksize
  172.         percent = ((readsofar * 1e2 / totalsize) / 2) + 50
  173.  
  174.         self.progressBar.setValue(percent)
  175.         app.processEvents()
  176.        
  177.     def Play(self, o):
  178.         self.play.setEnabled(False)
  179.         app.processEvents()
  180.        
  181.         versionIndex = self.version.currentIndex()
  182.         currentVersion = versions[versionIndex].split("|")
  183.         try:
  184.            urllib.request.urlretrieve(currentVersion[1], "./data/" + currentVersion[0] + ".mcs")            
  185.         except:
  186.             easygui.msgbox("Startdatei konnte nicht heruntergeladen werden. Bitte überprüfe deine Verbindung zum Internet.")
  187.             self.play.setEnabled(True)
  188.             self.progressBar.setValue(0)
  189.             return
  190.  
  191.         if os.path.isdir("./data/.minecraft/versions/" + currentVersion[0]):
  192.             self.progressBar.setValue(50)
  193.             pass
  194.         else:
  195.             try:
  196.                 urllib.request.urlretrieve(currentVersion[2], "./data/" + currentVersion[0] + ".zip", self.Reporthook1)
  197.             except:
  198.                 easygui.msgbox("Version konnte nicht heruntergeladen werden. Bitte überprüfe deine Verbindung zum Internet.")
  199.                 self.play.setEnabled(True)
  200.                 self.progressBar.setValue(0)
  201.                 return
  202.  
  203.             #Zipfile entpacken
  204.             file = zipfile.ZipFile("./data/" + currentVersion[0] + ".zip", "r")
  205.             file.extractall("./data/")
  206.             file.close()
  207.  
  208.         #Check .minecraft Version
  209.  
  210.         try:
  211.             urllib.request.urlretrieve("http://googledrive.com/host/0B7hBEuj6vVFWdnZlQU9McVQtcEU/", "./data/.minecraftVersion.mcv")
  212.         except:
  213.             easygui.msgbox("Minecraft konnte nicht heruntergeladen werden. Bitte überprüfe deine Verbindung zum Internet.")
  214.             self.play.setEnabled(True)
  215.             self.progressBar.setValue(0)
  216.             return
  217.         file = open("./data/.minecraftVersion.mcv", "r")
  218.         minecraftVersion = file.read().split("|")
  219.         file.close()
  220.  
  221.         file = open("./data/.minecraft/.minecraftVersion.mcv")
  222.         currentMinecraftVersion = file.read()
  223.         file.close()
  224.  
  225.         if minecraftVersion[0] == currentMinecraftVersion:
  226.             self.progressBar.setValue(100)
  227.         else:
  228.             try:
  229.                 urllib.request.urlretrieve(minecraftVersion[1], "./data/.minecraft.zip", self.Reporthook2)
  230.                 file = zipfile.ZipFile("./data/.minecraft.zip", "r")
  231.                 file.extractall("./data/.minecraft/")
  232.                 file.close()
  233.             except:
  234.                 easygui.msgbox("Minecraft konnte nicht heruntergeladen werden. Bitte überprüfe deine Verbindung zum Internet.")
  235.                 self.play.setEnabled(True)
  236.                 self.progressBar.setValue(0)
  237.                 return
  238.  
  239.         file = open("./data/.minecraft/.minecraftVersion.mcv", "w")
  240.         file.write(minecraftVersion[0])
  241.         file.close()
  242.  
  243.         #Minecraft starten
  244.         accessToken, uuid, username = GetAccessToken.GetToken(self.email.text(), self.password.text())
  245.  
  246.         if uuid == False:
  247.             easygui.msgbox("Benutzername oder Passwort falsch!")
  248.             self.play.setEnabled(True)
  249.             self.progressBar.setValue(0)
  250.             return
  251.  
  252.         file = open("./data/" + currentVersion[0] + ".mcs", "r")
  253.         startCommand = file.read()
  254.         file.close()
  255.  
  256.         path = os.path.realpath(".") + "/data/"
  257.  
  258.         #replace placeholder
  259.         startCommand = startCommand.replace("[username]", username)
  260.         startCommand = startCommand.replace("[uuid]", uuid)
  261.         startCommand = startCommand.replace("[accessToken]", accessToken)
  262.         startCommand = startCommand.replace("[path]", path)
  263.  
  264.         #save options
  265.         file = open("./data/options.mcl", "wb")
  266.         file.write(base64.b64encode(str(self.email.text()+"|"+self.password.text()+"|"+str(offlineMode.isEnabled())+"|"+self.offlineUsername.text()+"|"+str(self.launcherVisible.isEnabled())).encode()))
  267.         file.close()
  268.  
  269.         #start Minecraft
  270.         os.popen(startCommand)
  271.  
  272. from PyQt5 import QtWebKitWidgets
  273.  
  274. if __name__ == "__main__":
  275.     import sys
  276.     app = QtWidgets.QApplication(sys.argv)
  277.     Form = QtWidgets.QWidget()
  278.     ui = Ui_Form()
  279.     ui.setupUi(Form)
  280.     Form.show()
  281.  
  282.     #Run as admin
  283.     import win32com.shell.shell as shell
  284.     ASADMIN = 'asadmin'
  285.     if sys.argv[-1] != ASADMIN:
  286.         script = os.path.abspath(sys.argv[0])
  287.         params = ' '.join([script] + sys.argv[1:] + [ASADMIN])
  288.         try:
  289.             shell.ShellExecuteEx(lpVerb='runas', lpFile=sys.executable, lpParameters=params)
  290.         except:
  291.             easygui.msgbox("Du musst Adminrechte haben um den Launcher auszuführen.", "Error")
  292.             sys.exit()
  293.  
  294.     #Create Files
  295.     CreateFiles.Create()
  296.    
  297.     #VersionList download
  298.     try:
  299.         urllib.request.urlretrieve("http://googledrive.com/host/0B7hBEuj6vVFWTi1Tbk9wR2I0U2M/", "./data/versionList.mcv")
  300.     except:
  301.         easygui.msgbox("Keine Verbindung zum Internet oder so.", "Error")
  302.         sys.exit()
  303.  
  304.     file = open("./data/versionList.mcv")
  305.     versions = file.read()
  306.     file.close()
  307.  
  308.     versions = versions.split("\n")
  309.     versionNames = []
  310.  
  311.     for i in versions:
  312.         versionNames.append(i.split("|")[0])
  313.  
  314.     ui.version.addItems(versionNames)
  315.  
  316.     #load options
  317.     file = open("./data/options.mcl", "rb")
  318.     options = base64.b64decode(file.read()).decode().split("|")
  319.     file.close()
  320.  
  321.     ui.email.setText(options[0])
  322.     ui.password.setText(options[1])
  323.     ui.offlineUsername.setText(options[3])
  324.  
  325.     if options[2] == "True":
  326.         ui.offlineMode.setChecked(True)
  327.     else:
  328.         ui.offlineMode.setChecked(False)
  329.     if options[4] == "True":
  330.         ui.launcherVisible.setChecked(True)
  331.     else:
  332.         ui.launcherVisible.setChecked(False)
  333.  
  334.     sys.exit(app.exec_())
  335.  
  336. Ab hier Createfiles.py:
  337.  
  338. def Create():
  339.     import os, base64
  340.  
  341.     if os.path.isdir("./data"):
  342.         pass
  343.     else:
  344.         os.mkdir("./data")
  345.        
  346.     if os.path.isdir("./data/.minecraft"):
  347.         pass
  348.     else:
  349.         os.mkdir("./data/.minecraft")
  350.              
  351.     if os.path.isdir("./data/.minecraft/versions"):
  352.         pass
  353.     else:
  354.         os.mkdir("./data/.minecraft/versions")
  355.  
  356.     if os.path.isfile("./data/.minecraft/.minecraftVersion.mcv"):
  357.         pass
  358.     else:
  359.         file = open("./data/.minecraft/.minecraftVersion.mcv", "w")
  360.         file.write("0.0")
  361.         file.close()
  362.  
  363.     if os.path.isfile("./data/options.mcl"):
  364.         pass
  365.     else:
  366.         file = open("./data/options.mcl", "wb")
  367.         file.write(base64.b64encode(b" | |False| |False"))
  368.         file.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement