81 lines
2.8 KiB
Python
81 lines
2.8 KiB
Python
from bs4 import BeautifulSoup
|
|
|
|
from DB import UseDB
|
|
from get import fetch_timetable_data, parse_day_data
|
|
|
|
|
|
def update_database(group_id: int) -> None:
|
|
"""
|
|
Функция обновление расписание в базе
|
|
|
|
:param group_id: int - id группы
|
|
|
|
:return: None
|
|
"""
|
|
day_mass = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday"]
|
|
db = UseDB("saved_data")
|
|
soup: BeautifulSoup = fetch_timetable_data(group_id)
|
|
for week_tab_id in ["week_1_tab", "week_2_tab"]:
|
|
week_data: BeautifulSoup = soup.find('div', {"id": week_tab_id})
|
|
for day_name in day_mass:
|
|
day_data = parse_day_data(week_data.find(
|
|
'div',
|
|
{
|
|
"class": day_name
|
|
}
|
|
))
|
|
for lesson_time, data in day_data.items():
|
|
lesson_name = data[0]
|
|
lesson_author = data[1]
|
|
lesson_nav = data[2]
|
|
if db.find_document({
|
|
"group_id": group_id,
|
|
"week_tab_id": week_tab_id,
|
|
"day_name": day_name,
|
|
"lesson_name": lesson_name,
|
|
"lesson_author": lesson_author,
|
|
"lesson_nav": lesson_nav,
|
|
"lesson_time": lesson_time
|
|
}):
|
|
db.update_document(
|
|
{
|
|
"group_id": group_id,
|
|
"week_tab_id": week_tab_id,
|
|
"day_name": day_name
|
|
},
|
|
{
|
|
"lesson_time": lesson_time,
|
|
"lesson_name": lesson_name,
|
|
"lesson_author": lesson_author,
|
|
"lesson_nav": lesson_nav
|
|
}
|
|
)
|
|
else:
|
|
db.insert_document(
|
|
{
|
|
"group_id": group_id,
|
|
"week_tab_id": week_tab_id,
|
|
"day_name": day_name,
|
|
"lesson_time": lesson_time,
|
|
"lesson_name": lesson_name,
|
|
"lesson_author": lesson_author,
|
|
"lesson_nav": lesson_nav
|
|
}
|
|
)
|
|
|
|
|
|
def detect_group_to_update() -> None:
|
|
"""
|
|
Функция для перебора всех group_id из базы пользователей
|
|
|
|
:return: None
|
|
"""
|
|
db = UseDB("users")
|
|
all_users = db.find_document({})
|
|
users_ids = []
|
|
for user in all_users:
|
|
if user["group_id"] not in users_ids:
|
|
users_ids.append(user["group_id"])
|
|
for user_id in users_ids:
|
|
update_database(user_id)
|