From 520cccb1e554e47f80cd62c94bc2da8a057326fa Mon Sep 17 00:00:00 2001 From: Dmitrii Morozov Date: Thu, 21 Mar 2024 19:03:39 +0100 Subject: Rename --- FortniteStatus.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ fortnite-status.py | 68 ------------------------------------------------------ 2 files changed, 68 insertions(+), 68 deletions(-) create mode 100644 FortniteStatus.py delete mode 100644 fortnite-status.py diff --git a/FortniteStatus.py b/FortniteStatus.py new file mode 100644 index 0000000..cd37fec --- /dev/null +++ b/FortniteStatus.py @@ -0,0 +1,68 @@ +# Simple utility class which provides an access to Fortnite service status report. +# Usage: ForniteStatus().getStatus() + +import requests as req +import html5lib +from bs4 import BeautifulSoup + +class FortniteStatus: + """ + Instantiate a FortniteStatus class. + """ + + class Status: + serviceStatuses = [] + + def prettify(self): + return 'Fortnite services status:\n' + '\n'.join([serviceStatus.prettify() for serviceStatus in self.serviceStatuses]) + + class ServiceStatus: + serviceName = '' + status = False + + def __init__(self, serviceName, status): + self.serviceName = serviceName + self.status = status + + def prettify(self): + return f'{self.serviceName}, {self.status}' + + def __findFortniteStatusHtmlComponent(self, html): + for component in html.findAll('div', {'class': 'component-container'}): + innerContainers = component.findAll('div', {'class': 'component-inner-container'}) + for innerContainer in innerContainers: + for names in innerContainer.findAll('span', {'class': 'name'}): + for name in names.findAll('span'): + if 'class' not in name.attrs and 'Fortnite' in name.text: + return component + + def __parseFortniteStatus(self, html): + component = self.__findFortniteStatusHtmlComponent(html) + status = self.Status() + childContainer = component.find('div', {'class': 'child-components-container'}) + for innerContainer in childContainer.findAll('div', {'class': 'component-inner-container'}): + name = innerContainer.find('span', {'class': 'name'}).text.strip() + statusString = innerContainer.find('span', {'class': 'component-status'}).text.strip() + if statusString == 'Operational': + statusCode = True + else: + statusCode = False + status.serviceStatuses.append(self.ServiceStatus(name, statusCode)) + + return status + + def getStatus(self): + webContent = req.get("https://status.epicgames.com/") + parsedHtml = BeautifulSoup(webContent.text, 'html5lib') + + return self.__parseFortniteStatus(parsedHtml) + + + + def printStatus(self): + """ + Prints a current Fortnite services status in stdout. + Example: + + """ + print(self.generateFortniteStatusReport()) \ No newline at end of file diff --git a/fortnite-status.py b/fortnite-status.py deleted file mode 100644 index cd37fec..0000000 --- a/fortnite-status.py +++ /dev/null @@ -1,68 +0,0 @@ -# Simple utility class which provides an access to Fortnite service status report. -# Usage: ForniteStatus().getStatus() - -import requests as req -import html5lib -from bs4 import BeautifulSoup - -class FortniteStatus: - """ - Instantiate a FortniteStatus class. - """ - - class Status: - serviceStatuses = [] - - def prettify(self): - return 'Fortnite services status:\n' + '\n'.join([serviceStatus.prettify() for serviceStatus in self.serviceStatuses]) - - class ServiceStatus: - serviceName = '' - status = False - - def __init__(self, serviceName, status): - self.serviceName = serviceName - self.status = status - - def prettify(self): - return f'{self.serviceName}, {self.status}' - - def __findFortniteStatusHtmlComponent(self, html): - for component in html.findAll('div', {'class': 'component-container'}): - innerContainers = component.findAll('div', {'class': 'component-inner-container'}) - for innerContainer in innerContainers: - for names in innerContainer.findAll('span', {'class': 'name'}): - for name in names.findAll('span'): - if 'class' not in name.attrs and 'Fortnite' in name.text: - return component - - def __parseFortniteStatus(self, html): - component = self.__findFortniteStatusHtmlComponent(html) - status = self.Status() - childContainer = component.find('div', {'class': 'child-components-container'}) - for innerContainer in childContainer.findAll('div', {'class': 'component-inner-container'}): - name = innerContainer.find('span', {'class': 'name'}).text.strip() - statusString = innerContainer.find('span', {'class': 'component-status'}).text.strip() - if statusString == 'Operational': - statusCode = True - else: - statusCode = False - status.serviceStatuses.append(self.ServiceStatus(name, statusCode)) - - return status - - def getStatus(self): - webContent = req.get("https://status.epicgames.com/") - parsedHtml = BeautifulSoup(webContent.text, 'html5lib') - - return self.__parseFortniteStatus(parsedHtml) - - - - def printStatus(self): - """ - Prints a current Fortnite services status in stdout. - Example: - - """ - print(self.generateFortniteStatusReport()) \ No newline at end of file -- cgit v1.2.3