Загружает и парсит расписание колледжа для бота
Расписание колледжа, в котором я учусь выкладывается на сайте в виде xls и xlsx файлов. Стабильное расписание в отдельном файле для каждой группы, а изменения этого расписания в одном файле для всех групп. Файл с заменами выкладывается раз в три дня.
Файлы замен и расписания формируются автоматически какой-то программой, которой они составляют расписание. Мой скрипт смотрит на список файлов, и если видит что то новое, то начинает обработку. Результат парсинга отправляется в MongoDB.
В идеале парсер должен работать следующим образом:
В аргументах указана дириктория с файлами?
| |
да нет
| |
| Загружем список файлов с заменами
| |
Открываем каждый файл, смотрим БД, если замены на эту дату
и совпадает ли хеш
| |
нет есть-----Отлично
|
Проходимся по названиям групп
|
Для каждой группы берем файл с расписанием
|
Найден единственный файл?
| |
да Найдена конструкция "с XX.XX.XX"?
| | |
| да нет
| | |
| Парсим её как дату Берем файл с самым
| и берем самый новый файл длинным названием
|
Файл распарсился успешно?
| |
да нет
| |-------------------
| | |
Парсим замены для парсим замены, |
группы и накладываем не накладываем |
на расписание нагруппу |
| | |
------------------------ |
| |
Замены распарсены? |
| | |
да нет |
| | |
Отлично ------------пишем ошибку-------
Для работы этого парсера необходимо node.js. Я все делал на 11 версии и не знаю, будет ли работать на более старых. Еще нужна база данных. MongoDB. Все работает на 3.2.12 и старше. Ниже не проверял.
Для продакшена все собирается в докер контейнер, в котором cron каждые 10 минут запускает этот парсер
npm install
npm run dev
Хотя можно лучше воспользоватсья дебагеров в VS Code