eljur/Eljur/journal.py
2024-01-27 21:30:58 +03:00

69 lines
3.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from Eljur.errors import _fullCheck, _checkInstance
class Journal:
def journal(self, subdomain, session, week=0):
"""
Получение страницы дневника с расписанием, оценками и другой информации.
:param subdomain: Поддомен eljur.ru // str
:param session: Активная сессия пользователя // Session
:param week: Нужная вам неделя (0 - нынешняя, -1 - предыдущая, 1 - следующая). По умолчанию 0 (нынешняя) // str
:return: Словарь с ошибкой или с расписанием пользователя: // dict
answer // dict
result // bool
"""
checkWeek = _checkInstance(week, int)
if "error" in checkWeek:
return checkWeek
del checkWeek
url = f"https://{subdomain}.eljur.ru/journal-app/week.{week * -1}"
soup = _fullCheck(subdomain, session, url)
if "error" in soup:
return soup
info = {}
for day in soup.find_all("div", class_="dnevnik-day"):
title = day.find("div", class_="dnevnik-day__title")
week, date = title.contents[0].strip().replace("\n", "").split(", ")
if day.find("div", class_="page-empty"):
info.update([(week, {"date": date, "isEmpty": True, "comment": "Нет уроков", "lessons": {}})])
continue
if day.find("div", class_="dnevnik-day__holiday"):
info.update([(week, {"date": date, "isEmpty": True, "comment": "Выходной", "lessons": {}})])
continue
lessons = day.find_all("div", class_="dnevnik-lesson")
lessonsDict = {}
if lessons:
for lesson in lessons:
lessonNumber = lesson.find("div", class_="dnevnik-lesson__number dnevnik-lesson__number--time")
if lessonNumber:
lessonNumber = lessonNumber.contents[0].replace("\n", "").strip()[:-1]
lessonTime = lesson.find("div", class_="dnevnik-lesson__time").contents[0].strip().replace("\n", "")
lessonName = lesson.find("span", class_="js-rt_licey-dnevnik-subject").contents[0]
lessonHomeTask = lesson.find("div", class_="dnevnik-lesson__task")
if lessonHomeTask:
lessonHomeTask = lessonHomeTask.contents[2].replace("\n", "").strip()
lessonMark = lesson.find("div", class_="dnevnik-mark")
if lessonMark:
lessonMark = lessonMark.contents[1].attrs["value"]
lessonsDict.update([(lessonNumber, {"time": lessonTime,
"name": lessonName,
"hometask": lessonHomeTask,
"mark": lessonMark})])
info.update([(week, {"date": date, "isEmpty": False, "comment": "Выходной", "lessons": lessonsDict})])
return info