philyuchkoff/Cyclops
GitHub: philyuchkoff/Cyclops
Stars: 0 | Forks: 0
# 👁️ Cyclops - универсальный мониторинг интернета
**Cyclops** — это инструмент командной строки для мониторинга интернета. Он автоматически сканирует Telegram-каналы и RSS-ленты, находит новости по заданным ключевым словам и создает красивые HTML-отчеты.
## ✨ Возможности
- 🔍 **Поиск по ключевым словам** — находите любые темы: запреты, блокировки, новости ИИ, утечки данных и т.д.
- **Telegram интеграция** — читает публичные каналы (через Telethon)
- **RSS поддержка** — парсит любые RSS-ленты
- **Фильтр по дате** — только новости за последние N дней (по умолчанию 30)
- **Защита от дублей** — SQLite база для хешей, одинаковые новости не попадают в отчет
- **Красивые HTML-отчеты** — стильные карточки с сортировкой по дате
- **Гибкая настройка** — конфиги в JSON, переменные окружения, аргументы CLI
## Установка
### 1. Клонируйте репозиторий
git clone https://github.com/philyuchkoff/cyclops.git
cd cyclops
### 2. Установите зависимости
pip install feedparser beautifulsoup4 telethon python-dateutil
### 3. (опционально) Настройте Telegram
Для работы с Telegram нужно получить API данные:
1. Перейдите на https://my.telegram.org/apps
2. Авторизуйтесь под своим аккаунтом
3. Создайте приложение (App title: "Cyclops или как хотите")
4. Скопируйте `api_id` и `api_hash`
5. Настройте переменные окружения:
export TG_API_ID=api_id
export TG_API_HASH=api_hash
export TG_PHONE=+79123456789
Или создайте файл `.env`:
TG_API_ID=api_id
TG_API_HASH=api_hash
TG_PHONE=+79123456789
## Как пользоваться
### Способ 1: через конфигуратор (рекомендуется)
Создайте конфиг с ключевыми словами:
# Простейший конфиг
python config.py запрет блокировка ограничение --name my_monitor
# С Telegram каналами
python config.py запрет блокировка --channels rian_ru,breakingmash --name monitor
# С RSS лентами
python config.py "искусственный интеллект" --rss "TechCrunch=https://techcrunch.com/feed" --name ai_news
# За последние 7 дней
python config.py запрет --days 7 --name short_monitor
### Запустите
python cyclops.py my_monitor.json
### Способ 2: без конфигуратора
python cyclops.py --keywords "запрет,блокировка" --channels "rian_ru,breakingmash" --rss "РИА=https://ria.ru/export/rss2/index.xml"
## config.py - создание конфигов
python config.py [ключевые_слова] [опции]
### Обязательные аргументы
`ключевые_слова` - слова или фразы для поиска (можно в кавычках)
### Опции
`--name`, `-n` - имя конфиг-файла (по умолчанию: `my_monitor`)
`--targets`, `-t` - цели поиска (по умолчанию: соцсети,telegram,youtube,интернет)
`--channels`, `-ch` - Telegram каналы через запятую (без `@`)
`--rss`, `-r` - RSS ленты в формате: `имя=url,имя2=url2`
`--days`, `-d` - количество дней назад (по умолчанию: 30)
`--limit`, `-l` - лимит сообщений на канал (по умолчанию: 50)
`--no-telegram` - отключить Telegram
`--no-rss` - отключить RSS
`--list` - показать все существующие конфиги
### Примеры
# Базовый конфиг
python config.py запрет блокировка --name my_config
# С фразами в кавычках
python config.py "искусственный интеллект" "data breach" --name security
# Полный конфиг
python config.py запрет ограничение \
--channels rian_ru,breakingmash \
--rss "РИА=https://ria.ru/export/rss2/index.xml,Лента=https://lenta.ru/rss" \
--days 14 \
--name full_monitor
# Только RSS
python config.py запрет --rss "Reuters=http://feeds.reuters.com/reuters/technologyNews" --no-telegram
# Список конфигов
python config.py --list
## cyclops.py - запуск
python cyclops.py [конфиг.json] [опции]
### Опции
`--config`, `-c` - путь к JSON конфигурации
`--keywords`, `-k` - переопределить ключевые слова
`--channels`, `-ch` - переопределить Telegram каналы
`--rss`, `-r` - переопределить RSS ленты
`--days`, `-d` - переопределить период
`--sources`, `-s` - какие источники использовать (telegram,rss)
`--output`, `-o` - имя выходного HTML файла
`--no-html` - не создавать HTML отчет
`--no-json` - не создавать JSON экспорт
`--clear-cache` - очистить кеш дублей
### Примеры
# С конфигом
python cyclops.py my_config.json
# Только RSS из конфига
python cyclops.py my_config.json --sources "rss"
# Переопределить ключевые слова
python cyclops.py my_config.json --keywords "запрет,блокировка,цензура"
# За последние 7 дней с очисткой кеша
python cyclops.py my_config.json --days 7 --clear-cache
# Без конфига, всё через CLI
python cyclops.py --keywords "запрет" --channels "rian_ru" --rss "РИА=https://ria.ru/export/rss2/index.xml"
## Возможные проблемы и решения
### Telegram не работает
Появляется ошибка `⚠️ Telegram не настроен`
1. Получите API данные на https://my.telegram.org/apps
2. Настройте переменные окружения или добавьте в конфиг
3. При первом запуске введите код из Telegram
### Не находит новости
Появляется ошибка `⚠️ Новых новостей не найдено`
- уменьшите `--days` (например, до 7)
- добавьте больше ключевых слов
- проверьте источники (они существуют?)
- уберите слишком специфичные слова
### Новости дублируются
Cyclops автоматически фильтрует дубли через SQLite. Если нужно начать сбор заново:
python cyclops.py my_config.json --clear-cache
### Получили FloodWait от Telegram
Telegram ограничивает частоту запросов. Скрипт автоматически ждет указанное время. Уменьшите количество каналов или увеличьте задержку между запросами.
## Примеры использования
### Мониторинг новостей об AI
python config.py "искусственный интеллект" "нейросети" "chatgpt" \
--targets "закон,регуляция,ограничение" \
--rss "TechCrunch=https://techcrunch.com/feed,Wired=https://www.wired.com/feed/rss" \
--no-telegram \
--name ai_news
python cyclops.py ai_news.json
### Ежедневный мониторинг (cron)
# Создайте скрипт daily.sh
#!/bin/bash
cd /path/to/cyclops
python cyclops.py my_config.json --days 1
Добавьте в crontab:
0 9 * * * /path/to/cyclops/daily.sh
## Используется
- [Telethon](https://github.com/LonamiWebs/Telethon) для работы с Telegram API
- [feedparser](https://github.com/kurtmckee/feedparser) для парсинга RSS
- [BeautifulSoup4](https://www.crummy.com/software/BeautifulSoup/) для очистки HTML