Sign inSign up

ivanik/magtu-parser

By ivanik

Updated almost 2 years ago

Image
0

1.2K

ivanik/magtu-parser repository overview

magtu-parser

Загружает и парсит расписание колледжа для бота

Build Status

Что это вообще

Расписание колледжа, в котором я учусь выкладывается на сайте в виде xls и xlsx файлов. Стабильное расписание в отдельном файле для каждой группы, а изменения этого расписания в одном файле для всех групп. Файл с заменами выкладывается раз в три дня.

Как оно работает

Файлы замен и расписания формируются автоматически какой то программой, которой они составляют расписание. Мой срипт смотрит на список файлов, и если видит что то новое, то начинает обработку. Результат парсинга отправляется в MongoDB.

В целом пайплайн

В идеале парсер должен работать следующим образом:

В аругментах указана дириктория с файлами?
     |                  |
     да                нет
     |                  |
     |            Загружем список файлов с заменами
     |                  |
Открываем каждый файл, смотрим БД, если замены на эту дату
и совпадает ли хеш
     |           |
    нет         есть-----Отлично
     |
Проходимся по названиям групп
     |
Для каждой группы берем файл с расписанием
     |
Найден единственный файл?
     |         |
     да      Найдена конструкция "с XX.XX.XX"?
     |         |                           |
     |         да                         нет
     |         |                           |
     |       Парсим её как дату          Берем файл с самым
     |       и берем самый новый файл    длинным названием
     |
     Файл распарсился успешно?
     |                      |
     да                    нет
     |                      |-------------------
     |                      |                   |
Парсим замены для          парсим замены,       |
группы и накалядываем      не накладываем       |
на расписание              нагруппу             |
    |                      |                    |
    ------------------------                    |
            |                                   |
     Замены распарсены?                         |
       |          |                             |
       да        нет                            |
       |          |                             |
    Отлично       ------------пишем ошибку-------

Как это запустить

Для работы этого парсера необходимо node.js. Я все делал на 11 версии и не знаю, будет ли работать на более старых. Еще нужна база данных. MongoDB. Все работает на 3.2.12 и старше. Ниже не проверял.

Для продакшена все собираеться в докер контейнер, в котором cron каждые 10 минут запускает этот парсер

Запуск для разработки
npm install
npm run dev

Зотя можно лучше воспользоватсья дебагеров в VS Code

Tag summary

Content type

Image

Digest

sha256:18e698043

Size

81.8 MB

Last updated

almost 2 years ago

docker pull ivanik/magtu-parser