.. _install:

Установка
=========

В данном разделе будет подробно описан процесс установки и развёртки
своей собственной платформы для распространения расписания.

Перед тем как мы приступим к установке, давайте разберёмся, что такое
**ядро** и что такое **обёртки**.
Хоть это и несколько устаревший термины для проекта, для данного
раздела они подойдут как нельзя лучше.

- **Ядро** представляет собой сердце проекта. Тут нахоидтся парсер,
  генератор сообщений, хранилище для работы пользователей и прочие
  внутренние компоненты, коотрые могут вам понадобиться при работе
  с расписанием.
- **Обёртка** это некоторая платформа, которая позволяет вам
  взаимодействовать с ядром. На данный момент доступны обёртки для
  Telegram и ВКонтакте ботов.

Итак, для начала мы установим **ядро**, а после уже **обёртки**.
Это будет не сложно.

.. note:: Установка ВК бота.

    Если вас интересует как установить бота для **ВКонтакте**, то можете
    сразу прыгать до раздела :ref:`Установка ВК бота <install-vk>`,
    поскольку его установка несколько отличается.


Подготовка к установке
----------------------

Перед тем как приступить к установке проекта, убедитесь что у вас
установлен ``python`` версии выше 3.8, а также ``git`` и ``poetry``.

Для установки всех необходимых зависимостей му будем использовать
`poetry <http://python-poetry.org>`_, чтобы не засорять вашу систему
лишними зависимостями, которые могут конфликтовать (и деляют это).

Советую потратитить некоторое время на базовое изучение работы с
``poetry``, думаю вам понравится этот инструмент.


Установка ядра
--------------

Теперь, когда всё необходимое для сборки проекта у вас готово, мы можем
приступить к кстановке ядра.

Для начала скопируем репозиторий проекта в удобную для нас директорию.

.. code-block:: bash

    git clone https://codeberg.org/Salormoon/sparser


Перейдя в только что загруженную директорию проекта ``sparser``,
воскользуемся ``poetry``, чтобы установить все необходимые зависимости
и настроить рабочее окружение python.

.. code-block:: bash

    poetry install

Вот и всё, ядро установлено, проверить что всё работает вы сможете
при помощи ``spcli.py``.

.. code-block:: bash

    poetry shell
    python spcli.py -v

.. hint:: Про spcli.

    Более подробно узнать как пользоваться ``spcli`` вы сможете
    в соответствующем разделе документации.

.. note:: А где же ``venv``?

    В ранних версиях документации было описание как использовать venv.
    Однако было принято решение откзааться от него, в пользу poetry.

    Если же вы намерены использовать venv, то проделйате следующие шаги:

    .. code-block:: bash

        # Создаём новое виртуальное окружение
        python -m venv venv

        # Активируем виртуальное окружение (linux)
        . venv/bin/activate

        # Устанавливаем ВСЕ необходимые зависимости
        pip install -r requirements.txt

        # Теперь вы можете воспользовать spcli
        # не забывайте каждый раз активировать окржение, как создаётё
        # новый терминал
        python spcli.py -v


Установка Telegram бота
-----------------------

Когда вы скачивали ядро, то вместе с ним скачали и Telegram бота.
Они поставляеются вместе, так что можете пропустить шаг клонирования
репозитория с проектом.

Как и в случае с ядром, нам будет необходимо установить зависимости
для работы бота:

.. code-block:: bash

    poetry install --with telegram

Когда все зависимости установлены, вы можете перейти к простой
первоначальной настройке бота.
Для этого необходимо будет скопировать файл ``.env.dist`` в ``.env``.
А полсе поместить ``TELEGRAM_TOKEN`` токен от вашего бота.

После всех нстроек, вы можете запустить бота, также через ``poetry``:

.. code-block:: python

    poetry run python -m sp_tg


.. _install-vk:

Установка бота ВКонтакте
------------------------

Можно считать этого бота в некотором роде особенным.
Для начала данная платформа получает обновления реже и чаще использует
ветки обновлений с долгосрочным обслуживанием.

Тем не менее, установка несколько схожа, как и прочими платформами.

Длян начала нам также как и с ядром, нужно будет загрузить репозиторий
в директорию, где вы планируете использовать бота.

.. code-blocK:: bash

    git clone https://codeberg.org/Salormoon/spvk

Теперь перейдём в директорию бота и утсановим все необходимые
зависимости.
``poetry`` за нас загрузит **ядро** из стабильной ветки обновлений.
Именно поэтому мы можем не беспокоиться об отдельной установке ядра.

.. code-block:: bash

    poetry install

Когда все необходимые завиисимости для бота установлены, мы можем
приступить к базовой настройке, она тут такая же, как и в Telegram.
Скопируйте файл ``.env.dist`` в ``.env`` и замените ``VK_TOKEN`` на
токен от группы, где собираетесь использовать бота.

Можно считать что всё готово и вы уже можете запускать бота:

.. code-block:: bash

    poetry run python -m spvk
