https://github.com/marse11e/3dlookup
Бот позволяет пользователям искать 3D модели по фотографиям и тегам, используя современные технологии машинного обучения. Поддерживает избранное, многоязычность и имеет удобный интерфейс в молодёжном стиле.
https://github.com/marse11e/3dlookup
celery django django-rest-framework numpy pytelegrambotapi tokenizer torch
Last synced: 4 months ago
JSON representation
Бот позволяет пользователям искать 3D модели по фотографиям и тегам, используя современные технологии машинного обучения. Поддерживает избранное, многоязычность и имеет удобный интерфейс в молодёжном стиле.
- Host: GitHub
- URL: https://github.com/marse11e/3dlookup
- Owner: marse11e
- Created: 2025-10-03T07:28:38.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2025-10-03T07:34:29.000Z (4 months ago)
- Last Synced: 2025-10-03T09:24:33.938Z (4 months ago)
- Topics: celery, django, django-rest-framework, numpy, pytelegrambotapi, tokenizer, torch
- Language: Python
- Homepage: https://search3d.saas-automation.kz
- Size: 1.99 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🤖 3D Lookup Bot
**Умный Telegram-бот для поиска 3D моделей с помощью ИИ** 🎯
Бот позволяет пользователям искать 3D модели по фотографиям и тегам, используя современные технологии машинного обучения. Поддерживает избранное, многоязычность и имеет удобный интерфейс в молодёжном стиле.
## ✨ Основные возможности
### 🔍 Поиск 3D моделей
- **Поиск по фото** 📸 - загрузите изображение и найдите похожие 3D модели
- **Поиск по тегам** 🏷️ - ищите модели по ключевым словам (точное совпадение, без учёта регистра)
- **Умный ИИ** 🧠 - использует CLIP модель для семантического поиска
### ❤️ Избранное
- **Добавление в избранное** - сохраняйте понравившиеся модели
- **Просмотр избранного** - удобная навигация с пагинацией
- **Лимит 20 моделей** - разумное ограничение на количество избранных
### 🌍 Многоязычность
- **Русский язык** 🇷🇺
- **Английский язык** 🇺🇸
- **Автоматическое определение** языка пользователя
### 🎨 Современный интерфейс
- **Молодёжный стиль** - эмодзи, современные фразы, `
` форматирование
- **Интуитивная навигация** - понятные кнопки и меню
- **Inline-редактирование** - результаты обновляются без переотправки сообщений
## 🏗️ Архитектура проекта
### 📁 Структура
```
3Dlookup/
├── apps/main/ # Основное приложение
│ ├── models/ # Модели данных
│ │ ├── base.py # Базовая модель
│ │ ├── user.py # Пользователи и настройки
│ │ ├── content.py # 3D модели, теги, категории
│ │ └── favorites.py # Избранное
│ ├── bot/ # Telegram бот
│ │ ├── handlers/ # Обработчики сообщений
│ │ ├── keyboards.py # Клавиатуры
│ │ ├── messages.py # Тексты сообщений
│ │ └── main.py # Основной файл бота
│ ├── ai/ # ИИ функциональность
│ │ ├── feature_extraction.py # Извлечение эмбеддингов
│ │ ├── search_utils.py # Утилиты поиска
│ │ ├── pagination.py # Пагинация
│ │ └── security_validation.py # Валидация файлов
│ ├── admin/ # Django админка
│ ├── api/ # REST API
│ ├── tasks/ # Celery задачи
│ └── utils/ # Утилиты
├── core/ # Настройки Django
├── static/ # Статические файлы
├── media/ # Медиа файлы
└── requirements.txt # Зависимости
```
### 🔧 Технологический стек
**Backend:**
- **Django 5.2.6** - веб-фреймворк
- **PostgreSQL** - база данных
- **Redis** - кэширование и очереди
- **Celery** - асинхронные задачи
**AI/ML:**
- **PyTorch** - машинное обучение
- **Transformers** - Hugging Face модели
- **CLIP** - семантический поиск по изображениям
- **Pillow** - обработка изображений
**Telegram:**
- **pyTelegramBotAPI** - Telegram Bot API
- **Inline keyboards** - интерактивные кнопки
**Дополнительно:**
- **Django REST Framework** - API
- **Django Jazzmin** - красивая админка
- **Django Filter** - фильтрация данных
## 🚀 Установка и запуск
### 1. Клонирование репозитория
```bash
git clone git@github.com:marse11e/3Dlookup.git
cd 3Dlookup
```
### 2. Создание виртуального окружения
```bash
python -m venv venv
source venv/bin/activate # Linux/Mac
# или
venv\Scripts\activate # Windows
```
### 3. Установка зависимостей
```bash
pip install -r requirements.txt
```
### 4. Настройка конфигурации
Создайте файл `config.ini` в корне проекта:
```ini
[Telegram]
TELEGRAM_BOT_TOKEN = your_bot_token_here
[Database]
DB_NAME = 3dlookup
DB_USER = your_db_user
DB_PASSWORD = your_db_password
DB_HOST = localhost
DB_PORT = 5432
[Redis]
REDIS_URL = redis://localhost:6379/0
```
### 5. Настройка базы данных
```bash
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
```
### 6. Запуск сервисов
**Django сервер:**
```bash
python manage.py runserver
```
**Celery worker (в отдельном терминале):**
```bash
celery -A apps.main.tasks.celery_config worker --loglevel=info
```
**Telegram бот:**
```bash
python manage.py runbot
```
## 🤖 Использование бота
### Команды бота
- `/start` - запуск бота и приветствие
- `/help` - справка по использованию
### Основные функции
1. **Поиск по фото** 📸
- Выберите "🔍 Поиск по фото"
- Загрузите изображение
- Получите похожие 3D модели
2. **Поиск по тегам** 🏷️
- Выберите "🏷️ Поиск по тегам"
- Введите теги через запятую (например: "мебель, стол, дерево")
- Получите соответствующие модели
3. **Избранное** ❤️
- Добавляйте модели в избранное кнопкой "❤️ В избранное"
- Просматривайте через "❤️ Избранное"
- Удаляйте ненужные модели
4. **Настройки** ⚙️
- Смена языка (Русский/English)
- Возврат в главное меню
## 🔧 Администрирование
### Django Admin
Доступен по адресу: `http://localhost:8000/admin/`
**Основные разделы:**
- **Пользователи** - управление пользователями Telegram
- **3D модели** - загрузка и управление моделями
- **Теги** - управление тегами для поиска
- **Категории** - группировка моделей
- **Избранное** - просмотр избранных моделей
### Полезные команды
**Извлечение эмбеддингов для существующих моделей:**
```bash
python manage.py extract_embeddings
```
**Сброс дневных попыток (если используется):**
```bash
python manage.py reset_daily_attempts
```
**Проверка подписок:**
```bash
python manage.py check_subscriptions
```
## 📊 API
Проект включает REST API для интеграции с внешними системами:
- **Swagger UI**: `http://localhost:8000/swagger/`
- **ReDoc**: `http://localhost:8000/redoc/`
### Основные endpoints:
- `GET /api/models/` - список 3D моделей
- `GET /api/models/{id}/` - детали модели
- `POST /api/search/photo/` - поиск по фото
- `POST /api/search/tags/` - поиск по тегам
## 🛠️ Разработка
### Структура кода
**Модели** (`apps/main/models/`):
- `BaseModel` - базовая модель с общими полями
- `TgUser` - пользователи Telegram
- `Model3D` - 3D модели
- `UserFavorite` - избранные модели
**Обработчики бота** (`apps/main/bot/handlers/`):
- `search.py` - поиск по фото и тегам
- `favorites.py` - управление избранным
- `settings.py` - настройки пользователя
**AI утилиты** (`apps/main/ai/`):
- `feature_extraction.py` - извлечение эмбеддингов
- `search_utils.py` - поисковые алгоритмы
- `pagination.py` - пагинация результатов
### Добавление новых функций
1. **Новая модель**: добавьте в `apps/main/models/`
2. **Новый обработчик**: создайте в `apps/main/bot/handlers/`
3. **Новые сообщения**: добавьте в `apps/main/bot/messages.py`
4. **Новые клавиатуры**: обновите `apps/main/bot/keyboards.py`
## 🐛 Устранение неполадок
### Частые проблемы
**Ошибка подключения к базе данных:**
- Проверьте настройки в `config.ini`
- Убедитесь, что PostgreSQL запущен
**Ошибки Celery:**
- Проверьте, что Redis запущен
- Убедитесь, что worker запущен
**Проблемы с ботом:**
- Проверьте токен в `config.ini`
- Убедитесь, что бот запущен
**Ошибки с эмбеддингами:**
- Проверьте, что модель CLIP загружена
- Запустите `extract_embeddings` для существующих моделей
## 📝 Лицензия
Проект разработан для внутреннего использования.
## 👥 Авторы
- **Разработчик**: Marselle
- **Архитектура**: Модульная структура с разделением ответственности
- **Стиль**: Молодёжный, современный интерфейс
## 🔮 Планы развития
- Поддержка больше языков
- Расширенная фильтрация поиска
- Статистика использования
- Интеграция с внешними API
- Мобильное приложение
---
**Создано с ❤️ для поиска лучших 3D моделей** 🎨