Skip to main content

Python client & CLI for the Akademiks URTK schedule API

Project description

akademiks-urtt

Python-клиент и CLI для получения расписания через Akademiks УРТК.

Работает для любой группы Уральского радиотехнического колледжа. Никаких зависимостей — только стандартная библиотека Python.


Для кого и зачем

Сайт akademiks.urtt.ru неудобен: нельзя экспортировать расписание, нет API-документации, интерфейс сделан под мышку. Этот инструмент решает проблему:

  • Студенты — получают расписание в Markdown, импортируют в Notion/Obsidian или в телефонный календарь через .ics
  • Разработчики — используют как библиотеку в своих ботах, автоматизациях, приложениях
  • Все группы УРТК — не только ИС-228, работает с любой группой колледжа

Установка

pip install akademiks-urtt

Или из исходников:

git clone https://github.com/cotafei/akademiks-urtt
cd akademiks-urtt
pip install -e .

Требования: Python 3.10+, интернет-соединение. Больше ничего.


CLI — быстрый старт

# Расписание на текущую неделю
akademiks --group is-228

# Конкретная неделя
akademiks --group is-228 --week 2026-04-14

# Сохранить в папку (Markdown + ICS для Apple/Google Calendar)
akademiks --group is-228 --out ./расписание --ics

# Вывод в JSON
akademiks --group is-228 --format json

# Список всех групп УРТК
akademiks --groups

Все параметры

Флаг По умолчанию Описание
--group, -g обязательный ID группы, например is-228
--week, -w текущая неделя Любая дата нужной недели (YYYY-MM-DD)
--format, -f markdown Формат вывода: markdown, ics, json
--out, -o вывод в терминал Папка для сохранения файлов
--ics выключен Также экспортировать .ics при формате markdown
--tz-offset 5 Сдвиг UTC в часах (по умолчанию Екатеринбург UTC+5)
--tz-name Asia/Yekaterinburg Имя часового пояса для заголовков ICS
--groups Показать все группы УРТК

Python API

from datetime import date
from akademiks import fetch_schedule, fetch_groups
from akademiks import format_markdown, format_ics, format_json
from akademiks import week_monday

# Получить расписание
monday = week_monday()                    # понедельник текущей недели
days = fetch_schedule(monday, "is-228")   # список дней

# Форматировать
md  = format_markdown(days, monday, "is-228")
ics = format_ics(days, "is-228")
js  = format_json(days, monday, "is-228")

# Все группы
groups = fetch_groups()
# [{"id": "is-228", "title": "ИС-228"}, ...]

Другой часовой пояс

from datetime import timezone, timedelta
from akademiks import fetch_schedule, format_markdown, week_monday

tz_moscow = timezone(timedelta(hours=3))
monday = week_monday()
days = fetch_schedule(monday, "it-101", tz=tz_moscow)
md = format_markdown(days, monday, "it-101", tz=tz_moscow)

Структура данных

fetch_schedule() возвращает список объектов-дней:

[
  {
    "start": "2026-04-13T19:00:00.000Z",
    "lessons": [
      {
        "id": "...",
        "index": 1,
        "title": "Математика",
        "start": "2026-04-14T03:30:00.000Z",
        "end":   "2026-04-14T05:00:00.000Z",
        "subgroup": null,
        "Teacher":   {"id": "...", "name": "Иванов И.И."},
        "Classroom": {"id": "...", "name": "305", "address": "ул. Студенческая 3"}
      }
    ]
  }
]

Автосинхронизация

Windows (Task Scheduler)

Сохрани examples/weekly_sync.py, затем в PowerShell (от администратора):

schtasks /Create /F /TN "AkademiksSync" `
  /TR "python C:\path\to\weekly_sync.py" `
  /SC WEEKLY /D MON /ST 07:00

Linux / macOS (cron)

0 7 * * 1 /usr/bin/python3 /path/to/weekly_sync.py

Заметки

  • Эндпоинты schedule.get и groups.get работают без авторизации — официальный публичный API.
  • По умолчанию часовой пояс UTC+5 (Екатеринбург). Для других городов используй --tz-offset.
  • Требуется Python 3.10+.

Лицензия

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

akademiks_urtt-1.0.0.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

akademiks_urtt-1.0.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file akademiks_urtt-1.0.0.tar.gz.

File metadata

  • Download URL: akademiks_urtt-1.0.0.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for akademiks_urtt-1.0.0.tar.gz
Algorithm Hash digest
SHA256 834ec6d60517f788e8d83db73c5ce51f58f9cc058ab61ed95cecdd0c3db27c82
MD5 13db40bfd3b9841ad9f75eec236d1d3b
BLAKE2b-256 1e63a9c69866b5be489a7c847b72b13c2f9787705c6a5ce403416133daf1a3c0

See more details on using hashes here.

File details

Details for the file akademiks_urtt-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: akademiks_urtt-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for akademiks_urtt-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0e8128cc6bc364745ec7133ee7936254e85c964a35634a6cd470bdbe8ea47305
MD5 d2cf1b070263fc16671356f4b7a012e2
BLAKE2b-256 72ae083e68ae0f975781fe5ea640e659588d697035d5c144fec442596d2913af

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page