Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cfuv-schedule — расписание КФУ им. Вернадского

Telegram-бот + сайт на официальном JSON-API cfuv.ru/raspisanie/. Без скрапинга HTML, только Python-стандарт (картинкам нужен Pillow).

Запуск

cd kfu-raspisanie
python web.py            # сайт: http://localhost:8000
python -u bot.py         # бот (токен — в token.txt, файл в .gitignore)

Проверка парсера без токена:

python -c "import parser; g=parser.get_group('ПИ-б-о-241'); print(len(g['занятия']))"

Бот

Выбор факультет → направление → курс → группа кнопками, код (ПИ-б-о-241) или фамилию (Парменов) — просто текстом.

Команда Что делает
/my, /today, /tomorrow Пары: свои / сегодня / завтра
/week, /even, /odd Неделя / чётная / нечётная
/now Что идёт сейчас + следующая пара 🟢
/sess Сессия и экзамены 📝
/pic, /picweek День / неделя картинкой 🖼
/ics Календарь .ics для телефона 📅
/teacher ФАМИЛИЯ Расписание преподавателя 👤
/theme День ☀️ / ночь 🌙
/notify on|off Пары утром в 07:00 МСК ⏰
/changes on|off Что именно поменялось в расписании 🔄
/group КОД Сменить группу

Кнопки под расписанием: ◀ ▶ дни, 🖼/📝 текст-картинка, п/г 1/2 — подгруппа, 📝 сессия, 📅 ics, 🌙 тема, ⏰ рассылка. Группа, тема, подгруппа и подписки запоминаются.

Сайт (docs/)

Вкладки «Группа» / «Преподаватель». Фильтры: Сейчас 🟢, Сегодня, Неделя, чёт/нечёт, подгруппа. Липкая плашка «что идёт», кнопка 📅 (.ics собирается в браузере), 📤 «Поделиться», блок сессии, ночная тема с гербом-созвездием, днём — цельный герб. Диплинки: #g=ПИ-б-о-241, #theme=night, #side=both|left|right|center, ?api=direct|local.

На GitHub Pages (Settings → Pages → main + /docs) работает без бэкенда: запросы идут напрямую в API вуза (CORS открыт).

Файлы

parser.py          API + кэш (.cache/), поиск, форматирование, ICS
schedule_image.py  PNG дня/недели, темы day/night (Pillow)
bot.py             бот: меню, /now, рассылка 07:00 МСК, слежка за изменениями
web.py             локальный сервер + /api/* прокси (обход CORS)
docs/              фронт: index.html, style.css, app.js (+ 404.html)

Как устроено

  • GET /wp-json/cfu/v1/sched/index — дерево групп, звонки, недели. Кэш 6 ч.
  • GET .../sched/group?code= — занятия: день 1–6, пара 1–8, чётность, предмет, преподаватели, аудитория, подгруппа 0/1/2. Кэш 1 ч.
  • GET .../sched/find?by=teacher|room|subject&q= — поиск. Кэш 1 ч.
  • Всё время — московское (MSK). Рассылка и слежка живут в процессе бота: окно с bot.py должно быть запущено.

About

Расписание КФУ им. Вернадского: Telegram-бот и сайт на официальном JSON-API cfuv.ru — группы, преподаватели, подгруппы, сессия, ICS, ночная тема с гербом-созвездием

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages