Google таблица
Поставщик гугл таблиц.
Загружает расписание из специальной гугл таблицы.
TODO: Хранилище расписания TODO: Хранилище обновлений
RAW_SC_PATH = Path('sp_data/sc.xlsx')
module-attribute
SC_PATH = Path('sp_data/sc.json')
module-attribute
SC_UPDATES_PATH = Path('sp_data/updates.json')
module-attribute
INDEX_PATH = Path('sp_data/index.json')
module-attribute
TIMETABLE_PATH = Path('sp_data/timetable.json')
module-attribute
LoadData = dict[str, Any] | list[Any]
module-attribute
LessonIndex = dict[str, list[dict[str, dict[str, list[int]]]]]
module-attribute
ClassIndex = dict[str, list[dict[str, dict[str, list[int]]]]]
module-attribute
SearchRes = list[list[list[str]]]
module-attribute
RawSchedule(hash: str, data: str)
dataclass
Сырое загруженное расписание из сети.
hash: str
instance-attribute
data: str
instance-attribute
ScheduleDict
Bases: TypedDict
Описывает что собой представляет словарь расписание.
hash: str
instance-attribute
last_parse: int
instance-attribute
lessons: dict[str, list[list[str]]]
instance-attribute
GoogleProvider(url: str = _MAIN_URL, sc_path: Path | str = SC_PATH, updates_path: Path | str = SC_UPDATES_PATH, index_path: Path | str = INDEX_PATH, timetable_path: Path | str = TIMETABLE_PATH)
Bases: Provider
Поставщик гугл таблиц.
url = url
instance-attribute
next_parse: int | None = None
instance-attribute
update_timetable() -> None
Обновляет расписание звонков.
timetable() -> Timetable
async
Расписание звонков.
update_schedule() -> None
async
Обновляет расписание звонков.
schedule() -> Schedule
async
Возвращает расписание уроков.
save_file(path: Path, data: _T) -> _T
Записывает данные в json файл.
Используется как обёртка для более удобной упаковки данных в json файлы. Автоматически создаёт файл, если он не найден.
.. deprecated:: 6.1 В скором времени проект откажется от использования json. Данные методы будут перемещены.
load_file(path: Path, data: _T | None = None) -> _T
Читает данные из json файла.
Используется как обёртка для более удобного чтения данных из json файла. Если переданы данные и файла не существует -> создаёт новый файл и записывает переданные данные. Если файла не существует и данные переданы или возникло исключение при чтении файла -> возвращаем пустой словарь.
.. deprecated:: 6.1 В скором времени проект откажется от использования json. Данные методы будут перемещены.
get_sc_updates(a: dict[str, list], b: dict[str, list]) -> list[dict[str, list]]
get_index(sp_lessons: dict[str, list[list[str]]], lessons_mode: bool | None = True) -> dict[str, list[dict]]
Преобразует словарь расписания уроков в индекс.
В данном случае индексом называется словарь, где ключом вместо класса является название урока или кабинета.
Они так же часто используются, как и само расписание. Например при подсчёте количества элементов или при поиске в расписании определённого урока или кабинета.
Описание индексов:
- Расписание:
[Класс][День][Уроки] - l_mode True:
[Урок][День][Кабинет][Класс][Номер урока] - l_mode False:
[Кабинет][День][Урок][Класс][Номер урока]
parse_lessons() -> dict[str, list[list[str]]]
Разбирает XLSX файл в словарь расписания.
Расписание в XLSX файле представлено подобным образом.
+--+-------+---------+ | | класс | | <- Шапка с классами в расписание +--+-------+---------+ | 1| урок | кабинет | <- Первый урок понедельника. | n| ... | ... | +--+-------+---------+ | 1| урок | кабинет | <- Первый урок вторника. | n| ... | ... | +--+-------+---------+
Задача этой функции преобразовать таблицу выше в словарь расписания уроков формата: