Metadata-Version: 2.4
Name: rss-flow-cli
Version: 0.1.0
Summary: Lightweight CLI & TUI RSS reader for terminal lovers
Project-URL: Homepage, https://github.com/rupamghosh/rss-flow-cli
Project-URL: Repository, https://github.com/rupamghosh/rss-flow-cli
Project-URL: Issues, https://github.com/rupamghosh/rss-flow-cli/issues
Author-email: Rupam Ghosh <hulo@crine.in>
License-Expression: AGPL-3.0-only
License-File: LICENSE
Keywords: atom,cli,news,opml,reader,rss,terminal,textual,tui
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Communications
Classifier: Topic :: Utilities
Requires-Python: >=3.10
Requires-Dist: beautifulsoup4>=4.12.0
Requires-Dist: feedparser>=6.0.10
Requires-Dist: html2text>=2024.2.26
Requires-Dist: httpx>=0.25.0
Requires-Dist: opml>=0.5
Requires-Dist: pydantic>=2.0.0
Requires-Dist: readability-lxml>=0.8.1
Requires-Dist: rich>=13.0.0
Requires-Dist: sqlmodel>=0.0.16
Requires-Dist: textual>=0.50.0
Requires-Dist: typer>=0.9.0
Provides-Extra: dev
Requires-Dist: hatch>=1.9.0; extra == 'dev'
Requires-Dist: mypy>=1.8.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: ruff>=0.2.0; extra == 'dev'
Description-Content-Type: text/markdown

# `rss-flow-cli`

> Lightweight CLI & TUI RSS reader for terminal lovers.

`rss-flow-cli` is a modern, fast, and feature-complete RSS/Atom/JSONFeed reader designed specifically for terminal enthusiasts. It provides a full interactive TUI built with **Textual**, a command-line engine built with **Typer**, and instant full-text search powered by **SQLite FTS5**.

![License](https://img.shields.io/badge/license-AGPL--3.0-blue.svg)
![Python](https://img.shields.io/badge/python-3.10%2B-blue.svg)

---

## Key Features

- **Split-Pane & Reader TUI**: Side-by-side feed navigation, unread badges, full article renderer, and clean dark/light themes.
- **SQLite + FTS5 Full-Text Search**: Fast local database indexing across all feed titles, article summaries, and full extracted text.
- **Offline Readability Mode**: Extract complete web article content from truncated RSS snippets with a single keypress or automatic background rule.
- **OPML 2.0 Import & Export**: Effortlessly import or export feed collections, preserved categories, and folder hierarchies.
- **Auto-Filtering & Tagging Rules**: Define custom regex rules to automatically star, tag, or mark articles read.
- **External Server Synchronization**: Compatible with Miniflux / Fever / Google Reader API standards.
- **Modern CLI Utility**: Perform headful or headless feed syncing, searching, adding feeds, and OPML exports right from your shell.

---

## Installation

### Via `pip`
```bash
pip install rss-flow-cli
```

### Via `uv`
```bash
uv tool install rss-flow-cli
```

---

## Quick Start

### Launch the Interactive TUI
```bash
rss-flow tui
# or simply
rss-flow
```

### CLI Commands

```bash
# Add a new feed
rss-flow add https://news.ycombinator.com/rss --category Tech

# List subscribed feeds
rss-flow list

# Sync all feeds
rss-flow sync

# Search articles using SQLite FTS5
rss-flow search "python release"

# Import OPML subscriptions
rss-flow import subscriptions.opml

# Export OPML subscriptions
rss-flow export backup.opml

# Mark all articles in a feed as read
rss-flow mark-read --feed 1
```

---

## TUI Controls & Shortcuts

| Shortcut | Description |
| :--- | :--- |
| `q` | Quit application |
| `r` | Refresh / Sync all feeds |
| `a` | Add new feed dialog |
| `s` | Toggle starred status |
| `m` | Toggle read / unread status |
| `e` | Extract full web article readability |
| `o` | Open article link in web browser |
| `/` | Focus search bar |
| `t` | Cycle UI themes (Dark / Light / Catppuccin / Nord / Dracula) |
| `?` | Toggle keybindings help dialog |

---

## Architecture & Development

Built with modern Python standards:
- **TUI Framework**: [Textual](https://textual.textualize.io/)
- **CLI Engine**: [Typer](https://typer.tiangolo.com/) & [Rich](https://rich.readthedocs.io/)
- **Database / ORM**: [SQLModel](https://sqlmodel.tiangolo.com/) & SQLite FTS5
- **Feed Parser**: `httpx` + `feedparser`
- **Build System**: Hatchling (PEP 621)

---

## License

Copyright (C) 2026 Rupam Ghosh `<hulo@crine.in>`.

Licensed under the **GNU Affero General Public License v3.0 (AGPL-3.0)**.
