# AI Builder Photo
AI Builder Photo - модуль для генерации скриншотов чата в стиле мессенджера. Идеально подходит для создания PNG изображений диалогов для презентаций и демонстраций.
## Установка
```bash
pip install Pillow
```
## Быстрый старт
```python
from ai_builder_photo import create_chat_screenshot
# Простой диалог
dialog = """-Привет
-Привет! Как дела?
-Хорошо, а у тебя?
-Тоже отлично!"""
# Создание скриншота
file_path = create_chat_screenshot(dialog, "chat.png")
print(f"Скриншот создан: {file_path}")
```
## Расширенное использование
```python
from ai_builder_photo import ChatScreenshotGenerator
# Кастомный генератор
generator = ChatScreenshotGenerator(
width=450,
background_color="#1C1C1E" # Темная тема
)
# Изменение цветов
generator.user_color = "#0A84FF"
generator.bot_color = "#2C2C2E"
generator.user_text_color = "#FFFFFF"
generator.bot_text_color = "#FFFFFF"
# Создание скриншота
file_path = generator.generate_from_dialog_string(dialog, "dark_chat.png")
```
## Программное создание сообщений
```python
messages = [
("Привет! Как дела?", True), # True = пользователь
("Привет! Все отлично!", False), # False = бот
("Отлично!", True),
]
file_path = generator.generate_chat_screenshot(messages, "chat.png")
```
## Формат диалога
Диалог передается в виде строки, где каждая строка начинается с `-`:
```
-Первое сообщение (пользователь)
-Второе сообщение (бот)
-Третье сообщение (пользователь)
-Четвертое сообщение (бот)
```
Четные позиции (0, 2, 4...) = сообщения пользователя (справа, синие)
Нечетные позиции (1, 3, 5...) = сообщения бота (слева, серые)
## API
### `create_chat_screenshot(dialog_string, save_path, width=400)`
Быстрая функция для создания скриншота.
**Параметры:**
- `dialog_string` - строка диалога
- `save_path` - путь для сохранения PNG файла
- `width` - ширина изображения
**Возвращает:** Путь к созданному файлу
### `ChatScreenshotGenerator`
Основной класс для генерации скриншотов.
**Методы:**
- `generate_from_dialog_string(dialog_string, save_path)` - из строки диалога
- `generate_chat_screenshot(messages, save_path)` - из списка сообщений
## Примеры
Запустите `python example.py` для демонстрации всех возможностей модуля.
## Особенности
- ✅ Автоматический перенос длинных сообщений
- ✅ Поддержка темной и светлой темы
- ✅ Простое сохранение в PNG файлы
- ✅ Кастомизация цветов и размеров
- ✅ Поддержка русского языка
- ✅ Стиль современных мессенджеров
## Лицензия
MIT License
Raw data
{
"_id": null,
"home_page": "https://github.com/yourusername/ai-builder-photo",
"name": "ai-builder-photo",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "ai, builder, photo, chat, screenshot, generator, messenger, image",
"author": "hokemka",
"author_email": "your.email@example.com",
"download_url": null,
"platform": null,
"description": "# AI Builder Photo\r\n\r\nAI Builder Photo - \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u043e\u0432 \u0447\u0430\u0442\u0430 \u0432 \u0441\u0442\u0438\u043b\u0435 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u0430. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f PNG \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0439 \u0438 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0439.\r\n\r\n## \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\r\n\r\n```bash\r\npip install Pillow\r\n```\r\n\r\n## \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442\r\n\r\n```python\r\nfrom ai_builder_photo import create_chat_screenshot\r\n\r\n# \u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0434\u0438\u0430\u043b\u043e\u0433\r\ndialog = \"\"\"-\u041f\u0440\u0438\u0432\u0435\u0442\r\n-\u041f\u0440\u0438\u0432\u0435\u0442! \u041a\u0430\u043a \u0434\u0435\u043b\u0430?\r\n-\u0425\u043e\u0440\u043e\u0448\u043e, \u0430 \u0443 \u0442\u0435\u0431\u044f?\r\n-\u0422\u043e\u0436\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u043e!\"\"\"\r\n\r\n# \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430\r\nfile_path = create_chat_screenshot(dialog, \"chat.png\")\r\nprint(f\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0441\u043e\u0437\u0434\u0430\u043d: {file_path}\")\r\n```\r\n\r\n## \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\r\n\r\n```python\r\nfrom ai_builder_photo import ChatScreenshotGenerator\r\n\r\n# \u041a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\r\ngenerator = ChatScreenshotGenerator(\r\n width=450,\r\n background_color=\"#1C1C1E\" # \u0422\u0435\u043c\u043d\u0430\u044f \u0442\u0435\u043c\u0430\r\n)\r\n\r\n# \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u043e\u0432\r\ngenerator.user_color = \"#0A84FF\"\r\ngenerator.bot_color = \"#2C2C2E\"\r\ngenerator.user_text_color = \"#FFFFFF\"\r\ngenerator.bot_text_color = \"#FFFFFF\"\r\n\r\n# \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430\r\nfile_path = generator.generate_from_dialog_string(dialog, \"dark_chat.png\")\r\n```\r\n\r\n## \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439\r\n\r\n```python\r\nmessages = [\r\n (\"\u041f\u0440\u0438\u0432\u0435\u0442! \u041a\u0430\u043a \u0434\u0435\u043b\u0430?\", True), # True = \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\r\n (\"\u041f\u0440\u0438\u0432\u0435\u0442! \u0412\u0441\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u043e!\", False), # False = \u0431\u043e\u0442\r\n (\"\u041e\u0442\u043b\u0438\u0447\u043d\u043e!\", True),\r\n]\r\n\r\nfile_path = generator.generate_chat_screenshot(messages, \"chat.png\")\r\n```\r\n\r\n## \u0424\u043e\u0440\u043c\u0430\u0442 \u0434\u0438\u0430\u043b\u043e\u0433\u0430\r\n\r\n\u0414\u0438\u0430\u043b\u043e\u0433 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 `-`:\r\n\r\n```\r\n-\u041f\u0435\u0440\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 (\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c)\r\n-\u0412\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 (\u0431\u043e\u0442)\r\n-\u0422\u0440\u0435\u0442\u044c\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 (\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c)\r\n-\u0427\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 (\u0431\u043e\u0442)\r\n```\r\n\r\n\u0427\u0435\u0442\u043d\u044b\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 (0, 2, 4...) = \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u0441\u043f\u0440\u0430\u0432\u0430, \u0441\u0438\u043d\u0438\u0435)\r\n\u041d\u0435\u0447\u0435\u0442\u043d\u044b\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 (1, 3, 5...) = \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0431\u043e\u0442\u0430 (\u0441\u043b\u0435\u0432\u0430, \u0441\u0435\u0440\u044b\u0435)\r\n\r\n## API\r\n\r\n### `create_chat_screenshot(dialog_string, save_path, width=400)`\r\n\r\n\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430.\r\n\r\n**\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:**\r\n- `dialog_string` - \u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u0438\u0430\u043b\u043e\u0433\u0430\r\n- `save_path` - \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f PNG \u0444\u0430\u0439\u043b\u0430\r\n- `width` - \u0448\u0438\u0440\u0438\u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\r\n\r\n**\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:** \u041f\u0443\u0442\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443\r\n\r\n### `ChatScreenshotGenerator`\r\n\r\n\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u043e\u0432.\r\n\r\n**\u041c\u0435\u0442\u043e\u0434\u044b:**\r\n- `generate_from_dialog_string(dialog_string, save_path)` - \u0438\u0437 \u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u0438\u0430\u043b\u043e\u0433\u0430\r\n- `generate_chat_screenshot(messages, save_path)` - \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439\r\n\r\n## \u041f\u0440\u0438\u043c\u0435\u0440\u044b\r\n\r\n\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 `python example.py` \u0434\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u044f.\r\n\r\n## \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438\r\n\r\n- \u2705 \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439\r\n- \u2705 \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u0435\u043c\u043d\u043e\u0439 \u0438 \u0441\u0432\u0435\u0442\u043b\u043e\u0439 \u0442\u0435\u043c\u044b \r\n- \u2705 \u041f\u0440\u043e\u0441\u0442\u043e\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432 PNG \u0444\u0430\u0439\u043b\u044b\r\n- \u2705 \u041a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0446\u0432\u0435\u0442\u043e\u0432 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432\r\n- \u2705 \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430\r\n- \u2705 \u0421\u0442\u0438\u043b\u044c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u043e\u0432\r\n\r\n## \u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f\r\n\r\nMIT License\r\n",
"bugtrack_url": null,
"license": null,
"summary": "AI Builder Photo - \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432 \u0432 \u0441\u0442\u0438\u043b\u0435 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u0430",
"version": "1.0.0",
"project_urls": {
"Bug Reports": "https://github.com/yourusername/ai-builder-photo/issues",
"Homepage": "https://github.com/yourusername/ai-builder-photo",
"Source": "https://github.com/yourusername/ai-builder-photo"
},
"split_keywords": [
"ai",
" builder",
" photo",
" chat",
" screenshot",
" generator",
" messenger",
" image"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "9a4a3762065369123cdecc05f462297910d779446a52560b02e95655998fc18a",
"md5": "420517b1dc0673c1d2c77404720e7048",
"sha256": "42a43c5ef3588e553ed10c6683de01c5a996e35868d898543d8c9272907972ad"
},
"downloads": -1,
"filename": "ai_builder_photo-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "420517b1dc0673c1d2c77404720e7048",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 5545,
"upload_time": "2025-09-06T20:21:43",
"upload_time_iso_8601": "2025-09-06T20:21:43.584216Z",
"url": "https://files.pythonhosted.org/packages/9a/4a/3762065369123cdecc05f462297910d779446a52560b02e95655998fc18a/ai_builder_photo-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-06 20:21:43",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "yourusername",
"github_project": "ai-builder-photo",
"github_not_found": true,
"lcname": "ai-builder-photo"
}