Giter VIP home page Giter VIP logo

maiq-parser-next's Introduction

TL;DR

Дело было вечером, делать было нечего.
Крайне неудобно было смотреть на расписание, как на скрине ниже (ни уведомлений, ни адаптации под мобильные экраны, ни стабильной работы самого сайта), в своей шараге, поэтому я сделал бота в телеграме, который умеет его парсить, сравнивать и присылать уведомление об изменениях.

На данный момент работает только в пределах 4 корпуса. Ссылка: t.me/maiq-timetable-bot

Таким образом, вот это:

Превратилось в это:


Сборка

Сложности возникают разве что с sqlx и его проверкой sql-запросов. Решается указанием DATABASE_URL или SQLX_OFFLINE 1.

Для maiq-bot необходимо указать TELOXIDE_TOKEN
Для maiq-db необходимо указать SQLITE_PATH. DATABASE_URL использует sqlx для проверки запросов и не обязателен для билда, но тогда надо указать SQLX_OFFLINE 1, а SQLITE_PATH - реальный файл .sqlite

docker

docker build -t maiq-bot .
docker run -v <PATH>:/var/sqlite.db -e RUST_LOG=info -e RUST_LOG_STYLE=always -e SQLITE_PATH=/var/sqlite.db -e TELOXIDE_TOKEN=<token> -dit maiq-bot

Архитектура

maiq-parser
Содержит в себе определения структур для таблицы расписания (Snapshot -> Group -> Lecture), парсер html-таблицы и парсером данных из этой таблицы.

maiq-db
Слой для работы с базой данных. Втупую сохраняет и выдаёт данные из sqlite.

maiq-bot
Использует оба вышеописанных крейта для работы, представляет собой бота в телеге, который может реагировать на команды/callback-query, сохранять группы пользователя и отправлять ему уведомления.
В директории maiq-bot/replies хранятся темплейты для ответов бота.

maiq-cli
Бесполезная штука, которая изначально планировалась, как cli-утилита для вывода расписания, но разве это кому-то надо?

В директории .changes находится человекочитаемый лог изменений, maiq-bot умеет его отображать.

Contributing

В необходимости этой секции я сомневаюсь ещё больше, чем в необходимости существования maiq-cli, но тем не менее приглашаю в issues и pull requests, все остальные вопросы - в телегу

Предыдущие версии

Изначально этот репозиторий был разделён на три - maiq-web-api, maiq-parser и maiq-bot. Быстро выяснилось, что такая архитектура неудобная, нерасширяемая, громоздкая, ещё и кушает больше ресурсов. Переписал и теперь это монорепо, а эти трое - в архиве на память.

maiq-parser-next's People

Contributors

pashokitsme avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.