This commit is contained in:
Muaz Ahmad 2022-11-10 23:03:50 +05:00
parent 9e0c5f2a0a
commit 078c1b1131
5 changed files with 179 additions and 113 deletions

2
api.py
View file

@ -14,7 +14,7 @@ class WorldState():
self.fissures = self.ws.get('fissures') self.fissures = self.ws.get('fissures')
self.invasions = self.ws.get('invasions') self.invasions = self.ws.get('invasions')
self.sorties = self.ws.get('sorties') self.sorties = self.ws.get('sortie')
self.archon_hunt = self.ws.get('archonHunt') self.archon_hunt = self.ws.get('archonHunt')
self.arbitration = self.ws.get('arbitration') self.arbitration = self.ws.get('arbitration')
self.alerts = self.ws.get('alerts') self.alerts = self.ws.get('alerts')

View file

@ -1,6 +1,9 @@
from PyQt5 import QtWidgets, QtGui, QtCore from PyQt5 import QtWidgets, QtGui, QtCore
from datetime import datetime, timedelta from datetime import datetime, timedelta
import time
utcoffset = time.time() - time.mktime(time.gmtime())
class Fissure(QtWidgets.QWidget): class Fissure(QtWidgets.QWidget):
def __init__(self, parent, fissure_info = {}, i = 0): def __init__(self, parent, fissure_info = {}, i = 0):
@ -52,17 +55,18 @@ class Fissure(QtWidgets.QWidget):
def update_gui(self): def update_gui(self):
try: try:
self.FissureTier.setText(f"{self.fissure_info['tier']} - T{self.fissure_info['tierNum']}") self.FissureTier.setText(f"{self.fissure_info['tier']} - T{self.fissure_info['tierNum']}")
self.update_timer(self) self.update_timer()
self.FissureNode.setText(f"{self.fissure_info['node']}") self.FissureNode.setText(f"{self.fissure_info['node']}")
self.FissureType.setText(f"{'Steel Path' if self.fissure_info['isHard'] else ('Storm' if self.fissure_info['isStorm'] else '')}") self.FissureType.setText(f"{'Steel Path' if self.fissure_info['isHard'] else ('Storm' if self.fissure_info['isStorm'] else '')}")
except: except:
pass pass
def udpdate_timer(self): def update_timer(self):
eta = datetime.strptime(self.fissure_info['expiry'], '%Y-%m-%dT%H:%M:%SZ') - datetime.now() eta = round(time.mktime(time.strptime(self.fissure_info['expiry'], '%Y-%m-%dT%H:%M:%S.%fZ')) - time.time() + utcoffset)
eta -= timedelta(microseconds=eta.microseconds) if eta >= 0:
self.FissureTimer.setText(f"{str(eta // 3600) + 'h' if eta // 3600 > 0 else ''} {(eta // 60) % 60}m {eta % 60}s")
self.FissureTimer.setText(f"{eta.seconds // 3600}h {(eta.seconds // 60) % 60}m {eta.seconds % 60}s") else:
self.FissureTimer.setText("Expired")
class Invasion(QtWidgets.QWidget): class Invasion(QtWidgets.QWidget):
@ -110,11 +114,12 @@ class Invasion(QtWidgets.QWidget):
def update_gui(self): def update_gui(self):
try: try:
faction_colors = {'Gineer': 'red', 'Corpus': 'blue', 'Infested': 'green'} faction_colors = {'Grineer': 'red', 'Corpus': 'blue', 'Infested': 'green'}
self.Reward1.setText(f"{self.invasion_info['attackerReward']['itemString']}") self.Reward1.setText(f"{self.invasion_info['attackerReward']['itemString']}")
self.Reward2.setText(f"{self.invasion_info['defenderReward']['itemString']}") self.Reward2.setText(f"{self.invasion_info['defenderReward']['itemString']}")
self.InvasionProgress.setStyleSheet(f'QProgressBar {{background-color:{faction_colors.get(self.invasion_info["defendingFaction"])};border-color:red; border:0px}}\nQProgressBar::chunk {{background-color:{faction_colors.get(self.invasion_info["attackingFaction"])};}}') self.InvasionProgress.setStyleSheet(f'QProgressBar {{background-color:{faction_colors.get(self.invasion_info["defendingFaction"])};border-color:red; border:0px}}\nQProgressBar::chunk {{background-color:{faction_colors.get(self.invasion_info["attackingFaction"])};}}')
except: self.update_progress()
except KeyError:
pass pass
def update_progress(self): def update_progress(self):
@ -164,9 +169,11 @@ class Alert(QtWidgets.QWidget):
pass pass
def update_timer(self): def update_timer(self):
eta = datetime.strptime(self.alert_info['expiry'], '%Y-%m-%dT%H:%M:%SZ') - datetime.now() eta = round(time.mktime(time.strptime(self.alert_info['expiry'], '%Y-%m-%dT%H:%M:%S.%fZ')) - time.time() + utcoffset)
eta -= deltatime(microseconds=eta.microseconds) if eta > 0:
self.AlertTimer.setText(f'{eta.days}d {eta.seconds // 3600}h {(eta.seconds // 60) % 60}m {eta.seconds % 60}s') self.AlertTimer.setText(f'{str(eta // 86400) + "d " if eta // 86400 > 0 else ""}{str((eta // 3600) % 24) + "h" if eta // 3600 > 0 else ""} {(eta // 60) % 60}m {eta % 60}s')
else:
self.AlertTimer.setText('Expired')
class BaroItem(QtWidgets.QWidget): class BaroItem(QtWidgets.QWidget):
def __init__(self, parent, item_info = {}, i = 0): def __init__(self, parent, item_info = {}, i = 0):
@ -239,9 +246,11 @@ class Event(QtWidgets.QWidget):
pass pass
def update_timer(self): def update_timer(self):
eta = datetime.strptime(self.event_info['expiry'], '%Y-%m-%dT%H:%M:%SZ') - datetime.now() eta = round(time.mktime(time.strptime(self.event_info['expiry'], '%Y-%m-%dT%H:%M:%S.%fZ')) - time.time() + utcoffset)
eta -= deltatime(microseconds=eta.microseconds) if eta > 0:
self.EventTimer.setText(f'{eta.days}d {eta.seconds // 3600}h {(eta.seconds // 60) % 60}m {eta.seconds % 60}s') self.EventTimer.setText(f'{str(eta // 86400) + "d " if eta // 86400 > 0 else ""}{(eta // 3600) % 24}h')
else:
self.EventTimer.setText('Expired')
class NewsBlurb(QtWidgets.QWidget): class NewsBlurb(QtWidgets.QWidget):
def __init__(self, parent, news_info = {}, i = 0): def __init__(self, parent, news_info = {}, i = 0):
@ -293,10 +302,9 @@ class NewsBlurb(QtWidgets.QWidget):
pass pass
def update_timer(self): def update_timer(self):
eta = datetime.strptime(self.news_info['expiry'], '%Y-%m-%dT%H:%M:%SZ') - datetime.now() eta = round(time.mktime(time.strptime(self.news_info['date'], '%Y-%m-%dT%H:%M:%S.%fZ')) - time.time() + utcoffset)
eta -= deltatime(microseconds=eta.microseconds) if abs(eta) // 86400 >= 1:
if abs(eta.days) >= 1: self.NewsBlurbRelTimer.setText(f'{"Starts in " if eta // 86400 > 0 else ""}{abs(eta) // 86400}d')
self.NewsBlurbRelTimer.setText(f'{"Starts in " if eta.days > 0 else ""}{abs(eta.days)}')
else: else:
self.NewsBlurbRelTimer.setText(f'{"Starts in " if eta.seconds > 0 else ""}{abs(eta.seconds) // 3600}h {(abs(eta.seconds) // 60) % 60}m') self.NewsBlurbRelTimer.setText(f'{"Starts in " if eta > 0 else ""}{(abs(eta) // 3600) % 24}h {(abs(eta) // 60) % 60}m')

View file

@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object): class Ui_MainWindow(object):
def setupUi(self, MainWindow): def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow") MainWindow.setObjectName("MainWindow")
MainWindow.resize(1136, 890) MainWindow.resize(1155, 877)
self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget") self.centralwidget.setObjectName("centralwidget")
self.verticalLayout_18 = QtWidgets.QVBoxLayout(self.centralwidget) self.verticalLayout_18 = QtWidgets.QVBoxLayout(self.centralwidget)
@ -71,7 +71,7 @@ class Ui_MainWindow(object):
self.gridLayout_2.setObjectName("gridLayout_2") self.gridLayout_2.setObjectName("gridLayout_2")
self.WeeklyResetTimeDayStr = QtWidgets.QLabel(self.WeeklyTimer) self.WeeklyResetTimeDayStr = QtWidgets.QLabel(self.WeeklyTimer)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(1) sizePolicy.setHorizontalStretch(2)
sizePolicy.setVerticalStretch(0) sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.WeeklyResetTimeDayStr.sizePolicy().hasHeightForWidth()) sizePolicy.setHeightForWidth(self.WeeklyResetTimeDayStr.sizePolicy().hasHeightForWidth())
self.WeeklyResetTimeDayStr.setSizePolicy(sizePolicy) self.WeeklyResetTimeDayStr.setSizePolicy(sizePolicy)
@ -85,7 +85,7 @@ class Ui_MainWindow(object):
self.gridLayout_2.addWidget(self.WeeklyResetTimeDayStr, 1, 0, 1, 1) self.gridLayout_2.addWidget(self.WeeklyResetTimeDayStr, 1, 0, 1, 1)
self.WeeklyResetTimeStr = QtWidgets.QLabel(self.WeeklyTimer) self.WeeklyResetTimeStr = QtWidgets.QLabel(self.WeeklyTimer)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(2) sizePolicy.setHorizontalStretch(3)
sizePolicy.setVerticalStretch(0) sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.WeeklyResetTimeStr.sizePolicy().hasHeightForWidth()) sizePolicy.setHeightForWidth(self.WeeklyResetTimeStr.sizePolicy().hasHeightForWidth())
self.WeeklyResetTimeStr.setSizePolicy(sizePolicy) self.WeeklyResetTimeStr.setSizePolicy(sizePolicy)
@ -151,7 +151,7 @@ class Ui_MainWindow(object):
self.scrollArea.setWidgetResizable(True) self.scrollArea.setWidgetResizable(True)
self.scrollArea.setObjectName("scrollArea") self.scrollArea.setObjectName("scrollArea")
self.scrollAreaWidgetContents = QtWidgets.QWidget() self.scrollAreaWidgetContents = QtWidgets.QWidget()
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 240, 457)) self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 244, 449))
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents) self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents)
self.verticalLayout_6.setObjectName("verticalLayout_6") self.verticalLayout_6.setObjectName("verticalLayout_6")
@ -186,7 +186,7 @@ class Ui_MainWindow(object):
self.scrollArea_2.setWidgetResizable(True) self.scrollArea_2.setWidgetResizable(True)
self.scrollArea_2.setObjectName("scrollArea_2") self.scrollArea_2.setObjectName("scrollArea_2")
self.scrollAreaWidgetContents_2 = QtWidgets.QWidget() self.scrollAreaWidgetContents_2 = QtWidgets.QWidget()
self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 239, 457)) self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 245, 449))
self.scrollAreaWidgetContents_2.setObjectName("scrollAreaWidgetContents_2") self.scrollAreaWidgetContents_2.setObjectName("scrollAreaWidgetContents_2")
self.verticalLayout_8 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_2) self.verticalLayout_8 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_2)
self.verticalLayout_8.setObjectName("verticalLayout_8") self.verticalLayout_8.setObjectName("verticalLayout_8")
@ -260,11 +260,11 @@ class Ui_MainWindow(object):
self.SortieM2.setWordWrap(True) self.SortieM2.setWordWrap(True)
self.SortieM2.setObjectName("SortieM2") self.SortieM2.setObjectName("SortieM2")
self.gridLayout_5.addWidget(self.SortieM2, 1, 0, 1, 1) self.gridLayout_5.addWidget(self.SortieM2, 1, 0, 1, 1)
self.SrotieM2Mod = QtWidgets.QLabel(self.widget) self.SortieM2Mod = QtWidgets.QLabel(self.widget)
self.SrotieM2Mod.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.SortieM2Mod.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.SrotieM2Mod.setWordWrap(True) self.SortieM2Mod.setWordWrap(True)
self.SrotieM2Mod.setObjectName("SrotieM2Mod") self.SortieM2Mod.setObjectName("SortieM2Mod")
self.gridLayout_5.addWidget(self.SrotieM2Mod, 1, 1, 1, 1) self.gridLayout_5.addWidget(self.SortieM2Mod, 1, 1, 1, 1)
self.SortieM3 = QtWidgets.QLabel(self.widget) self.SortieM3 = QtWidgets.QLabel(self.widget)
self.SortieM3.setObjectName("SortieM3") self.SortieM3.setObjectName("SortieM3")
self.gridLayout_5.addWidget(self.SortieM3, 2, 0, 1, 1) self.gridLayout_5.addWidget(self.SortieM3, 2, 0, 1, 1)
@ -287,15 +287,6 @@ class Ui_MainWindow(object):
self.ArchonHuntStr.setAlignment(QtCore.Qt.AlignCenter) self.ArchonHuntStr.setAlignment(QtCore.Qt.AlignCenter)
self.ArchonHuntStr.setObjectName("ArchonHuntStr") self.ArchonHuntStr.setObjectName("ArchonHuntStr")
self.verticalLayout_11.addWidget(self.ArchonHuntStr) self.verticalLayout_11.addWidget(self.ArchonHuntStr)
self.ArchonHuntTimer = QtWidgets.QLabel(self.ArchonHunt)
font = QtGui.QFont()
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.ArchonHuntTimer.setFont(font)
self.ArchonHuntTimer.setAlignment(QtCore.Qt.AlignCenter)
self.ArchonHuntTimer.setObjectName("ArchonHuntTimer")
self.verticalLayout_11.addWidget(self.ArchonHuntTimer)
self.widget_2 = QtWidgets.QWidget(self.ArchonHunt) self.widget_2 = QtWidgets.QWidget(self.ArchonHunt)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
@ -365,14 +356,14 @@ class Ui_MainWindow(object):
self.ArbitrationMT.setFont(font) self.ArbitrationMT.setFont(font)
self.ArbitrationMT.setObjectName("ArbitrationMT") self.ArbitrationMT.setObjectName("ArbitrationMT")
self.horizontalLayout_4.addWidget(self.ArbitrationMT) self.horizontalLayout_4.addWidget(self.ArbitrationMT)
self.ArbitrationTimer = QtWidgets.QLabel(self.ArbitrationData) self.ArbitrationFaction = QtWidgets.QLabel(self.ArbitrationData)
font = QtGui.QFont() font = QtGui.QFont()
font.setBold(True) font.setBold(True)
font.setWeight(75) font.setWeight(75)
self.ArbitrationTimer.setFont(font) self.ArbitrationFaction.setFont(font)
self.ArbitrationTimer.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.ArbitrationFaction.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.ArbitrationTimer.setObjectName("ArbitrationTimer") self.ArbitrationFaction.setObjectName("ArbitrationFaction")
self.horizontalLayout_4.addWidget(self.ArbitrationTimer) self.horizontalLayout_4.addWidget(self.ArbitrationFaction)
self.stackedWidget.addWidget(self.ArbitrationData) self.stackedWidget.addWidget(self.ArbitrationData)
self.verticalLayout_14.addWidget(self.stackedWidget) self.verticalLayout_14.addWidget(self.stackedWidget)
self.verticalLayout_13.addWidget(self.Arbitration) self.verticalLayout_13.addWidget(self.Arbitration)
@ -393,7 +384,7 @@ class Ui_MainWindow(object):
self.scrollArea_3.setWidgetResizable(True) self.scrollArea_3.setWidgetResizable(True)
self.scrollArea_3.setObjectName("scrollArea_3") self.scrollArea_3.setObjectName("scrollArea_3")
self.scrollAreaWidgetContents_3 = QtWidgets.QWidget() self.scrollAreaWidgetContents_3 = QtWidgets.QWidget()
self.scrollAreaWidgetContents_3.setGeometry(QtCore.QRect(0, 0, 221, 313)) self.scrollAreaWidgetContents_3.setGeometry(QtCore.QRect(0, 0, 226, 307))
self.scrollAreaWidgetContents_3.setObjectName("scrollAreaWidgetContents_3") self.scrollAreaWidgetContents_3.setObjectName("scrollAreaWidgetContents_3")
self.verticalLayout_16 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_3) self.verticalLayout_16 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_3)
self.verticalLayout_16.setObjectName("verticalLayout_16") self.verticalLayout_16.setObjectName("verticalLayout_16")
@ -655,10 +646,10 @@ class Ui_MainWindow(object):
self.Elite2Name.setAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignHCenter) self.Elite2Name.setAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignHCenter)
self.Elite2Name.setObjectName("Elite2Name") self.Elite2Name.setObjectName("Elite2Name")
self.verticalLayout_27.addWidget(self.Elite2Name) self.verticalLayout_27.addWidget(self.Elite2Name)
self.Elite3Desc = QtWidgets.QLabel(self.NightwaveElite2) self.Elite2Desc = QtWidgets.QLabel(self.NightwaveElite2)
self.Elite3Desc.setAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignTop) self.Elite2Desc.setAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignTop)
self.Elite3Desc.setObjectName("Elite3Desc") self.Elite2Desc.setObjectName("Elite2Desc")
self.verticalLayout_27.addWidget(self.Elite3Desc) self.verticalLayout_27.addWidget(self.Elite2Desc)
self.horizontalLayout_9.addWidget(self.NightwaveElite2) self.horizontalLayout_9.addWidget(self.NightwaveElite2)
self.gridLayout_8.addWidget(self.widget_4, 1, 0, 1, 1) self.gridLayout_8.addWidget(self.widget_4, 1, 0, 1, 1)
self.stackedWidget_3.addWidget(self.NightwaveData) self.stackedWidget_3.addWidget(self.NightwaveData)
@ -685,7 +676,7 @@ class Ui_MainWindow(object):
self.scrollArea_4.setWidgetResizable(True) self.scrollArea_4.setWidgetResizable(True)
self.scrollArea_4.setObjectName("scrollArea_4") self.scrollArea_4.setObjectName("scrollArea_4")
self.scrollAreaWidgetContents_4 = QtWidgets.QWidget() self.scrollAreaWidgetContents_4 = QtWidgets.QWidget()
self.scrollAreaWidgetContents_4.setGeometry(QtCore.QRect(0, 0, 518, 743)) self.scrollAreaWidgetContents_4.setGeometry(QtCore.QRect(0, 0, 528, 730))
self.scrollAreaWidgetContents_4.setObjectName("scrollAreaWidgetContents_4") self.scrollAreaWidgetContents_4.setObjectName("scrollAreaWidgetContents_4")
self.verticalLayout_31 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_4) self.verticalLayout_31 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_4)
self.verticalLayout_31.setObjectName("verticalLayout_31") self.verticalLayout_31.setObjectName("verticalLayout_31")
@ -720,7 +711,7 @@ class Ui_MainWindow(object):
self.scrollArea_5.setWidgetResizable(True) self.scrollArea_5.setWidgetResizable(True)
self.scrollArea_5.setObjectName("scrollArea_5") self.scrollArea_5.setObjectName("scrollArea_5")
self.scrollAreaWidgetContents_5 = QtWidgets.QWidget() self.scrollAreaWidgetContents_5 = QtWidgets.QWidget()
self.scrollAreaWidgetContents_5.setGeometry(QtCore.QRect(0, 0, 518, 743)) self.scrollAreaWidgetContents_5.setGeometry(QtCore.QRect(0, 0, 527, 730))
self.scrollAreaWidgetContents_5.setObjectName("scrollAreaWidgetContents_5") self.scrollAreaWidgetContents_5.setObjectName("scrollAreaWidgetContents_5")
self.verticalLayout_33 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_5) self.verticalLayout_33 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_5)
self.verticalLayout_33.setObjectName("verticalLayout_33") self.verticalLayout_33.setObjectName("verticalLayout_33")
@ -766,18 +757,17 @@ class Ui_MainWindow(object):
self.SortieM1.setText(_translate("MainWindow", "Exterminate")) self.SortieM1.setText(_translate("MainWindow", "Exterminate"))
self.SortieM1Mod.setText(_translate("MainWindow", "Energy Reduction")) self.SortieM1Mod.setText(_translate("MainWindow", "Energy Reduction"))
self.SortieM2.setText(_translate("MainWindow", "Sabotage")) self.SortieM2.setText(_translate("MainWindow", "Sabotage"))
self.SrotieM2Mod.setText(_translate("MainWindow", "Enemy Elemental Enhancements")) self.SortieM2Mod.setText(_translate("MainWindow", "Enemy Elemental Enhancements"))
self.SortieM3.setText(_translate("MainWindow", "Assasination")) self.SortieM3.setText(_translate("MainWindow", "Assasination"))
self.SortieM3Mod.setText(_translate("MainWindow", "Sniper Only")) self.SortieM3Mod.setText(_translate("MainWindow", "Sniper Only"))
self.ArchonHuntStr.setText(_translate("MainWindow", "Archon Hunt: Amar")) self.ArchonHuntStr.setText(_translate("MainWindow", "Archon Hunt: Amar"))
self.ArchonHuntTimer.setText(_translate("MainWindow", "9d 9h 19m 8s"))
self.ArchonHuntM1.setText(_translate("MainWindow", "Sabotage")) self.ArchonHuntM1.setText(_translate("MainWindow", "Sabotage"))
self.ArchonHuntM2.setText(_translate("MainWindow", "Survival")) self.ArchonHuntM2.setText(_translate("MainWindow", "Survival"))
self.ArchonHuntM3.setText(_translate("MainWindow", "Assasinate")) self.ArchonHuntM3.setText(_translate("MainWindow", "Assasinate"))
self.label_6.setText(_translate("MainWindow", "Arbitration")) self.label_6.setText(_translate("MainWindow", "Arbitration"))
self.label_8.setText(_translate("MainWindow", "Arbitration not available")) self.label_8.setText(_translate("MainWindow", "Arbitration not available"))
self.ArbitrationMT.setText(_translate("MainWindow", "Defection")) self.ArbitrationMT.setText(_translate("MainWindow", "Defection"))
self.ArbitrationTimer.setText(_translate("MainWindow", "55m 14s")) self.ArbitrationFaction.setText(_translate("MainWindow", "Infested"))
self.label_9.setText(_translate("MainWindow", "Alerts")) self.label_9.setText(_translate("MainWindow", "Alerts"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Timers), _translate("MainWindow", "Timers")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.Timers), _translate("MainWindow", "Timers"))
self.label_10.setText(_translate("MainWindow", "Baro not here")) self.label_10.setText(_translate("MainWindow", "Baro not here"))
@ -802,7 +792,7 @@ class Ui_MainWindow(object):
self.Elite1Name.setText(_translate("MainWindow", "Agent")) self.Elite1Name.setText(_translate("MainWindow", "Agent"))
self.Elite1Desc.setText(_translate("MainWindow", "Complete a Mission")) self.Elite1Desc.setText(_translate("MainWindow", "Complete a Mission"))
self.Elite2Name.setText(_translate("MainWindow", "Agent")) self.Elite2Name.setText(_translate("MainWindow", "Agent"))
self.Elite3Desc.setText(_translate("MainWindow", "Complete a Mission")) self.Elite2Desc.setText(_translate("MainWindow", "Complete a Mission"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Nightwave), _translate("MainWindow", "Nightwave")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.Nightwave), _translate("MainWindow", "Nightwave"))
self.label_12.setText(_translate("MainWindow", "Events")) self.label_12.setText(_translate("MainWindow", "Events"))
self.label_18.setText(_translate("MainWindow", "News")) self.label_18.setText(_translate("MainWindow", "News"))

View file

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1136</width> <width>1155</width>
<height>890</height> <height>877</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -91,7 +91,7 @@
<widget class="QLabel" name="WeeklyResetTimeDayStr"> <widget class="QLabel" name="WeeklyResetTimeDayStr">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>1</horstretch> <horstretch>2</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
@ -114,7 +114,7 @@
<widget class="QLabel" name="WeeklyResetTimeStr"> <widget class="QLabel" name="WeeklyResetTimeStr">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>2</horstretch> <horstretch>3</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
@ -223,8 +223,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>240</width> <width>244</width>
<height>457</height> <height>449</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_6"> <layout class="QVBoxLayout" name="verticalLayout_6">
@ -281,8 +281,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>239</width> <width>245</width>
<height>457</height> <height>449</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_8"> <layout class="QVBoxLayout" name="verticalLayout_8">
@ -398,7 +398,7 @@
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QLabel" name="SrotieM2Mod"> <widget class="QLabel" name="SortieM2Mod">
<property name="text"> <property name="text">
<string>Enemy Elemental Enhancements</string> <string>Enemy Elemental Enhancements</string>
</property> </property>
@ -452,23 +452,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QLabel" name="ArchonHuntTimer">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>9d 9h 19m 8s</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item> <item>
<widget class="QWidget" name="widget_2" native="true"> <widget class="QWidget" name="widget_2" native="true">
<property name="sizePolicy"> <property name="sizePolicy">
@ -578,7 +561,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLabel" name="ArbitrationTimer"> <widget class="QLabel" name="ArbitrationFaction">
<property name="font"> <property name="font">
<font> <font>
<weight>75</weight> <weight>75</weight>
@ -586,7 +569,7 @@
</font> </font>
</property> </property>
<property name="text"> <property name="text">
<string>55m 14s</string> <string>Infested</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
@ -629,8 +612,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>221</width> <width>226</width>
<height>313</height> <height>307</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_16"> <layout class="QVBoxLayout" name="verticalLayout_16">
@ -1070,7 +1053,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLabel" name="Elite3Desc"> <widget class="QLabel" name="Elite2Desc">
<property name="text"> <property name="text">
<string>Complete a Mission</string> <string>Complete a Mission</string>
</property> </property>
@ -1125,8 +1108,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>518</width> <width>528</width>
<height>743</height> <height>730</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_31"> <layout class="QVBoxLayout" name="verticalLayout_31">
@ -1183,8 +1166,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>518</width> <width>527</width>
<height>743</height> <height>730</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_33"> <layout class="QVBoxLayout" name="verticalLayout_33">

129
main.py
View file

@ -3,6 +3,7 @@ from api import WorldState
from extra_widgets import * from extra_widgets import *
from PyQt5.QtWidgets import QApplication, QMessageBox from PyQt5.QtWidgets import QApplication, QMessageBox
from PyQt5.QtCore import QTimer
import sys import sys
@ -14,34 +15,118 @@ class App(GUI):
while self.ws.ws == {}: while self.ws.ws == {}:
self.network_error() self.network_error()
sys.exit(1) sys.exit(1)
del self.Fissure, self.Invasion, self.Alert, self.BaroItem, self.Event, self.NewsBlurb [widget.setParent(None) for widget in [self.Fissure, self.Invasion, self.Alert, self.BaroItem, self.Event, self.NewsBlurb]]
self.timers_timer = QTimer(self)
self.timers_timer.timeout.connect(self.update_timers)
self.timers_timer.start(1000)
self.ws_update_timer = QTimer(self)
self.ws_update_timer.timeout.connect(self.update_world_state)
self.ws_update_timer.start(1000 * 60 * 5)
self.redraw_content() self.redraw_content()
def redraw_content(self):
self.redraw_content_dynamic()
self.redraw_content_static()
def redraw_content(self): def redraw_content_dynamic(self):
self.redraw_content_dynamic() self.Fissure_list = [Fissure(self.scrollAreaWidgetContents, fissure_info, fissure_i) for (fissure_i, fissure_info) in enumerate(self.ws.fissures)]
[self.verticalLayout_6.addWidget(i) for i in self.Fissure_list]
def redraw_content_dynamic(self): self.Invasion_list = [Invasion(self.scrollAreaWidgetContents_2, invasion_info, invasion_i) for (invasion_i, invasion_info) in enumerate(self.ws.invasions)]
self.Fissure_list = [Fissure(self.scrollAreaWidgetContents, fissure_info, fissure_i) for (fissure_i, fissure_info) in enumerate(self.ws.fissures)] [self.verticalLayout_8.addWidget(i) for i in self.Invasion_list]
[self.verticalLayout_6.addWidget(i) for i in self.Fissure_list]
self.Invasion_list = [Invasion(self.scrollAreaWidgetContents_2, invasion_info, invasion_i) for (invasion_i, invasion_info) in enumerate(self.ws.invasions)]
[self.verticalLayout_8.addWidget(i) for i in self.Invasion_list]
self.Alert_list = [Alert(self.scrollAreaWidgetContents_3, alerta_info, alert_i) for (alert_i, alert_info) in enumerate(self.ws.alerts)]
[self.verticalLayout_16.addWidget(i) for i in self.Alert_list]
if len(self.ws.baro_items) == 0:
self.stackedWidget_2.setCurrentIndex(0)
else:
self.stackedWidget_2.setCurrentIndex(1)
self.baro_items_list = [BaroItem(self.BaroData, item_info, item_i) for (item_i, item_info) in enumerate(self.ws.baro_items)]
[self.gridLayout_6.addWidget(i, index // 7, index % 7, 1, 1) for (index, i) in enumerate(self.baro_items_list)]
self.events_list = [Event(self.scrollAreaWidgetContents_4, event_info, event_i) for (event_i, event_info) in enumerate(self.ws.events)]
[self.verticalLayout_31.addWidget(i) for i in self.events_list]
self.newsblurb_list = [NewsBlurb(self.scrollAreaWidgetContents_5, newsblurb_info, newsblurb_i) for (newsblurb_i, newsblurb_info) in enumerate(self.ws.news)]
[self.verticalLayout_33.addWidget(i) for i in self.newsblurb_list]
def redraw_content_static(self): self.Alert_list = [Alert(self.scrollAreaWidgetContents_3, alert_info, alert_i) for (alert_i, alert_info) in enumerate(self.ws.alerts)]
pass [self.verticalLayout_16.addWidget(i) for i in self.Alert_list]
if len(self.ws.baro_items) == 0:
self.stackedWidget_2.setCurrentIndex(0)
else:
self.stackedWidget_2.setCurrentIndex(1)
self.baro_items_list = [BaroItem(self.BaroData, item_info, item_i) for (item_i, item_info) in enumerate(self.ws.baro_items)]
[self.gridLayout_6.addWidget(i, index // 7, index % 7, 1, 1) for (index, i) in enumerate(self.baro_items_list)]
self.events_list = [Event(self.scrollAreaWidgetContents_4, event_info, event_i) for (event_i, event_info) in enumerate(self.ws.events)]
[self.verticalLayout_31.addWidget(i) for i in self.events_list]
self.newsblurb_list = [NewsBlurb(self.scrollAreaWidgetContents_5, newsblurb_info, newsblurb_i) for (newsblurb_i, newsblurb_info) in enumerate(self.ws.news)]
[self.verticalLayout_33.addWidget(i) for i in self.newsblurb_list]
def redraw_content_static(self):
for i in range(1, 4):
getattr(self, 'SortieM'+str(i)).setText(self.ws.sorties['variants'][i - 1]['missionType'])
getattr(self, 'SortieM' + str(i) + 'Mod').setText(self.ws.sorties['variants'][i-1]['modifier'])
self.ArchonHuntStr.setText('Archon Hunt: ' + self.ws.archon_hunt['boss'])
for i in range(1, 4):
getattr(self, 'ArchonHuntM' + str(i)).setText(self.ws.archon_hunt['missions'][i - 1]['type'])
if not self.ws.arbitration:
self.stackedWidget.setCurrentIndex(0)
else:
self.stackedWidget.setCurrentIndex(1)
self.ArbitrationMT.setText(self.ws.arbitration['type'])
self.ArbitrationFaction.setText(self.ws.arbitration['enemy'])
daily_i = 1
weekly_i = 1
elite_i = 1
if self.ws.nightwave:
self.stackedWidget_3.setCurrentIndex(1)
for challenge in self.ws.nightwave['activeChallenges']:
if challenge.get('isDaily'):
challenge_type = 'Daily'
challenge_i = daily_i
daily_i += 1
elif challenge.get('isElite'):
challenge_type = 'Elite'
challenge_i = weekly_i
weekly_i += 1
else:
challenge_type = 'Weekly'
challenge_i = elite_i
elite_i += 1
getattr(self, challenge_type + str(challenge_i) + 'Name').setText(challenge['title'])
getattr(self, challenge_type + str(challenge_i) + 'Desc').setText(challenge['desc'])
else:
self.stackedWidget_3.setCurrentIndex(0)
def update_timers(self):
[i.update_timer() for i in self.Fissure_list]
[i.update_progress() for i in self.Invasion_list]
[i.update_timer() for i in self.Alert_list]
[i.update_timer() for i in self.events_list]
[i.update_timer() for i in self.newsblurb_list]
sortie_eta = round(time.mktime(time.strptime(self.ws.sorties['expiry'], '%Y-%m-%dT%H:%M:%S.%fZ')) - time.mktime(time.gmtime()))
if sortie_eta >= 0:
self.SortieResetTimer.setText(f'{str(sortie_eta // 3600) + "h " if sortie_eta // 3600 > 0 else ""}{(sortie_eta // 60) % 60}m {sortie_eta % 60}s')
else:
self.SortieResetTimer.setText('Expired')
weekly_eta = round(time.mktime(time.strptime('1970-1-1T00:00:00.000Z', '%Y-%m-%dT%H:%M:%S.%fZ')) - time.mktime(time.gmtime()) - 3 * 86400) % (7 * 86400)
self.WeeklyResetTimeDayStr.setText(str(weekly_eta // 86400) + 'd')
self.WeeklyResetTimeStr.setText(f'{(weekly_eta // 3600) % 24}h {(weekly_eta // 60) % 60}m {weekly_eta % 60}s')
bounty_eta = round(time.mktime(time.strptime('1970-1-1T00:00:00.000Z', '%Y-%m-%dT%H:%M:%S.%fZ')) - time.mktime(time.gmtime()) + 120) % (9000)
self.BountyTimeStr.setText(f'{bounty_eta // 3600}h {(bounty_eta // 60) % 60}m {bounty_eta % 60}s')
baro_eta = round(time.mktime(time.strptime('1970-1-1T00:00:00.000Z', '%Y-%m-%dT%H:%M:%S.%fZ')) - time.mktime(time.gmtime()) + (10*86400 + 13 * 3600)) % (14 * 86400)
if baro_eta >= 2 * 86400:
self.BaroStateStr.setText('Baro Arrives in:')
baro_eta = baro_eta - 2 * 86400
else:
self.BaroStateStr.setText('Baro Leaves in:')
self.BaroTimeStr.setText(f'{str(baro_eta // 86400) + "d " if baro_eta // 86400 > 0 else ""}{(baro_eta // 3600) % 24}h {(baro_eta // 60) % 60}m {baro_eta % 60}s')
def update_world_state(self):
if self.ws.get_ws():
self.redraw_content()
else:
self.network_error()
def network_error(self): def network_error(self):
msg = QMessageBox() msg = QMessageBox()