Skip to content

Commit 286438f

Browse files
authored
Merge pull request #12 from dmsnback/feature/readme
Feature/readme
2 parents 8c55942 + c11662b commit 286438f

2 files changed

Lines changed: 173 additions & 8 deletions

File tree

README.md

Lines changed: 165 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,165 @@
1-
# satire_pulp_parser
2-
Парсер с сайта сатирических новостей [Панорама](https://panorama.pub/ "Перейти")
3-
4-
![Satire Pulp parser](https://github.com/dmsnback/satire_pulp_parser/actions/workflows/main.yml/badge.svg)
5-
![Python](https://img.shields.io/badge/python-3.11-blue)
6-
![Tests](https://img.shields.io/badge/tests-pytest-brightgreen)
7-
![Black](https://img.shields.io/badge/code%20style-black-000000)
8-
![License](https://img.shields.io/badge/license-MIT-green)
1+
<a name="Начало"></a>
2+
3+
## Satire Pulp Parser
4+
5+
![Satire Pulp parser](https://github.com/dmsnback/satire_pulp_parser/actions/workflows/main.yml/badge.svg) ![Python](https://img.shields.io/badge/python-3.11-blue) ![Tests](https://img.shields.io/badge/tests-pytest-brightgreen) ![Black](https://img.shields.io/badge/code%20style-black-000000) ![License](https://img.shields.io/badge/license-MIT-green)
6+
7+
8+
- [Описание](#Описание)
9+
- [Технологии](#Технологии)
10+
- [Тестирование](#Тестирование)
11+
- [Шаблон заполнения .env-файла](#Шаблон)
12+
- [Запуск проекта](#Запуск)
13+
- [Автор](#Автор)
14+
15+
<a name="Описание"></a>
16+
17+
### Описание
18+
19+
Проект представляет собой парсер сатирических новостей с сайта [Панорама](https://panorama.pub/ "Перейти") и Telegram-бот для автоматической рассылки новых публикаций пользователям.
20+
21+
**Возможности:**
22+
23+
```md
24+
- Парсинг новостей с сайта panorama.pub
25+
- Сохранение новостей в PostgreSQL
26+
- Автоматическая рассылка новых новостей через Telegram-бот
27+
- Планировщик запуска парсера каждые 20 минут
28+
- Асинхронная работа бота с данными
29+
```
30+
31+
Парсер написан с использованием **Scrapy**, **SQLAlchemy**, **PostgreSQL** и **Python Telegram Bot**
32+
33+
В проекте настроен **CI pipeline** с использованием **GitHub Actions**:
34+
35+
```md
36+
- Автоматическая проверка кода (black, isort, flake8)
37+
- Запуск unit-тестов (`pytest`)
38+
- Сборка Docker-образа
39+
- Публикация образа в **Docker Hub** при пуше в соответствующие ветки
40+
```
41+
42+
```md
43+
Проект адаптирован для использования **PostgreSQL** и развёртывания в контейнерах **Docker**.
44+
```
45+
46+
> [Вернуться в начало](#Начало)
47+
48+
<a name="Технологии"></a>
49+
50+
### Технологии
51+
52+
[![Python](https://img.shields.io/badge/Python-1000?style=for-the-badge&logo=python&logoColor=ffffff&labelColor=000000&color=000000)](https://www.python.org)
53+
[![Scrapy](https://img.shields.io/badge/Scrapy-1000?style=for-the-badge&logo=scrapy&logoColor=ffffff&labelColor=000000&color=000000)](https://docs.scrapy.org/en/latest/index.html)
54+
[![python_telegram_bot](https://img.shields.io/badge/python_telegram_bot-1000?style=for-the-badge&logo=telegram&logoColor=ffffff&labelColor=000000&color=000000)](https://docs.python-telegram-bot.org/en/stable/index.html)
55+
[![Postgres](https://img.shields.io/badge/Postgres-1000?style=for-the-badge&logo=postgresql&logoColor=ffffff&labelColor=000000&color=000000)](https://www.postgresql.org)
56+
[![SQLAlchemy](https://img.shields.io/badge/SQLAlchemy-1000?style=for-the-badge&logo=sqlalchemy&logoColor=ffffff&labelColor=000000&color=000000)](https://www.sqlalchemy.org)
57+
[![Docker](https://img.shields.io/badge/Docker-1000?style=for-the-badge&logo=docker&logoColor=ffffff&labelColor=000000&color=000000)](https://www.docker.com)
58+
[![Pytest](https://img.shields.io/badge/Pytest-1000?style=for-the-badge&logo=pytest&logoColor=ffffff&labelColor=000000&color=000000)](https://docs.pytest.org/en/stable/index.htmlc)
59+
[![GitHub Actions](https://img.shields.io/badge/github%20actions-%232671E5.svg?style=for-the-badge&logo=githubactions&logoColor=ffffff&labelColor=000000&color=000000)](https://github.com/features/actions)
60+
61+
> [Вернуться в начало](#Начало)
62+
63+
<a name="Тестирование"></a>
64+
65+
### Тестирование
66+
67+
В проекте реализованы **unit-тесты** с использованием `pytest`.
68+
69+
Запуск тестов локально:
70+
71+
```python
72+
pytest -v
73+
```
74+
75+
> [Вернуться в начало](#Начало)
76+
77+
<a name="Шаблон"></a>
78+
79+
### Шаблон заполнения .env-файла
80+
81+
> `env.example` с дефолтными значениями расположен в корневой папке
82+
83+
```python
84+
TELEGRAM_TOKEN=1234567890:Telegram-Token # Токен Telegram бота
85+
DATABASE_URL_SYNC = postgresql+psycopg2://postgres:postgres@db:5432/satire_pulp_db # Указываем адрес БД (Синхронная версия)
86+
DATABASE_URL_ASYNC=postgresql+asyncpg://postgres:postgres@db:5432/satire_pulp_db # Указываем адрес БД (Асинхронная версия)
87+
POSTGRES_DB = satire_pulp_db # Имя базы дданных
88+
POSTGRES_USER = postgres # Имя юзера PostgreSQL
89+
POSTGRES_PASSWORD = yourpassword # Пароль юзера PostgreSQL
90+
POSTGRES_HOST=db # Имя сервиса PostgreSQL в docker-compose
91+
POSTGRES_PORT=5432 # Порт PostgreSQL внутри контейнера
92+
```
93+
94+
> [Вернуться в начало](#Начало)
95+
96+
<a name="Запуск"></a>
97+
98+
### Запуск проекта
99+
100+
- Склонируйте репозиторий
101+
102+
```python
103+
git clone git@github.com:dmsnback/satire_pulp_parser.git
104+
```
105+
106+
- Установите и активируйте виртуальное окружение
107+
108+
```python
109+
python3 -m venv venv
110+
```
111+
112+
Для `Windows`
113+
114+
```python
115+
source venv/Scripts/activate
116+
```
117+
118+
Для `Mac/Linux`
119+
120+
```python
121+
source venv/bin/activate
122+
```
123+
124+
- Установите зависимости из файла
125+
`requirements.txt`
126+
127+
```python
128+
python3 -m pip install --upgrade pip
129+
```
130+
131+
```python
132+
pip install -r requirements.txt
133+
```
134+
135+
- Запускаем Docker контейнеры (db, bot)
136+
137+
```python
138+
docker-compose up -d db bot
139+
```
140+
141+
- Создаём таблицы в БД
142+
143+
```python
144+
docker-compose exec bot python -m db.init_db
145+
```
146+
147+
- Перезапускаем Docker контейнеры
148+
149+
```python
150+
docker-compose up -d
151+
```
152+
153+
- После запуска запустите бота командой ```/start```
154+
155+
> Команда ```/show_news``` пришлёт последние 10 новостей из базы, если они ещё не были отправлены, далее бот будет присылать только новые новости, которые появятся на сайте.
156+
157+
> [Вернуться в начало](#Начало)
158+
159+
<a name="Автор"></a>
160+
161+
### Автор
162+
163+
- [Титенков Дмитрий](https://github.com/dmsnback)
164+
165+
> [Вернуться в начало](#Начало)

env.example

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
TELEGRAM_TOKEN=1234567890:Telegram-Token
2+
DATABASE_URL_SYNC=postgresql+psycopg2://postgres:postgres@db:5432/satire_pulp_db
3+
DATABASE_URL_ASYNC=postgresql+asyncpg://postgres:postgres@db:5432/satire_pulp_db
4+
POSTGRES_DB=satire_pulp_db
5+
POSTGRES_USER=postgres
6+
POSTGRES_PASSWORD=postgres
7+
POSTGRES_HOST=db
8+
POSTGRES_PORT=5432

0 commit comments

Comments
 (0)