Add RSS feed generator for commune de Silly (actualites + agenda)

Scrapes the imio.smartweb JSON API used by www.silly.be (found via the
smartweb-news/smartweb-events web components in the raw HTML) instead of
needing a headless browser. Shells out to curl since Cloudflare silently
blocks Python's urllib/requests TLS fingerprint. Includes Yunohost cron
and nginx deployment snippets.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
para
2026-09-25 21:36:39 +02:00
co-authored by Claude Sonnet 5
commit ecf9baaa4d
5 changed files with 298 additions and 0 deletions
+55
View File
@@ -0,0 +1,55 @@
# Flux RSS - Commune de Silly
Genere deux flux RSS 2.0 (actualites + agenda) pour la commune de Silly
(Belgique), a partir de l'API JSON REST (Plone / `imio.smartweb`) utilisee
par www.silly.be — sans navigateur headless.
Voir [silly_rss.py](silly_rss.py) pour le detail technique (empreinte
Cloudflare, contrainte `b_size=20`, etc.).
## Utilisation manuelle
```bash
python3 silly_rss.py /chemin/de/sortie
```
Genere `actualites.xml` et `agenda.xml` dans le dossier indique (`.` par
defaut). Aucune dependance externe : Python 3.10+ (stdlib) et `curl`
(present par defaut sur Yunohost).
## Deploiement sur Yunohost
1. **Dossier de sortie**
```bash
sudo mkdir -p /var/www/silly-rss
sudo chown $(whoami):www-data /var/www/silly-rss
```
2. **Cron** — voir [deploy/silly-rss.cron](deploy/silly-rss.cron) pour la
ligne a ajouter via `crontab -e` (execution toutes les heures).
3. **nginx** — voir [deploy/nginx-silly-rss.conf](deploy/nginx-silly-rss.conf),
a copier dans `/etc/nginx/conf.d/<votre-domaine>.d/silly-rss.conf` puis :
```bash
sudo nginx -t && sudo systemctl reload nginx
```
4. **Premiere generation** (avant le premier passage du cron) :
```bash
python3 silly_rss.py /var/www/silly-rss
```
5. **FreshRSS** — ajouter comme sources :
- `https://<votre-domaine>/silly-rss/actualites.xml`
- `https://<votre-domaine>/silly-rss/agenda.xml`
## Facebook (page communedesilly)
Pas de solution fiable trouvee : le HTML de facebook.com est vide de
contenu exploitable sans authentification, et l'instance RSS-Bridge testee
(`FacebookBridge`) renvoie une erreur 400. Recommandation : un service
tiers specialise (RSS.app, Fetch RSS) plutot qu'un scraper maison, qui
sera cassé au premier changement de Facebook.