Проект представляет собой парсер сатирических новостей с сайта Панорама и Telegram-бот для автоматической рассылки новых публикаций пользователям.
Возможности:
- Парсинг новостей с сайта panorama.pub
- Сохранение новостей в PostgreSQL
- Автоматическая рассылка новых новостей через Telegram-бот
- Планировщик запуска парсера каждые 20 минут
- Асинхронная работа бота с даннымиПарсер написан с использованием Scrapy, SQLAlchemy, PostgreSQL и Python Telegram Bot
В проекте настроен CI pipeline с использованием GitHub Actions:
- Автоматическая проверка кода (black, isort, flake8)
- Запуск unit-тестов (`pytest`)
- Сборка Docker-образа
- Публикация образа в **Docker Hub** при пуше в соответствующие веткиПроект адаптирован для использования **PostgreSQL** и развёртывания в контейнерах **Docker**.В проекте реализованы unit-тесты с использованием pytest.
Запуск тестов локально:
pytest -v
env.exampleс дефолтными значениями расположен в корневой папке
TELEGRAM_TOKEN=1234567890:Telegram-Token # Токен Telegram бота
DATABASE_URL_SYNC = postgresql+psycopg2://postgres:postgres@db:5432/satire_pulp_db # Указываем адрес БД (Синхронная версия)
DATABASE_URL_ASYNC=postgresql+asyncpg://postgres:postgres@db:5432/satire_pulp_db # Указываем адрес БД (Асинхронная версия)
POSTGRES_DB = satire_pulp_db # Имя базы дданных
POSTGRES_USER = postgres # Имя юзера PostgreSQL
POSTGRES_PASSWORD = yourpassword # Пароль юзера PostgreSQL
POSTGRES_HOST=db # Имя сервиса PostgreSQL в docker-compose
POSTGRES_PORT=5432 # Порт PostgreSQL внутри контейнера- Склонируйте репозиторий
git clone git@github.com:dmsnback/satire_pulp_parser.git- Установите и активируйте виртуальное окружение
python3 -m venv venvДля Windows
source venv/Scripts/activateДля Mac/Linux
source venv/bin/activate- Установите зависимости из файла
requirements.txt
python3 -m pip install --upgrade pippip install -r requirements.txt- Запускаем Docker контейнеры (db, bot)
docker-compose up -d db bot - Создаём таблицы в БД
docker-compose exec bot python -m db.init_db - Перезапускаем Docker контейнеры
docker-compose up -d - После запуска запустите бота командой
/start
Команда
/show_newsпришлёт последние 10 новостей из базы, если они ещё не были отправлены, далее бот будет присылать только новые новости, которые появятся на сайте.