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>
56 lines
1.7 KiB
Markdown
56 lines
1.7 KiB
Markdown
# 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.
|