ZheZhemon

Автоматизований парсер eBay з push-сповіщеннями


🧩 Завдання

Клієнт мав потребу у сервісі для постійного моніторингу оголошень на eBay за заздалегідь заданими параметрами (категорія, ключові слова, модель, бренд, діапазон цін, продавець тощо). Основні цілі:

  • Автоматично виявляти нові або оновлені оголошення.

  • Фільтрувати товари за рейтингом продавця (більше 96% і понад 300 відгуків).

  • Відправляти Telegram-сповіщення з кнопками для швидких дій (приховати/забанити).

  • Забезпечити реальну багатопотоковість для підтримки великої кількості запитів без перевищення лімітів eBay API.


🛠 Рішення

Було розроблено асинхронний Python-сервіс, який виконує:

🔍 Пошук:

  • Використання eBay Browse API для здійснення пошуку з урахуванням aspect_filter (наприклад, Brand, Model, Condition).

  • Динамічна побудова запитів із перевіркою валідності category_id та додаткових фільтрів.

🧠 Обробка результатів:

  • Парсинг кожного результату: ціна, доставка, продавець, зображення.

  • Автоматичне визначення “топових” продавців.

  • Облік зміни ціни та видалення неактуальних товарів із бази.

📦 Зберігання:

  • PostgreSQL база для зберігання параметрів пошуку та знайдених товарів.

  • Уникнення дублікатів за URL-ами.

  • Лічильник повторень для одного й того ж лінку (scraped_links).

🤖 Telegram інтеграція:

  • Повідомлення надсилаються в канал за допомогою Telegram Bot API.

  • Вбудовані кнопки: "🚫 Ban", "🙈 Hide" із посиланням на бекенд-ендпоїнти.

🧠 Перерозподіл навантаження:

  • Сервіс розділяє пошуки між ключами eBay API, контролюючи кількість запитів на кожен.

  • Використано паралельне асинхронне трекінг-запускання задач для кожного пошуку.

🔄 Ревалідація даних:

  • Система перевіряє зміну SearchParameters і в разі зміни перезапускає весь процес для оновлення індексації.


📈 Результат

  • Моніторинг десятків параметрів в реальному часі без перевищення API-лімітів.

  • 🔔 Своєчасні push-сповіщення про нові або здешевлені товари.

  • 📊 Автоматичне оновлення цін та очищення бази від неактуальних позицій.

  • 🛡 Можливість вручну банити або ховати товар прямо з Telegram.


🧪 Технології

  • Python 3.11

  • PostgreSQL

  • asyncio

  • psycopg2

  • Telegram Bot API

  • eBay Browse API

  • dotenv, requests

  • Fly.io