Быстрый и стильный CLI клиент для чтения постов прямо из терминала
Отец CLI — это минималистичный терминальный клиент для социальной сети ИТД. Читай посты избранного пользователя прямо из твоего любимого терминала без груза тяжелого браузера.
- 🚀 Быстро и минималистично — без лишних слоев абстракции
- 🎨 Красивый вывод — цветное форматирование с Rich
- 📄 Пагинация — удобная навигация между постами
- 🔍 Поиск — ищи посты по ключевым словам
- 🛡️ Надежность — правильная обработка сетевых ошибок
- ⌨️ Простое управление — интуитивные команды в терминале
| Команда | Действие |
|---|---|
n |
Следующая страница |
p |
Предыдущая страница |
s |
Поиск по ключевому слову |
r |
Перезагрузить посты |
q |
Выход |
- Python 3.8+
- pip (обычно идет с Python)
- Доступ в интернет
# 1. Клонируем репозиторий
git clone https://github.com/7rotadedi-source/otets-cli.git
cd otets-cli
# 2. Создаем .env с конфигурацией
cp .env.example .env
# Отредактируй .env и укажи нужный username
# 3. Ставим зависимости и запускаем
pip install -r requirements.txt
python src/main.pyГотово! Клиент загрузится и ты сразу сможешь читать посты.
git clone https://github.com/7rotadedi-source/otets-cli.git
cd otets-cliСкопируй пример конфигурации и заполни данные:
cp .env.example .envОткрой .env в текстовом редакторе и заполни поля:
OTETS_BASE_URL=https://xn--d1ah4a.com
OTETS_USERNAME=имя_пользователяpip install -r requirements.txtИли если у тебя установлен Python 3:
pip3 install -r requirements.txtpython src/main.pyИли:
python3 src/main.py- requests — HTTP клиент для работы с API
- rich — красивый вывод в терминал
- python-dotenv — загрузка переменных окружения из .env
Все указаны в requirements.txt.
otets-cli/
├── .env.example # Пример конфигурации
├── .env # Реальная конфигурация (в .gitignore!)
├── .gitignore # Игнорируем мусор и секреты
├── LICENSE # MIT лицензия
├── README.md # Этот файл
├── requirements.txt # Зависимости проекта
└── src/ # Исходный код
├── main.py # Точка входа
├── api/ # API клиент
│ ├── __init__.py
│ └── client.py # Код для работы с API
├── ui/ # Интерфейс терминала
│ ├── __init__.py
│ └── display.py # Отображение постов
└── utils/ # Вспомогательные функции
├── __init__.py
├── errors.py # Пользовательские исключения
└── parsers.py # Парсеры текста
Клиент правильно обрабатывает различные ошибки:
- Timeout — если сервер не ответил за 10 секунд
- Connection Error — проблемы с интернетом
- HTTP ошибки — неверный статус от сервера
- Некорректные данные — если API вернул странные данные
Вместо уродливого стектрейса ты увидишь понятное сообщение об ошибке и сможешь повторить попытку.
python src/main.pyЗагрузит посты пользователя из конфига и покажет их по 5 постов на странице.
- Запусти приложение
- Нажми
s - Введи поисковый запрос
- Клиент найдет и отобразит релевантные посты
- Нажимай
nчтобы перейти на следующую страницу - Нажимай
pчтобы вернуться на предыдущую - Нажимай
rчтобы перезагрузить посты - Нажимай
qчтобы выйти
Клиент использует Rich для красивого вывода:
- Цветной текст — разные цвета для разных элементов
- Панели — каждый пост в отдельной панели с рамкой
- Таблицы — красиво отформатированный вывод
- Спиннеры — показываем статус загрузки
- Эмодзи — добавляем стиль к сообщениям
Хочешь добавить свою фичу? Структура проекта позволяет это:
- Новые команды — добавь в
ui/display.pyв метод_handle_command() - Новые фичи API — расширяй
api/client.py - Новые утилиты — добавляй функции в
utils/
| Переменная | Описание | Пример |
|---|---|---|
OTETS_BASE_URL |
URL базы ИТД | https://xn--d1ah4a.com |
OTETS_USERNAME |
Имя пользователя | fau1t |
Все перем��нные должны быть в файле .env (не commit'ься в git благодаря .gitignore).
MIT — используй как хочешь. Подробнее в файле LICENSE.
Фиксы ошибок и улучшения приветствуются! Но помни что это проект для конкурса с дедлайном.
- Не забудь настроить
.envперед запуском - Убедись что у тебя установлены все зависимости
- Используй Python 3.8 или выше
- Если что-то не работает — проверь интернет соединение
"Постоянное присутствие философии в твоем терминале"
Этот клиент создан с любовью и минимализмом. Каждая строка кода имеет смысл, каждая переменная названа осмысленно.
Сделано с ❤️ для конкурса на лучший CLI клиент