Загружает и парсит расписание колледжа для бота
Расписание колледжа, в котором я учусь выкладывается на сайте в виде xls и xlsx файлов. Стабильное расписание в отдельном файле для каждой группы, а изменения этого расписания в одном файле для всех групп. Файл с заменами выкладывается раз в три дня.
Файлы замен и расписания формируются автоматически какой то программой, которой они составляют расписание. Мой срипт смотрит на список файлов, и если видит что то новое, то начинает обработку. Результат парсинга отправляется в MongoDB.
В идеале парсер должен работать следующим образом:
В аругментах указана дириктория с файлами?
| |
да нет
| |
| Загружем список файлов с заменами
| |
Открываем каждый файл, смотрим БД, если замены на эту дату
и совпадает ли хеш
| |
нет есть-----Отлично
|
Проходимся по названиям групп
|
Для каждой группы берем файл с расписанием
|
Найден единственный файл?
| |
да Найдена конструкция "с XX.XX.XX"?
| | |
| да нет
| | |
| Парсим её как дату Берем файл с самым
| и берем самый новый файл длинным названием
|
Файл распарсился успешно?
| |
да нет
| |-------------------
| | |
Парсим замены для парсим замены, |
группы и накалядываем не накладываем |
на расписание нагруппу |
| | |
------------------------ |
| |
Замены распарсены? |
| | |
да нет |
| | |
Отлично ------------пишем ошибку-------
Для работы этого парсера необходимо node.js. Я все делал на 11 версии и не знаю, будет ли работать на более старых. Еще нужна база данных. MongoDB. Все работает на 3.2.12 и старше. Ниже не проверял.
Для продакшена все собираеться в докер контейнер, в котором cron каждые 10 минут запускает этот парсер
npm install
npm run dev
Зотя можно лучше воспользоватсья дебагеров в VS Code
Content type
Image
Digest
sha256:18e698043…
Size
81.8 MB
Last updated
almost 2 years ago
docker pull ivanik/magtu-parser