Реализовано через очередь задач Selery + Redis. Поскольку не на всех платформах Celery адекватно работает, пришлось использовать Docker контейнеры.
При запуске создается два контейнера один с redis сервером и один с копией проекта, в котором запускаются воркеры selery. С локального устройства в Redis пушатся таски на отправку страниц, обработкой занимаются контейнеризованные воркеры, которые по мере выполнения возвращают результат в redis, откуда результаты забирает основная программа.
Отправка происходит по средствам POST запроса на API телеграфа, предварительно загружая изображения через telegra.ph/upload.
Названия отправляемых файлов должны содержать цыфры, по которым будет определен порядок отправления. Если таковых не будет найдено, то файлы будут отправлены в порядке, в котором их считает os.listdir без сортировки.
- Создать файл cfg.env с полями:
SHORT_NAME="имя автора(скрытое)"
AUTHOR_NAME="публичное имя автора"
AUTHOR_URL="ссылка на автора(группу, канал)"
-
Закинуть папку со страницами в src
-
Устанавливаем зависимости:
pip install -r requirements.txt
- Запускаем Docker:
docker-compose up -d --no-deps --build
- Запускаем программу:
python main.py
При изменении в src нужно остановить программу, и повторить действия 4 и 5.
Поле Title будет заполнено исходя из названия папки, в которой лежат файлы, автор и ссылка на него берутся из cfg.env.