Проект "Твой Дизайн" — это веб-сервис на базе Flask, который принимает данные через Webhooks и генерирует изображения на основе ответов пользователя.
Квизы: Скандинавский https://mrqz.me/66377f58f77e650026c3c7c0
Лофт https://mrqz.me/66a75a6e18108a0026d95d74
Минимализм https://mrqz.me/66a75aa95ac9fb00268cf1f8
Неоклассик https://mrqz.me/66a75abd17df430026dbf6a3
Современный https://mrqz.me/66a75ad49f61830026a976a9
your_design/
├── src/
│ ├── __init__.py
│ ├── app.py
│ ├── auth.py
│ ├── forms.py
│ ├── image_generator.py
│ └── models/
│ ├── __init__.py
│ ├── image.py
│ ├── quiz.py
│ └── user.py
├── tests/
│ ├── __init__.py
│ ├── test_app.py
│ └── test_image_generator.py
├── test_data.json
├── generated_images/
├── source_images/
│ ├── <quiz_id>/
│ │ ├── background/
│ │ │ └── 1.png # Пример фонового изображения
│ │ └── (другие папки с изображениями)
├── requirements.txt
└── venv/
-
Обновите пакеты и установите необходимые зависимости:
sudo apt update sudo apt install -y python3 python3-venv python3-pip git tmux
-
Создайте нового пользователя (например,
webuser
):sudo adduser webuser sudo usermod -aG sudo webuser
-
Выйдите и войдите под новым пользователем:
su - webuser
git clone https://github.com/sergeychernyakov/your_design.git
cd your_design
python3 -m venv venv
- На macOS и Linux:
source venv/bin/activate
pip install -r requirements.txt
-
Создайте новый сеанс
tmux
:tmux new -s flasksession
-
Внутри сеанса
tmux
запустите Flask приложение:cd ~/your_design source venv/bin/activate python src/app.py
-
Отсоединитесь от сеанса
tmux
, нажавCtrl + B
, затемD
.
-
В другом терминале подключитесь к серверу и создайте новый сеанс
tmux
:ssh [email protected] tmux new -s ngroksession
-
Внутри сеанса
tmux
запустите ngrok:ngrok http 5002
-
Отсоединитесь от сеанса
tmux
, нажавCtrl + B
, затемD
.
Взять активную ссылку можно здесь: https://dashboard.ngrok.com/cloud-edge/endpoints
Откройте браузер и перейдите по адресу, например, https://fb96-89-111-175-202.ngrok-free.app
. Вы должны увидеть JSON сообщение:
{
"status": "Ok"
}
- Заходим в редактирование квиза из личного кабинета.
- Заходим во вкладку «Интеграции» и выбираем Webhooks.
- Добавляем хук и вписываем URL, предоставленный ngrok, добавив путь
/webhook
, например,https://fb96-89-111-175-202.ngrok-free.app/webhook
.
- Запустите Flask приложение, как описано выше в разделе "Запуск Flask приложения".
- Откройте браузер и перейдите по адресу
http://127.0.0.1:5002/admin
. - Введите имя пользователя и пароль, указанные в функции
check_auth
(например,admin
иsecret
).
Чтобы подключиться к уже запущенному сеансу tmux
, выполните:
tmux attach -t flasksession # для Flask приложения
tmux attach -t ngroksession # для ngrok
Чтобы увидеть список активных сеансов tmux
, выполните:
tmux ls
Чтобы завершить сеанс tmux
, подключитесь к нему и завершите все запущенные процессы внутри сеанса, затем закройте сеанс:
tmux attach -t <session_name>
# внутри сеанса остановите процессы, затем закройте сеанс:
exit
python -m unittest discover tests
Для отладки класса ImageGenerator
используйте следующий шаг:
python -m src.image_generator
Это создаст изображение на основе данных в test_data.json
и сохранит его в папке generated_images
.
Перейдите в директорию с проектом и выполните команду для удаления всех файлов в папке generated_images
:
cd ~/your_design/generated_images
rm -f *
Подготовьте новые изображения и сохраните их в соответствующие папки в source_images
. Каждая категория изображений должна быть в отдельной папке, например cabinet.
Переместите новые изображения в нужные папки, заменяя старые:
cd ~/your_design/source_images/<категория>
# Замените существующие изображения новыми (1-4).png (jpg)
cp /path/to/new/image.png 1.png
После обновления изображений перезапустите Flask приложение:
-
Подключитесь к сеансу
tmux
для Flask приложения:tmux attach -t flasksession
-
Остановите текущее приложение (если оно запущено) и перезапустите его:
Ctrl + C # остановка приложения source venv/bin/activate python app.py
После генерации изображения вы можете скачать его, следуя этим шагам:
-
Получите URL изображения, который возвращается в ответе на Webhook запрос. Например, если URL
https://fb96-89-111-175-202.ngrok-free.app/images/<phone number>_1(2,3,4,5...).png
, например, https://fb96-89-111-175-202.ngrok-free.app/images/79111234567_1.png. -
Откройте этот URL в браузере. Изображение откроется в новом окне.
-
Нажмите правой кнопкой мыши на изображение и выберите "Сохранить изображение как..." для скачивания изображения на ваш локальный компьютер.
src/app.py — Основной файл приложения Flask. Обрабатывает Webhook запросы и генерирует изображения на основе данных.
src/image_generator.py — Класс для генерации изображений на основе данных пользователя. Включает режим отладки.
src/init.py — Пустой файл для обозначения пакета.
src/models/init.py — Инициализация базы данных SQLAlchemy и импорт моделей.
src/models/user.py — Модель для хранения информации о пользователях.
src/models/quiz.py — Модель для хранения информации о квизах.
src/models/image.py — Модель для хранения информации о сгенерированных изображениях.
src/auth.py — Middleware для HTTP Basic Authentication.
tests/test_app.py — Файл с тестами для приложения. Включает тест
ы для проверки обработки Webhook запросов и генерации изображений.
tests/test_image_generator.py — Файл с тестами для класса ImageGenerator
.
test_data.json — Файл с тестовыми данными для отладки класса ImageGenerator
.
generated_images/ — Папка для сохранения сгенерированных изображений.
source_images/ — Папка для хранения фоновых изображений и других изображений.