An open API service indexing awesome lists of open source software.

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 модели по фотографиям и тегам, используя современные технологии машинного обучения. Поддерживает избранное, многоязычность и имеет удобный интерфейс в молодёжном стиле.

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 моделей** 🎨