forked from genewildish/Mainline
Major changes: - Pipeline architecture with capability-based dependency resolution - Effects plugin system with performance monitoring - Display abstraction with multiple backends (terminal, null, websocket) - Camera system for viewport scrolling - Sensor framework for real-time input - Command-and-control system via ntfy - WebSocket display backend for browser clients - Comprehensive test suite and documentation Issue #48: ADR for preset scripting language included This commit consolidates 110 individual commits into a single feature integration that can be reviewed and tested before further refinement.
88 lines
1.9 KiB
Markdown
88 lines
1.9 KiB
Markdown
---
|
|
name: mainline-sources
|
|
description: Adding new RSS feeds and data sources to Mainline
|
|
compatibility: opencode
|
|
metadata:
|
|
audience: developers
|
|
source_type: codebase
|
|
---
|
|
|
|
## What This Skill Covers
|
|
|
|
This skill covers how to add new data sources (RSS feeds, poetry) to Mainline.
|
|
|
|
## Key Concepts
|
|
|
|
### Feeds Dictionary (engine/sources.py)
|
|
|
|
All feeds are defined in a simple dictionary:
|
|
|
|
```python
|
|
FEEDS = {
|
|
"Feed Name": "https://example.com/feed.xml",
|
|
# Category comments help organize:
|
|
# Science & Technology
|
|
# Economics & Business
|
|
# World & Politics
|
|
# Culture & Ideas
|
|
}
|
|
```
|
|
|
|
### Poetry Sources
|
|
|
|
Project Gutenberg URLs for public domain literature:
|
|
|
|
```python
|
|
POETRY_SOURCES = {
|
|
"Author Name": "https://www.gutenberg.org/cache/epub/1234/pg1234.txt",
|
|
}
|
|
```
|
|
|
|
### Language & Script Mapping
|
|
|
|
The sources.py also contains language/script detection mappings used for auto-translation and font selection.
|
|
|
|
## Adding a New RSS Feed
|
|
|
|
1. Edit `engine/sources.py`
|
|
2. Add entry to `FEEDS` dict under appropriate category:
|
|
```python
|
|
"My Feed": "https://example.com/feed.xml",
|
|
```
|
|
3. The feed will be automatically discovered on next run
|
|
|
|
### Feed Requirements
|
|
|
|
- Must be valid RSS or Atom XML
|
|
- Should have `<title>` elements for items
|
|
- Must be HTTP/HTTPS accessible
|
|
|
|
## Adding Poetry Sources
|
|
|
|
1. Edit `engine/sources.py`
|
|
2. Add to `POETRY_SOURCES` dict:
|
|
```python
|
|
"Author": "https://www.gutenberg.org/cache/epub/XXXX/pgXXXX.txt",
|
|
```
|
|
|
|
### Poetry Requirements
|
|
|
|
- Plain text (UTF-8)
|
|
- Project Gutenberg format preferred
|
|
- No DRM-protected sources
|
|
|
|
## Data Flow
|
|
|
|
Feeds are fetched via `engine/fetch.py`:
|
|
- `fetch_feed(url)` - Fetches and parses RSS/Atom
|
|
- Results cached for fast restarts
|
|
- Filtered via `engine/filter.py` for content cleaning
|
|
|
|
## Categories
|
|
|
|
Organize new feeds by category using comments:
|
|
- Science & Technology
|
|
- Economics & Business
|
|
- World & Politics
|
|
- Culture & Ideas
|