add comments to all functions
This commit is contained in:
@@ -7,6 +7,13 @@ from DB import UseDB
|
||||
|
||||
|
||||
def fetch_timetable_data(group_id: int) -> BeautifulSoup | None:
|
||||
"""
|
||||
Функция для парсинга сайта по id группы пользователя
|
||||
|
||||
:param group_id: int - id группы пользователя
|
||||
|
||||
:return: BeautifulSoup | None - объект парсиного сайта или ничего если сайт не доступен
|
||||
"""
|
||||
base_url = "https://timetable.pallada.sibsau.ru/timetable/group/"
|
||||
response = requests.get(f"{base_url}{group_id}")
|
||||
if response.status_code == 200:
|
||||
@@ -16,6 +23,14 @@ def fetch_timetable_data(group_id: int) -> BeautifulSoup | None:
|
||||
|
||||
|
||||
def extract_week_data(soup: BeautifulSoup, shift: int) -> dict:
|
||||
"""
|
||||
Функция для получения нужной недели из сайта
|
||||
|
||||
:param soup: BeautifulSoup - объект парсиного сайта
|
||||
:param shift: int - на сколько дней вперёд пытается пользователь получить расписание
|
||||
|
||||
:return: dict - готовый текст дня
|
||||
"""
|
||||
current_week_number = int(datetime.datetime.utcnow().isocalendar()[1])
|
||||
current_day_of_week = datetime.datetime.now().weekday()
|
||||
if current_day_of_week + shift > 6:
|
||||
@@ -29,6 +44,13 @@ def extract_week_data(soup: BeautifulSoup, shift: int) -> dict:
|
||||
|
||||
|
||||
def parse_day_data(day_data: BeautifulSoup) -> dict:
|
||||
"""
|
||||
Функция для получения данных из объекта дня
|
||||
|
||||
:param day_data: BeautifulSoup - объект дня для получения данных
|
||||
|
||||
:return: dict - готовый текст дня
|
||||
"""
|
||||
schedule = {}
|
||||
lines = day_data.find_all('div', {"class": "line"})
|
||||
for line in lines:
|
||||
@@ -41,6 +63,13 @@ def parse_day_data(day_data: BeautifulSoup) -> dict:
|
||||
|
||||
|
||||
def format_lesson_details(lesson_text: str) -> str:
|
||||
"""
|
||||
Функция для удобного преобразования урока
|
||||
|
||||
:param lesson_text: str - текст урока
|
||||
|
||||
:return: str - готовый текст урока
|
||||
"""
|
||||
if "1 подгруппа" in lesson_text or "* подгруппа" in lesson_text:
|
||||
lesson_text = f"⭐ {lesson_text} ⭐"
|
||||
elif "2 подгруппа" in lesson_text:
|
||||
@@ -49,6 +78,14 @@ def format_lesson_details(lesson_text: str) -> str:
|
||||
|
||||
|
||||
def get_timetable_for_day(group_id: int, shift: int = 0) -> list[str]:
|
||||
"""
|
||||
Функция для получения всех предметов в виде строк
|
||||
|
||||
:param group_id: int - id группы пользователя
|
||||
:param shift: int - на сколько дней вперёд пытается пользователь получить расписание
|
||||
|
||||
:return: list[str] - готовый объект со строками уроков дня
|
||||
"""
|
||||
try:
|
||||
soup = fetch_timetable_data(group_id)
|
||||
if soup:
|
||||
@@ -65,6 +102,14 @@ def get_timetable_for_day(group_id: int, shift: int = 0) -> list[str]:
|
||||
|
||||
|
||||
def get_data_in_database(group_id: int, shift: int = 0) -> dict:
|
||||
"""
|
||||
Функция для получения данных из базы данных
|
||||
|
||||
:param group_id: int - id группы пользователя
|
||||
:param shift: int - на сколько дней вперёд пытается пользователь получить расписание
|
||||
|
||||
:return: dict - готовый текст дня
|
||||
"""
|
||||
current_week_number = int(datetime.datetime.utcnow().isocalendar()[1])
|
||||
current_day_of_week = datetime.datetime.now().weekday()
|
||||
if current_day_of_week + shift > 6:
|
||||
@@ -83,5 +128,9 @@ def get_data_in_database(group_id: int, shift: int = 0) -> dict:
|
||||
)
|
||||
response = {}
|
||||
for i in response_data:
|
||||
response[i["lesson_time"]] = [i["lesson_name"], i["lesson_author"], i["lesson_nav"]]
|
||||
response[i["lesson_time"]] = [
|
||||
i["lesson_name"],
|
||||
i["lesson_author"],
|
||||
i["lesson_nav"]
|
||||
]
|
||||
return response
|
||||
|
||||
Reference in New Issue
Block a user