You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

137 lines
5.0 KiB
Python

5 years ago
import sys
from PyQt5 import QtWidgets, uic, QtGui
import toml
import os
import shutil
import subprocess
4 years ago
from urllib.request import urlopen
import re
def get_public_ip():
data = str(urlopen('http://checkip.dyndns.com/').read())
return re.compile(r'Address: (\d+.\d+.\d+.\d+)').search(data).group(1)
def read_datei(datei):
with open(os.path.join(CONFIG["pfad_cloud"], datei)) as file:
inhalt = file.read()
inhalt = inhalt.strip()
return inhalt
5 years ago
class EmpyrionLauncher(QtWidgets.QDialog):
def __init__(self, parent=None):
super().__init__(parent)
uidatei = os.path.join(PFAD, "empyrion_launcher.ui")
self.ui = uic.loadUi(uidatei, self)
self.text_status_pfade = None
self.status_pfade = False
self.spiel_aktiv = True
# Slots
# Buttons Tag Launcher
self.ui.button_beenden.clicked.connect(self.on_beenden)
# Buttons Tab Einstellungen
self.ui.button_ok.clicked.connect(self.on_ok)
self.ui.button_abbrechen.clicked.connect(self.on_abbrechen)
# Inlines ausfüllen
self.on_abbrechen()
self.cloud_lokal_verschieben()
def on_spiel_starten(self):
dateiname = os.path.join(CONFIG["pfad_cloud"], "aktiv_{}".format(CONFIG["username"]))
with open(dateiname, "w") as file:
4 years ago
file.write(f"{get_public_ip()}")
5 years ago
subprocess.call(CONFIG["pfad_game"])
os.remove(dateiname)
def on_beenden(self):
self.close()
def on_ok(self):
CONFIG["username"] = self.ui.username.text()
CONFIG["pfad_lokal"] = self.ui.pfad_lokal.text()
CONFIG["pfad_cloud"] = self.ui.pfad_cloud.text()
CONFIG["pfad_game"] = self.ui.pfad_game.text()
CONFIG["savegame"] = self.ui.savegame.text()
ausgabe = {"config": CONFIG}
with open(DATEITOML, "w") as file:
file.write(toml.dumps(ausgabe))
self.check_pfad()
"{} - gespeichert".format(self.text_status_pfade)
self.label_status_pfade.setText("{} - gespeichert".format(self.text_status_pfade))
def on_abbrechen(self):
self.ui.username.setText(CONFIG["username"])
self.ui.pfad_lokal.setText(CONFIG["pfad_lokal"])
self.ui.pfad_cloud.setText(CONFIG["pfad_cloud"])
self.ui.pfad_game.setText(CONFIG["pfad_game"])
self.ui.savegame.setText(CONFIG["savegame"])
self.label_status_pfade.setText(self.text_status_pfade)
def cloud_lokal_verschieben(self):
4 years ago
datei = ""
5 years ago
self.check_pfad()
if self.status_pfade:
ordnerinhalt = os.listdir(CONFIG["pfad_cloud"])
self.spiel_aktiv = True
for ordner in ordnerinhalt:
if ordner.startswith(CONFIG["savegame"]):
self.spiel_aktiv = False
quelle = os.path.join(CONFIG["pfad_cloud"], ordner)
shutil.move(quelle, CONFIG["pfad_lokal"])
if self.spiel_aktiv:
user = "unbekannt"
for datei in ordnerinhalt:
if datei.startswith("aktiv"):
user = datei.split("_")[1]
4 years ago
self.label_spiel_aktiv.setText("Spiel schon aktiv von {} \n IP: {}".format(user, read_datei(datei)))
5 years ago
else:
self.label_spiel_aktiv.setText("Kein Spiel aktiv")
self.ui.button_spiel_starten.clicked.connect(self.on_spiel_starten)
def lokal_cloud_verschieben(self):
self.check_pfad()
if self.status_pfade:
ordnerinhalt = os.listdir(CONFIG["pfad_lokal"])
for ordner in ordnerinhalt:
if ordner.startswith(CONFIG["savegame"]):
quelle = os.path.join(CONFIG["pfad_lokal"], ordner)
shutil.move(quelle, CONFIG["pfad_cloud"])
def check_pfad(self):
self.status_pfade = False
pfad_lokal = os.path.isdir(CONFIG["pfad_lokal"])
pfad_cloud = os.path.isdir(CONFIG["pfad_cloud"])
pfad_game = os.path.isfile(CONFIG["pfad_game"])
textausgabe = ""
if not pfad_lokal:
textausgabe = "{}Pfad Lokal, ".format(textausgabe)
if not pfad_cloud:
textausgabe = "{}Pfad Cloud, ".format(textausgabe)
if not pfad_game:
textausgabe = "{}Pfad Game, ".format(textausgabe)
if not pfad_lokal or not pfad_cloud or not pfad_game:
textausgabe = "{} existiert nicht".format(textausgabe)
else:
textausgabe = "Alle Pfade ok!"
self.status_pfade = True
self.text_status_pfade = textausgabe
self.ui.label_status_pfade.setText(self.text_status_pfade)
def closeEvent(self, a0: QtGui.QCloseEvent):
self.lokal_cloud_verschieben()
PFAD = os.path.abspath(os.path.dirname(__file__))
DATEITOML = os.path.join(PFAD, "config.toml")
with open(DATEITOML) as file:
CONFIG = toml.loads(file.read())["config"]
app = QtWidgets.QApplication(sys.argv)
dialog = EmpyrionLauncher()
dialog.setWindowTitle("Empyrion Launcher")
dialog.show()
sys.exit(app.exec_())