summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitrii Morozov <snoopdesigns@gmail.com>2024-05-07 17:21:26 +0200
committerDmitrii Morozov <snoopdesigns@gmail.com>2024-05-07 17:21:26 +0200
commit4a7ebc16bc3a7ac6343aafe7d6938dd136e262aa (patch)
tree3d28bb3077385d537456d1f1bedec8eb216137f2
parentee3e87a6ec19878d56e8f386b20c58e4d9b211b3 (diff)
Refactoring
-rw-r--r--README.md2
-rw-r--r--formatter/__init__.py4
-rw-r--r--fortnite_status/__init__.py72
-rw-r--r--telegram_bot/commands.py2
4 files changed, 39 insertions, 41 deletions
diff --git a/README.md b/README.md
index f29c7ff..34a2090 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ pip install -r requirements.txt
Build and execute using python environment:
```
-TELEBOT_BOT_TOKEN=<bot token> python tgbot.py
+TELEBOT_BOT_TOKEN=<bot token> python main.py
```
On first run you wil be asked for a Fortnite API token, which can be obtained by accessing [this URL](https://www.epicgames.com/id/api/redirect?clientId=3446cd72694c4a4485d81b77adbb2141&responseType=code). Note: you need to be logged to Epic Games account in browser used to access token.
diff --git a/formatter/__init__.py b/formatter/__init__.py
index 9efc249..259a881 100644
--- a/formatter/__init__.py
+++ b/formatter/__init__.py
@@ -4,7 +4,7 @@ from app_types import *
# Status
def format_fortnite_status(fortnite_status):
- statuses = [__format_fortnite_service_status(service_status) for service_status in fortnite_status.serviceStatuses]
+ statuses = [__format_fortnite_service_status(service_status) for service_status in fortnite_status.service_statuses]
return formatting.format_text(
formatting.mbold("Fortnite status"),
"",
@@ -19,7 +19,7 @@ def __format_status(status):
def __format_fortnite_service_status(fortnite_service_status):
return formatting.format_text(
- formatting.mbold(fortnite_service_status.serviceName),
+ formatting.mbold(fortnite_service_status.service_name),
__format_status(fortnite_service_status.status),
separator=': ')
diff --git a/fortnite_status/__init__.py b/fortnite_status/__init__.py
index 244502b..b736ee5 100644
--- a/fortnite_status/__init__.py
+++ b/fortnite_status/__init__.py
@@ -18,79 +18,77 @@ class FortniteStatus:
"""
class Status:
- serviceStatuses = []
+ service_statuses = []
- def __init__(self, serviceStatuses):
- self.serviceStatuses = serviceStatuses
+ def __init__(self, service_statuses):
+ self.service_statuses = service_statuses
def __eq__(self, other):
if not isinstance(other, FortniteStatus.Status):
return NotImplemented
- return sorted(self.serviceStatuses) == sorted(other.serviceStatuses)
+ return sorted(self.service_statuses) == sorted(other.service_statuses)
def prettify(self):
- return 'Fortnite services status:\n' + '\n'.join([serviceStatus.prettify() for serviceStatus in self.serviceStatuses])
+ return 'Fortnite services status:\n' + '\n'.join([service_status.prettify() for service_status in self.service_statuses])
class ServiceStatus:
- serviceName = ''
+ service_name = ''
status = False
- def __init__(self, serviceName, status):
- self.serviceName = serviceName
+ def __init__(self, service_name, status):
+ self.service_name = service_name
self.status = status
def __lt__(self, other):
if not isinstance(other, FortniteStatus.ServiceStatus):
return NotImplemented
- return self.serviceName < other.serviceName
+ return self.service_name < other.service_name
def __eq__(self, other):
if not isinstance(other, FortniteStatus.ServiceStatus):
return NotImplemented
- return self.serviceName == other.serviceName and self.status == other.status
+ return self.service_name == other.service_name and self.status == other.status
def prettify(self):
- return f'{self.serviceName}, {self.status}'
+ return f'{self.service_name}, {self.status}'
- def __findFortniteStatusHtmlComponent(self, html):
+ def __find_fortnite_status_html_component(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'}):
+ inner_containers = component.findAll('div', {'class': 'component-inner-container'})
+ for inner_container in inner_containers:
+ for names in inner_container.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)
- serviceStatuses = []
- 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
+ def __parse_fortnite_status(self, html):
+ component = self.__find_fortnite_status_html_component(html)
+ service_statuses = []
+ child_container = component.find('div', {'class': 'child-components-container'})
+ for inner_container in child_container.findAll('div', {'class': 'component-inner-container'}):
+ name = inner_container.find('span', {'class': 'name'}).text.strip()
+ status_string = inner_container.find('span', {'class': 'component-status'}).text.strip()
+ if status_string == 'Operational':
+ status_code = True
else:
- statusCode = False
- serviceStatuses.append(self.ServiceStatus(name, statusCode))
- return self.Status(serviceStatuses)
+ status_code = False
+ service_statuses.append(self.ServiceStatus(name, status_code))
+ return self.Status(service_statuses)
- def getStatus(self):
- webContent = req.get("https://status.epicgames.com/")
- parsedHtml = BeautifulSoup(webContent.text, 'html5lib')
+ def get_status(self):
+ web_content = req.get("https://status.epicgames.com/")
+ parsed_html = BeautifulSoup(web_content.text, 'html5lib')
- return self.__parseFortniteStatus(parsedHtml)
+ return self.__parse_fortnite_status(parsed_html)
-
-
- def printStatus(self):
+ def print_status(self):
"""
Prints a current Fortnite services status in stdout.
Example:
"""
- print(self.getStatus().prettify())
+ print(self.get_status().prettify())
class FortniteStatusNotifier:
@@ -104,13 +102,13 @@ class FortniteStatusNotifier:
async def run(self):
# Initialize status
- self.__last_fortnite_status = self.__fortnite_status.getStatus()
+ self.__last_fortnite_status = self.__fortnite_status.get_status()
while True:
await self.__read_status()
await asyncio.sleep(__polling_interval__)
async def __read_status(self):
- service_status_tmp = self.__fortnite_status.getStatus()
+ service_status_tmp = self.__fortnite_status.get_status()
if service_status_tmp != self.__last_fortnite_status:
await self.__notify(service_status_tmp)
self.__last_fortnite_status = service_status_tmp
diff --git a/telegram_bot/commands.py b/telegram_bot/commands.py
index cafde03..cba5d5f 100644
--- a/telegram_bot/commands.py
+++ b/telegram_bot/commands.py
@@ -32,7 +32,7 @@ class GetStatusCommand(CommandHandler):
self.__fortnite_status = FortniteStatus()
async def handle(self, message: telebot.types.Message):
- await self.__telegram_bot.reply(message, format_fortnite_status(self.__fortnite_status.getStatus()))
+ await self.__telegram_bot.reply(message, format_fortnite_status(self.__fortnite_status.get_status()))
class GetFriendsCommand(CommandHandler):