Skip to content

Парсер сатирических новостей с сайта Панорама и Telegram-бот для автоматической рассылки новых публикаций пользователям.

License

Notifications You must be signed in to change notification settings

dmsnback/satire_pulp_parser

Repository files navigation

Satire Pulp Parser

Satire Pulp parser Python Tests Black License

Описание

Проект представляет собой парсер сатирических новостей с сайта Панорама и 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**.

Вернуться в начало

Технологии

Python Scrapy python_telegram_bot Postgres SQLAlchemy Docker Pytest GitHub Actions

Вернуться в начало

Тестирование

В проекте реализованы unit-тесты с использованием pytest.

Запуск тестов локально:

pytest -v

Вернуться в начало

Шаблон заполнения .env-файла

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 pip
pip 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 новостей из базы, если они ещё не были отправлены, далее бот будет присылать только новые новости, которые появятся на сайте.

Вернуться в начало

Автор

Вернуться в начало

About

Парсер сатирических новостей с сайта Панорама и Telegram-бот для автоматической рассылки новых публикаций пользователям.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published