Files
silly-rss/README.md
T
2026-09-25 22:10:26 +02:00

88 lines
3.8 KiB
Markdown

# Flux RSS - Commune de Silly
Genere trois flux RSS/Atom pour la commune de Silly (Belgique) : actualites,
agenda et page Facebook. Deux implementations equivalentes sont fournies :
- **[php/](php/)** — a deployer sur un hebergement PHP mutualise classique.
**Recommande** : aucun cron ni conf serveur a ecrire, chaque flux se
regenere a la demande (avec cache 15 min) des qu'un lecteur RSS l'interroge.
- **[silly_rss.py](silly_rss.py)** — script Python autonome a lancer via cron,
pour un serveur ou vous controlez le cron/nginx (ex. Yunohost).
Les deux utilisent la meme source : l'API JSON REST (Plone / `imio.smartweb`)
que www.silly.be charge en JS via les balises `<smartweb-news>` /
`<smartweb-events>` — pas besoin de navigateur headless. Le detail technique
(empreinte Cloudflare, contrainte `b_size=20`) est commente dans
[php/common.php](php/common.php) et [silly_rss.py](silly_rss.py).
## Option recommandee : PHP (hebergement perso — sillycone-village.be)
1. Copier tout le dossier [php/](php/) sur l'hebergement (FTP/SFTP), dans
`silly-rss/` a la racine du site (Apache, confirme actif sur
`sillycone-village.be`).
2. Verifier que PHP a l'extension `curl` activee (quasi toujours le cas en
mutualise standard).
3. Le dossier `php/cache/` doit etre inscriptible par PHP (permissions par
defaut suffisent generalement sur du mutualise ; sinon `chmod 775`).
4. Les flux sont alors accessibles en :
- `https://sillycone-village.be/silly-rss/actualites.php`
- `https://sillycone-village.be/silly-rss/agenda.php`
- `https://sillycone-village.be/silly-rss/facebook.php` (proxy/cache du
flux [FetchRSS](https://fetchrss.com) de la page Facebook, pour avoir
une URL stable sur votre propre domaine)
5. Ajouter ces 3 URLs comme sources dans FreshRSS (Administration > Flux
RSS > Ajouter un flux), sur `https://akbar.nohost.me/rss`.
Note CSP : `sillycone-village.be` sert ses pages HTML avec un
`Content-Security-Policy` strict (`connect-src 'self' ...`). Cela ne
concerne que le JS execute dans le navigateur sur ce site — sans impact ici
puisque FreshRSS recupere les flux XML cote serveur.
Teste avec PHP 8.3 CLI : les 3 scripts produisent du XML valide avec de
vraies donnees (40 actualites, 12 evenements, flux Facebook proxifie).
## Option alternative : Python + cron (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/akbar.nohost.me.d/silly-rss.conf` puis :
```bash
sudo nginx -t && sudo systemctl reload nginx
```
NB : `/rss` est deja pris par FreshRSS sur ce domaine, d'ou le choix de
`/silly-rss/` comme chemin.
4. **Premiere generation** (avant le premier passage du cron) :
```bash
python3 silly_rss.py /var/www/silly-rss
```
5. **FreshRSS** — ajouter comme sources :
- `https://akbar.nohost.me/silly-rss/actualites.xml`
- `https://akbar.nohost.me/silly-rss/agenda.xml`
Cette option ne gere pas Facebook (pas de proxy) : ajouter directement
l'URL FetchRSS dans FreshRSS si vous utilisez cette variante.
## Facebook (page communedesilly)
Pas de solution fiable trouvee en scraping direct : le HTML de
facebook.com est vide de contenu exploitable sans authentification, et
l'instance RSS-Bridge testee (`FacebookBridge`) renvoie une erreur 400.
Solution retenue : [FetchRSS](https://fetchrss.com) (service tiers). La
variante PHP le reproxifie sous votre propre domaine (`facebook.php`) pour
avoir 3 URLs stables et partageables ; la variante Python s'appuie
directement sur l'URL FetchRSS.