Парсер школьного расписания уроков.
|
%!s(int64=2) %!d(string=hai) anos | |
---|---|---|
_images | %!s(int64=2) %!d(string=hai) anos | |
sp | %!s(int64=2) %!d(string=hai) anos | |
sp3 | %!s(int64=2) %!d(string=hai) anos | |
.gitignore | %!s(int64=2) %!d(string=hai) anos | |
README.md | %!s(int64=2) %!d(string=hai) anos | |
changelog.md | %!s(int64=2) %!d(string=hai) anos | |
requirements.txt | %!s(int64=2) %!d(string=hai) anos | |
spm_console.py | %!s(int64=2) %!d(string=hai) anos | |
telegram.py | %!s(int64=2) %!d(string=hai) anos |
Парсер школьного расписания уроков.
Цель - быстрое и удобное получения расписания уроков. А так же постараться выжать максимум возможностей из расписания.
На примере Telegram бота с расписанием.
Загрузите этот репозиторий (напрмиер через git clone
).
Создайте виртуальное окружение и установите необходимые зависимости.
git clone https://notabug.org/milinuri/sparser
cd sparser
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python telegram.py
После первого запуска telegram.py
у вас появится файл sp_data/token.json
.
куда вы и должны будете указать токен от вашего Telegram бота.
После этого снова запустите бота и всё будет работать.
Помимо актуальной версии (sp/
) вы также найдёте sp v3.x (sp3/)
.
Данная версия считается устаревшей и не рекомендуется к использованию.
Тем не менее, в ней реализованы обёртки для консоли и Chio (ныне устаревшей).
Позднее все компоненты будут переписаны под актуальную версию sp.
На одном парсере всё не заканчивается.
В проекте представлен класс sp.parser.Schedule
для работы с расписанием.
Например для поиска уроков/кабинетов и просмотра списка изменений.
Также представлен генератор сообщений (sp.spm
).
В нём находятся различные функции и класс SPMessages
, для преобразования
результатов работы Schedule
в текстовые сообщения например для чат-ботов.
Если вы хотите создать своего чат-бота, который бы отправлял расписание,
лучше использовать готовый генератор сообщений.
Вам лишь остается прописать логику самого чат-бота.
Для примера использования генератора сообщений вы можете взглянуть на
telegram.py
или spm_console.py
.
Доступные обёртки:
Главная задача парсера - преобразовать расписание из гугл таблиц. Кратко: Гугл таблицы -> CSV -> json.
Для повышения скорости работы, все результаты работы хранятся в sp_data/
.
sp.counters
Счётчики для расписания:
sp.filters
Фильтры:
sp.parser
Парсер:
l_index
, c_index
)
CSV -> Dict
)sp_data/
.sp.spm
(Генератор сообщений):
Обёртки не всегда поддерживают все 100% sp.spm
!
Оригинал написал Артём Березин, за что ему спасибо.
Новый бот полностью отличается от оригинала в лучшею сторону.
Разобраться в боте не составит особого труда.
Для вас есть удобная клавиатура, чтобы вы могли быстро получить расписние.
Реализована большая часть SPMessages
(90%), с некоторыми ограничениями.
Некоторые ограничения:
Пока нет возможности полноценно представить фильтры через клавиатуру. Это отражается на списке изменений и счётчиках. Но это ограничение не столь критично для большинства пользователей.
Ограничение длинны сообещний. Приходится соблюдать баланс между информативностью и читаемостью. Порой это не всегда получается что сказывается на удобсте использования.
Тем не менее, бот отлично подходит для решения большинства ваших задач.
Если вам нужны все 100% генератора сообщений, то обратитесь к консоли.
spm_console для sp v5.0:
Поддерживает все 100% генератора сообщений. Полезен для отладки и как пример использования генератора сообщений.
Для sp v3.x:
Поддерживает все 110% возможностей sp v3.x
.
Собственный красивый генератор сообщений, ориентированный под консоль.
Когда-нибудь будет переписан под новую версию.
Поддерживаются 100% возможностей пасрера v3.x
.
Реализация "ленивых" оповещений.
В установленное время (с опозданием...) прилетает расписание.
Как установить и запустить Чио описано в её собственном репозитории.
Довольно простые команды.
Вряд-ли будет переписано под новую версию.
Чио более не обновляется.
Команды плагина:
/автопост [выкл/ЧАС]
: Настройка автопоста расписания/класс [cl]
: Изменить класс по умолчанию на cl
/уроки [args]
: Получить расписание:
/расписание [args]
: Расписание на неделю
/sparser
: Информация о парсере/clessons [cl]
: Самыек частые уроки (всего/класс)/ccabinets [cl]
: Самые частые кабинеты (всего/класс)