Парсер школьного расписания уроков.

Milinuri Nirvalen 8469cdd886 Fix: Get sc updates hace 2 años
sp3 e839339d01 Move: All sp v3.x file -> sp3/ hace 2 años
.gitignore 18233cd4d7 Fix: getting lessons from another class hace 2 años
README.md 9d5682992c Update: READNE.md to SP v4.x hace 2 años
changelog.md c33c5dd9f6 Update: Telegram bot to sp v4.3 hace 2 años
sp.py 8469cdd886 Fix: Get sc updates hace 2 años
telegram.py c33c5dd9f6 Update: Telegram bot to sp v4.3 hace 2 años

README.md

SParser

Парсер школьного расписания уроков.

Сколько времени уходит, чтобы просто посмотреть какие уроки на завтра? Для начала нужно найти ссылку на расписание, хорошо если она лежит в закладках. Потом ожидание пока расписание загрузится, поиск своего класса и наконец...

Это долго!


Цель проекта - быстрое и удобное получения расписания. А так же по постараться выжать максимум возможностей из этого расписания.

В репозитории вы найдёте как старую версию парсера (sp3/), которая более не будет обновляться, так и новую. Ветка sp v4.x отличается новым форматом хранения расписания и обновлений в нём. Как только будут переписаны все старые компоненты, sp3/ будет удалено.

Для преобразования и взаимодействия с расписание есть класс Schedule. Если вы хотите создать чат-бота, который бы отправлял расписание, для вас есть генератор сообщений SPMessages, который избавляет вас от лишней работы. Вам лишь остается прописать логику приёма и отправки сообщений. Для примера вы можете взглянуть на telegram бота (telegram.py).

Доступные обёртки:

  • Telegram бот
  • Консоль (sp v3.x)
  • Плагин Чио (ВК, sp v3.x)

О парсере

Главная задача парсера - преобразовать расписание из гугл таблиц. Кратко: Гугл таблицы -> CSV файл -> json файл.

Для повыешения скорости работы, все результаты рабоыт помещаются в sp_data/.

Sparser: Возможности парсера:

  • Сортировака расписания по урокам/кабинетам.
    • С уточнением по дням, классам и кабиентам/урокам.
  • Умное обновление расписания.
    • Наличие обновлений проверятся каждый час.
    • Обновляется только при различии хешей расписания.
    • Просчитываются хеши уроков, собираются индексы уроков/кабинетов.
  • Отслеживание изменений в всём расписании.
  • Поиск уроков/кабинетов в расписании.

SPMessages: Возможности генератора сообщений:

  • Хранение данных пользователей по их UID.
    • Установлен ли класс и класс по умолчанию.
    • Время последней проверки расписания.
  • Сохранение для убобства класса по умолчанию пользователя.
  • Отслеживание для каких дней изменилось расписание у пользователя.
  • Постраничный просмотр списка обновлений расписания.
    • требует оптимизации.
    • Можо уточнить для какого класса и для каких дней.
  • Расписание для любого дня (дней) и класса.
    • Номер урока, время начала, урок, кабинет.
  • Расписание на сегодня/заввтра для класса. (по умолчанию)
  • Подсчёт самых частых уроков/кабинетов,
    • От большего к меньшему.
    • Урок (кабинет), в каких кабинетах (уроках), с какой частотой.
    • Можно уточнить класс.
    • Отмечаются кабинеты (уроки), которые используются единожды
  • Поиск по уроку, с уточнение дня и класса.
    • В каком кабинете, номер урока, время начала
  • Просмотр расписания от имени кабинета, с уточнением дня и класса.

Не обязательно, что обёртки поддерживают все 100% SPMessages.

Telegram

Немного истории. Оригинал написал Артём Березин, за что ему спасибо! Новый бот полностью отличается от оригинала в лучшею сторону. Разобраться в боте не составит особого труда. Для вас есть удобная клавиатура, чтобы вы могли быстро получить расписние. Реализована большая всего функционал SPMessages, с некоторыми ограничениями. Пока нет возможности представить все возможные фильтры через клавиатуру... К примеру, просмотр списка обновлений одновременно по дням и классам. Тем не менее, бот отлично подходит для решения большинства ваших задач. Если же вам этого будет мало, дождитесь, когда будет готова консольная обёртка.

Console (sp v3.x)

Поддерживает все 110% возможностей парсера. Полезен для отладки и как пример использования. Собственный красивый генератор сообщений для консоли. Когда-нибудь будет переписан для sp v4.x.

Chio Plugin (sp v3.x)

Поддерживаются 100% возможностей пасрера. Реализация "ленивых" оповещений. Как установить и запустить Чио описано в её собственном репозитории. Довольно простые команды. Вряд-ли будет переписано под sp v4.x

Команды плагина:

  • /автопост: Настройка автопоста расписания
  • /класс [cl]: Изменить класс по умолчанию на cl
  • /уроки [args]: Получить расписание:
    • Если аргументы не указаны, получаем уроки на сегодня/завтра для класса по умолчанию
    • Если указать класс, получаем уроки для выбранного класса
    • Если указать дни недели, получаем уроки на эти дни
    • Если указать урок, будет произведён поиск по урокам
    • Комбинировать эти аргументы можно как вашей душе угодно
  • /расписание [args]: Расписание на неделю
    • Если ничего не указать, получаем расписание на неделю для класса по умолчанию
    • Если указать класс, получаем расписание на неделю для этого класса
    • Если указать "изменения", получаем изменения в расписании
  • /sparser: Информация о парсере
  • /clessons [cl]: Самыек частые уроки (всего/класс)