/mesh2ical

Расписание уроков из МЭШ в iCal-файл

Primary LanguageC#

SchoolHelper: Полезные штуки, которых нет в МЭШ

Дополнительные функции для МЭШ:

1. Экспорт расписания уроков (-7/+14 дней) в отдельный файл (для каждого ребенка) в формате iCal в хранилище Яндекс.Облака.

  • Добавление эмодзи к названиям предметов;
  • Добавление домашнего задания в описание урока.

Любая уважающая себя программа-календарь умеет подключать "внешние календари" в iCal-формате (и автоматически их обновлять), таким образом вы можете иметь расписание уроков в любой используемой программе-календаре.

2. Напоминание о заказанном питании будет приходить вечером предыдущего дня примерно в 20ч.

Требуемые ресурсы

  • Постоянно включенный компьютер (или VPS), где будет запущена программа;
  • Доступ в МЭШ как родитель, с доступом к детям;
  • Аккаунт в Яндекс.Облаке для хранения файлов;

Установка

  • Установите .NET 8 SDK;
  • Клонируйте данный репозиторий;
  • Впишите настройки в appsettings.json:
    • Создайте бакет в Object Storage Яндекса, включите ему публичный доступ к файлам, имя бакета впишите в BucketName в группе StorageOptions;
    • Создайте Сервисный аккаунт в Яндексе, дайте ему роль storage.uploader на ранее созданный бакет, создайте ему Статический ключ доступа, впишите Идентификатор ключа и Секретный ключ в KeyId и KeySecret соответственно, тоже в группе StorageOptions;
    • Авторизуйтесь в МЭШ от имени родителя, откройте Developer Console браузера, перейдите на вкладку Application/Storage (зависит от браузера) и найдите в Cookie с именем aupd_token (это JWT со сроком годности несколько дней). Скопируйте её значение в параметр MeshToken.

Запуск

Запустите приложение командой dotnet run (из командной строки).

В течение 10 секунд (в первый раз возможно потребуется 30-40 секунд) вы должны увидеть сообщения об успешно сохранённых файлах, и эти же файлы появятся в бакете в консоли Яндекс.Облака.

Получите публичную ссылку на файл(ы) там же в консоли Яндекс.Облака, и используйте для подключения внешнего/подписного календаря в вашей основной программе-календаре.

Приложение оставьте запущенным: оно находится в режиме ожидания, будет просыпаться каждые 4 часа, продлевать токен доступа и обновлять файлы.