Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

OLX Deal Finder

Веб-приложение: парсит объявления OLX по заданным запросам, сравнивает цену со средней по похожим объявлениям, даёт AI-вердикт по каждому лоту (стоит ли брать) и раз в сутки формирует таблицу "Топ дня" с лучшими предложениями.

Что нужно установить заранее

🔍 OLX Deal Finder

Python FastAPI React License

Полноценный веб-сервис для поиска выгодных предложений на OLX. Парсит объявления по заданным запросам, сравнивает цену со средней по рынку, даёт AI-вердикт по каждому лоту (брать / подождать / пропустить) и раз в сутки автоматически формирует таблицу "Топ дня" с лучшими предложениями.

Полностью автоматический пайплайн: парсинг → AI-анализ → живая лента на сайте, без единого ручного действия после запуска.

Стек

  • Backend: FastAPI, SQLAlchemy, SQLite, APScheduler
  • Frontend: React (Vite), React Router
  • AI: Groq API (Llama 3.1)
  • Парсинг: BeautifulSoup4, Requests

Шаг 1. Получить бесплатный AI-ключ (Groq)

  1. Зайди на https://console.groq.com
  2. Зарегистрируйся (email или через Google) — бесплатно, карта не нужна
  3. Слева найди раздел API KeysCreate API Key
  4. Скопируй ключ — он понадобится на шаге 3

Шаг 2. Настроить и запустить backend

cd backend
python -m venv venv

# Активация виртуального окружения:
# Windows:
venv\Scripts\activate
# macOS / Linux:
source venv/bin/activate

pip install -r requirements.txt

Шаг 3. Настроить переменные окружения

# Windows: copy .env.example .env
# macOS/Linux:
cp .env.example .env

Открой файл .env и заполни:

  • GROQ_API_KEY — ключ, полученный на шаге 1
  • SEARCH_QUERIES — что искать на OLX, через запятую (например: iphone 13,playstation 5)

Шаг 4. Запустить backend

uvicorn app.main:app --reload --port 8000

Если всё ок, увидишь в терминале что сервер поднялся на http://localhost:8000. Проверить можно, открыв в браузере: http://localhost:8000/docs — там интерактивная документация API (Swagger), где можно вручную дёрнуть любой эндпоинт.

Не закрывай этот терминал — backend должен работать постоянно, пока пользуешься сайтом.


Шаг 5. Настроить и запустить frontend

Открой новый терминал (backend должен продолжать работать в старом):

cd frontend
npm install
npm run dev

Через пару секунд появится ссылка вида http://localhost:5173 — открой её в браузере.


Шаг 6. Проверить, что всё работает

  1. На сайте открой вкладку "Объявления"
  2. В поле "Запустить парсинг вручную" введи запрос (например iphone 13) и нажми кнопку — это заставит бэкенд сразу пойти спарсить OLX, не дожидаясь таймера
  3. Через несколько секунд обнови страницу (или нажми "Применить") — должны появиться карточки объявлений с AI-вердиктом
  4. Вкладка "Топ дня" заполнится автоматически в полночь — либо вызови вручную:
    curl -X POST http://localhost:8000/daily-top/generate-now

Как это устроено (для себя / для собеседования с заказчиком)

  • backend/app/scraper.py — тянет HTML со страницы поиска OLX, вытаскивает карточки объявлений
  • backend/app/ai_verdict.py — каждое новое объявление отправляется в Groq (бесплатная LLM), получаем текстовую оценку + короткую рекомендацию (buy/wait/skip)
  • backend/app/scheduler.py — фоновые задачи: парсинг по таймеру + сбор топ-10 дня в полночь
  • backend/app/main.py — REST API (FastAPI), который отдаёт данные фронтенду
  • frontend/ — React-приложение, два экрана: лента объявлений и топ дня

Частые проблемы

Парсер ничего не находит. OLX периодически меняет вёрстку сайта. Открой backend/app/scraper.py, найди константы SELECTOR_* в начале файла — их может понадобиться обновить под актуальную структуру HTML (смотри через DevTools в браузере).

AI-вердикт не появляется / пишет "AI не настроен". Проверь, что GROQ_API_KEY в .env заполнен и что backend был перезапущен после изменения .env.

Фронтенд не видит бэкенд (ошибка CORS или "не удалось загрузить"). Убедись, что backend запущен на порту 8000, а в frontend/.env (создай, если нет) указано:

VITE_API_BASE=http://localhost:8000

Деплой (когда захочешь выложить в интернет для портфолио)

  • Backend: Render.com или Railway.app — оба имеют бесплатный tier, подключаешь GitHub-репозиторий, они сами ставят зависимости и запускают uvicorn
  • Frontend: Vercel.com или Netlify.com — тоже бесплатно, просто подключаешь репозиторий, они сами собирают npm run build
  • Не забудь после деплоя backend обновить VITE_API_BASE во фронтенде на реальный URL, а FRONTEND_ORIGIN в backend .env — на реальный URL фронта (для CORS)

About

Веб-сервис для поиска выгодных предложений на OLX с AI анализом цен. Парсит объявления, сравнивает со средней ценой по рынку, даёт AI вердикт (брать/подождать/пропустить) и формирует ежедневный рейтинг лучших сделок

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages