Небольшая библиотека для парсинга расписания, домашних заданий и оценок из веб-интерфейса Eljur (https://eljur.ru).
В этом репозитории содержится код для быстрого извлечения данных из личного кабинета (расписание, дз, профиль, оценки) и набор юнит-тестов для локальной разработки.
Ключевые файлы
eljur/hw.py— функцияfind_hw(sub, day, month, year=None, session=None)возвращает домашние задания на указанный день.eljur/schedule.py— функцияtable(sub)возвращает расписание для недели.eljur/table.py— функцияtable(sub)возвращает оценки по предметам.eljur/profile.py— функцияget_profile(sub)возвращает основные поля профиля.eljur/utils/index.py— вспомогательная функцияfind_index(target_date)для расчёта смещения недель.
Тесты
- Тесты расположены в папке
tests/и покрывают парсинг HTML дляhw,profile,scheduleиtable. - Тесты не делают реальных сетевых запросов: они подменяют поведение
login()и/или передают фейковую сессию (DummySession) с заранее подготовленными HTML-ответами.
Зависимости
- Python 3.11+ (работает и на 3.12)
- Для разработки и тестов используются:
- pytest
- httpx
- beautifulsoup4
- lxml
В репозитории присутствует requirements.txt с перечислением зависимостей для разработки и тестов.
Установка (локально)
- Создайте виртуальное окружение (рекомендуется):
python3 -m venv .venv
source .venv/bin/activate- Установите зависимости из
requirements.txt:
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txtЗапуск тестов
- Чтобы прогнать все тесты локально:
python3 -m pytest -q- Чтобы запустить конкретный файл с тестами:
python3 -m pytest tests/test_schedule_table.py -qПримеры использования
Перед началом использования убедитесь, что создан файл config.py (или определены в окружении) с переменными, которые указаны в config.example.py
- Получить домашнее задание на конкретную дату (можно передать свою сессию для тестирования):
from eljur import find_hw
# fake_session — объект с методом get(url) возвращающим ответ с полями .status_code и .text
result = find_hw(sub, 6, 10, year=2025, session=fake_session)
print(result)- Получить расписание недели:
from eljur import schedule
s = schedule.table()
print(s)- При интеграционном использовании сайта Eljur соблюдайте правила использования и политику сайта.
CI / GitHub Actions
- В репозитории настроен workflow
./github/workflows/python-tests.yml, который запускается наpushиpull_requestв веткиmain/master. - Workflow выполняет тесты на матрице Python (напр., 3.11 и 3.12), устанавливает зависимости и запускает
pytest.
Лицензия
- Проект содержит файл
LICENSE(проверьте выбранную лицензию перед использованием в коммерческих проектах).
Контрибьюшн
- Pull requests и issue'ы приветствуются.
- Если добавляете новый функционал, пожалуйста, добавьте соответствующие тесты в
tests/.