igorzakhar / async-news-filter

Web-сервис для анализа статей с новостных сайтов.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Фильтр желтушных новостей

Данная программа представляет собой web-сервис для анализа статей с новостных сайтов. Web-сервис может выступать в роли backend'а для плагина в браузере. Задача плагина к браузеру — просканировать страницу новостного сайта и найти все ссылки на статьи и отправить нашему сервису. Далее сервис получает список ссылок на статьи, парсит содержимое статей, анализирует их и для каждой статьи вычисляет рейтинг "желтушности". Под "желтушной" статьей понимается текст в котором содержатся много экспрессивных слов, ярко-негативных или восторженно-позитивных фраз. После вычисления рейтинга информация передается обратно в плагин и тот отображает рейтинг прямо на странице новостного сайта.

Пока поддерживается только один новостной сайт - ИНОСМИ.РУ. Для него разработан специальный адаптер, умеющий выделять текст статьи на фоне остальной HTML разметки. Для других новостных сайтов потребуются новые адаптеры, все они будут находиться в каталоге adapters. Туда же помещен код для сайта ИНОСМИ.PY: adapters/inosmi_ru.py.

В перспективе можно создать универсальный адаптер, подходящий для всех сайтов, но его разработка будет сложной и потребует дополнительных времени и сил.

Как установить

Вам понадобится Python версии 3.7 или старше. Для установки пакетов рекомендуется создать виртуальное окружение.

Первым шагом установите пакеты:

pip install -r requirements.txt

Как запустить

Запуск сервера:

python main.py

Как использовать

Для получения рейтинга статей необходимо отправить GET запрос к серверу. Список статей указываем в параметре запроса "urls" через запятую.

Пример GET запроса со списком статей с ресурса inosmi.ru:

http://127.0.0.1:8080/?urls=https://inosmi.ru/social/20191004/245951541.html, https://inosmi.ru/social/20191008/245982282.html, https://inosmi.ru/science/20191006/245965114.html

Нет уверенности, что сервер справится с ситуацией когда в запросе будет передан слишком длинный список url-адресов. Для этого введено ограниение - не более 10 статей для анализа. На запрос со слишком большим количеством статей для анализа сервер ответит статусом 400 Bad Request. В ответе будет JSON с описанием ошибки:

{"error": "too many urls in request, should be 10 or less"}

Как запустить тесты

Для тестирования используется pytest, тестами покрыты фрагменты кода сложные в отладке: text_tools.py и адаптеры. Команды для запуска тестов:

python -m pytest

About

Web-сервис для анализа статей с новостных сайтов.


Languages

Language:Python 100.0%