Skip to content

jesusweb3/FL-Parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 FL Bot - Автоматический мониторинг проектов FL.ru

Language: 🇷🇺 Русский | 🇺🇸 English

Автоматизированный бот для мониторинга новых проектов на FL.ru с отправкой уведомлений в Telegram.

✨ Особенности

  • 🔍 Автоматический парсинг проектов с FL.ru по заданным категориям
  • 📱 Уведомления в Telegram о новых проектах
  • 🗄️ База данных SQLite для отслеживания уже обработанных проектов
  • 🌐 Поддержка SOCKS5 прокси с аутентификацией
  • ⚙️ Гибкая настройка фильтров и интервалов
  • 🌐 Playwright для надежной работы с динамическим контентом
  • 📊 Детальная статистика проектов (просмотры, отклики, цена)

🛠️ Технологии

  • Python 3.8+
  • Playwright - автоматизация браузера
  • BeautifulSoup4 - парсинг HTML
  • SQLite - локальная база данных
  • Telegram Bot API - отправка уведомлений
  • SOCKS5 Proxy - поддержка прокси

📦 Установка

1. Клонирование репозитория

git clone https://github.com/jesusweb3/FL-Parser
cd fl-bot

2. Автоматическая установка

python scripts/setup.py

Скрипт автоматически:

  • ✅ Создаст виртуальное окружение venv/
  • ✅ Обновит pip до последней версии
  • ✅ Установит все зависимости в изолированную среду
  • ✅ Загрузит браузер Chromium для Playwright
  • ✅ Создаст необходимые директории данных

3. Настройка конфигурации

Создайте файл .env на основе scripts/.env.example:

Заполните обязательные параметры:

# Telegram настройки
TELEGRAM_BOT_TOKEN=your_bot_token_here
TELEGRAM_CHANNEL=your_channel_id_here

# Категории для поиска (в кавычках через запятую)
CATEGORIES="Программирование,Крипто и блокчейн"

# Интервал проверки в секундах (по умолчанию 180 = 3 минуты)
CHECK_INTERVAL=180

# Режим браузера (true = скрытый, false = видимый)
HEADLESS=true

# Таймаут браузера в миллисекундах
BROWSER_TIMEOUT=30000

# Количество попыток при неудаче
RETRY_ATTEMPTS=3

# Использовать прокси (true/false)
USE_PROXY=false

# SOCKS5 прокси в формате host:port:username:password
PROXY_STRING=

4. Настройка прокси (опционально)

  • SOCKS5 с аутентификацией
  • Автоматическая проверка доступности
  • Если прокси включен но недоступен, бот пропустит текущую итерацию и попробует снова через установленный интервал

Формат: host:port:username:password

USE_PROXY=true
PROXY_STRING=160.116.216.108:8000:username:password

🚀 Запуск

Активация окружения и запуск

Windows:

venv\Scripts\activate
python main.py

Linux/Mac:

source venv/bin/activate
python main.py

Первый запуск

При первом запуске бот:

  1. Парсит все текущие проекты
  2. Добавляет их в базу данных
  3. НЕ отправляет уведомления (чтобы не спамить)
  4. Начинает мониторинг новых проектов

Доступные категории FL.ru

  • Программирование
  • Крипто и блокчейн
  • Веб-программирование
  • Мобильные приложения
  • Дизайн
  • Тексты
  • SEO
  • Маркетинг
  • И другие...

📂 Структура проекта

FL-Parser/
├── src/fl_bot/                  # Основной код приложения
│   ├── __init__.py              # Инициализация пакета
│   ├── config.py                # Конфигурация и валидация настроек
│   ├── core/                    # Ядро приложения
│   │   ├── __init__.py          # Инициализация модуля core
│   │   ├── browser.py           # Автоматизация браузера с Playwright
│   │   └── parser.py            # Парсинг HTML и извлечение данных
│   ├── database/                # Работа с базой данных
│   │   ├── __init__.py          # Инициализация модуля database
│   │   └── orders_db.py         # SQLite операции (создание, чтение, запись)
│   ├── telegram/                # Интеграция с Telegram
│   │   ├── __init__.py          # Инициализация модуля telegram
│   │   └── sender.py            # Отправка сообщений в Telegram
│   └── utils/                   # Вспомогательные утилиты
│       ├── __init__.py          # Инициализация модуля utils
│       └── logger.py            # Настройка логирования
├── data/                        # Директория данных (создается автоматически)
│   ├── database/                # База данных
│   │   └── orders.sqlite3       # SQLite файл с заказами
│   └── logs/                    # Логи приложения
│       └── fl_bot.log           # Основной лог файл
├── scripts/                     # Скрипты установки и настройки
│   ├── .env.example             # Пример файла конфигурации
│   └── setup.py                 # Автоматическая установка и настройка
├── .env                         # Файл конфигурации (создается пользователем)
├── .gitignore                   # Игнорируемые Git файлы
├── main.py                      # Точка входа приложения
├── requirements.txt             # Python зависимости
└── README.md                    # Документация проекта

📝 Описание ключевых модулей:

🔧 Основные модули:

  • main.py - Главный файл запуска, координирует работу всех компонентов
  • config.py - Загрузка и валидация настроек из .env файла

🌐 Модуль browser.py:

  • Запуск Chromium через Playwright
  • Поддержка SOCKS5 прокси с аутентификацией
  • Автоматизация выбора фильтров на FL.ru
  • Получение HTML страницы с проектами

📊 Модуль parser.py:

  • Парсинг HTML с BeautifulSoup4
  • Извлечение данных проектов (название, цена, описание)
  • Получение ID проектов и статистики

🗄️ Модуль orders_db.py:

  • Создание и управление SQLite базой
  • Проверка существования проектов
  • Сохранение новых заказов

📱 Модуль sender.py:

  • Форматирование сообщений для Telegram
  • Отправка уведомлений через Bot API
  • Обработка ошибок API

📋 Модуль logger.py:

  • Настройка логирования в файл и консоль
  • Ротация логов и форматирование
  • Разные уровни логирования

🔧 Логирование

Логи сохраняются в data/logs/fl_bot.log и выводятся в консоль:

2025-07-15 14:14:30,686 - __main__ - INFO - Инициализация базы данных...
2025-07-15 14:14:30,693 - src.fl_bot.database.orders_db - INFO - База данных инициализирована
2025-07-15 14:14:30,693 - __main__ - INFO - Первый запуск: парсим заказы и добавляем в БД (без отправки в Telegram)
2025-07-15 14:14:54,899 - src.fl_bot.core.parser - INFO - Первый запуск: найдено 30 проектов, успешно обработано 30 и готово к добавлению в БД
2025-07-15 14:14:54,908 - src.fl_bot.database.orders_db - INFO - Заказ 5442001 добавлен в БД
2025-07-15 14:14:54,912 - src.fl_bot.database.orders_db - INFO - Заказ 5441999 добавлен в БД
...
2025-07-15 14:14:55,038 - __main__ - INFO - Первый запуск завершён: 30 заказов добавлено в БД из 30 найденных
2025-07-15 14:14:55,038 - __main__ - INFO - Начинаем отслеживать новые заказы каждые 3 минут

🎯 Формат уведомлений

Каждое уведомление содержит:

  • Заголовок проекта
  • Цену или "Договорная"
  • Описание (до 200 символов)
  • Категорию из настроек
  • Статистику (просмотры, отклики)
  • Тип проекта
  • Прямую ссылку на проект
image 160 (1)

🔒 Безопасность

  • Токены и настройки хранятся в .env (добавлен в .gitignore)
  • База данных только локальная
  • Логи не содержат чувствительных данных
  • Прокси данные не логируются

📞 Контакты

По всем вопросам обращайтесь: @jesusweb3

📝 Лицензия

MIT License


Разработано c ❤️

About

Automated bot for monitoring new projects on FL.ru with Telegram notifications

Topics

Resources

Stars

Watchers

Forks

Languages