Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EljurAPI

Небольшая библиотека для парсинга расписания, домашних заданий и оценок из веб-интерфейса 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 с перечислением зависимостей для разработки и тестов.

Установка (локально)

  1. Создайте виртуальное окружение (рекомендуется):
python3 -m venv .venv
source .venv/bin/activate
  1. Установите зависимости из 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/.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages