republisher/demo
Abel Luck 507074b80e
All checks were successful
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
Add media retention cleanup command
2026-05-27 13:04:47 +02:00
..
fixtures Add file URL RSS feed coverage 2026-03-29 14:10:20 +02:00
README.md Add media retention cleanup command 2026-05-27 13:04:47 +02:00
repub.toml Add media retention cleanup command 2026-05-27 13:04:47 +02:00

Demo

This directory shows the runtime-config setup with a dedicated config file.

Local Run

From the repo root:

uv run repub --config demo/repub.toml

Because out_dir in demo/repub.toml is relative, output is written under demo/out/.

Files

  • repub.toml: example runtime config with feed definitions, slugs, and Scrapy overrides
  • fixtures/local-feed.rss: simple local RSS fixture for file:// feed testing

Image Profiles

The demo config uses the default image profiles from repub/settings.py. REPUBLISHER_IMAGE controls full-size image variants; the first profile is the canonical image URL written into feeds. REPUBLISHER_IMAGE_THUMBNAILS controls named thumbnail variants for explicit item image media.

By default, mirrored image source bytes are kept under images/source/, full profile variants are written under images/full/, and thumbnail profile variants are written under images/thumbs/ inside each feed output directory. Edit the Scrapy settings in demo/repub.toml when a demo run needs to disable thumbnails or test a different profile set.

Media Cleanup

Published media can remain on disk after articles fall out of the current feed. Run cleanup in dry-run mode first:

uv run repub cleanup-media --config demo/repub.toml --dry-run

With --config, cleanup scans demo/out/feeds/ and honors any REPUBLISHER_*_DIR media directory overrides in the config. Remove --dry-run to delete old unreferenced media. The default retention window is 25 days; use --days N to override it.

Local File Feed

repub already accepts absolute file:// feed URIs. To point it at the demo fixture, generate an absolute URI like this from the repo root:

python3 -c 'from pathlib import Path; print(Path("demo/fixtures/local-feed.rss").resolve().as_uri())'

Then use that value in a config entry:

[[feeds]]
name = "Local Demo"
slug = "local-demo"
url = "file:///absolute/path/to/demo/fixtures/local-feed.rss"

Pygea Import

repub can also load additional [[feeds]] entries from a separate TOML file, such as pygea's generated manifest.toml:

feed_config_files = ["/absolute/path/to/pygea/feed/manifest.toml"]