Files
aero/use_database.py

69 lines
2.5 KiB
Python

from bs4 import BeautifulSoup
from get import fetch_timetable_data, parse_day_data
from DB import UseDB
def update_database(group_id: int) -> 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:
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)