- Added "Push to Library" button to issues archive - Implemented direct API upload to Grimmory/Booklore - Added support for `.env` files via `python-dotenv` - Handled 409 Conflict for duplicate files gracefully - Resolved library name to numeric ID for direct uploads - Fixed SQLAlchemy and ebooklib warnings in tests - Added comprehensive tests for push functionality Made-with: Cursor
56 lines
2.0 KiB
Markdown
56 lines
2.0 KiB
Markdown
# PI Weekly Newspaper
|
|
|
|
Generates weekly ePub "newspapers" from the [Plymouth Independent](https://www.plymouthindependent.org/) RSS feed, optimized for the Xtreink X4 e-reader (800x480 screen).
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
python -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install -r requirements.txt
|
|
python run.py
|
|
```
|
|
|
|
Open http://localhost:5000 in your browser.
|
|
|
|
## Features
|
|
|
|
- **Periodic RSS fetching** with configurable interval
|
|
- **Automatic image processing** — downloads, resizes to e-reader constraints, converts to baseline JPEG
|
|
- **ePub generation** with articles as chapters, table of contents, and embedded images
|
|
- **AI-generated covers** via Pollinations.ai (free, no API key) with text fallback
|
|
- **Web UI** accessible from any device on your network
|
|
- **Scheduled or manual publishing**
|
|
|
|
## Usage
|
|
|
|
1. Click **Fetch Now** on the dashboard to pull articles
|
|
2. Go to **Publish**, select the target week, toggle articles on/off
|
|
3. Choose a cover method (AI or Text) and click **Generate Issue**
|
|
4. Download the `.epub` from the **Issues** archive
|
|
|
|
## Configuration
|
|
|
|
Settings are editable via the web UI at `/settings`, or in `config.py`:
|
|
|
|
- `FEED_URL` — RSS feed URL
|
|
- `FETCH_INTERVAL_HOURS` — how often to check for new articles
|
|
- `IMAGE_MAX_LANDSCAPE` / `IMAGE_MAX_PORTRAIT` — image bounding box dimensions
|
|
|
|
### Integration with Grimmory / Booklore
|
|
|
|
You can automatically push generated issues to a [Grimmory](https://github.com/grimmory-tools/grimmory) or Booklore instance. Create a `.env` file in the root directory (or set these as system environment variables):
|
|
|
|
```env
|
|
GRIMMORY_URL=http://your-grimmory-instance:6060
|
|
GRIMMORY_USERNAME=your_username
|
|
GRIMMORY_PASSWORD=your_password
|
|
GRIMMORY_LIBRARY_ID=optional_library_id
|
|
```
|
|
|
|
*Note: `BOOKLORE_URL`, `BOOKLORE_USERNAME`, `BOOKLORE_PASSWORD`, and `BOOKLORE_LIBRARY_ID` are also supported as deprecated fallbacks for older Booklore instances.*
|
|
|
|
## Access from Other Devices
|
|
|
|
The app binds to `0.0.0.0:5000`, so access it from any device on your network using your Mac's IP address (e.g., `http://192.168.1.x:5000`).
|