Files
silly-rss/README.md
T
paraandClaude Sonnet 5 8205bfdffc Add PHP variant: no-cron, request-time feed generation for shared hosting
Same imio.smartweb JSON API as the Python script, but each feed regenerates
on demand (15 min file cache) instead of via cron, so it works on plain
PHP shared hosting with no server config access. Also adds facebook.php,
a caching proxy for the user's FetchRSS Atom feed so all three feeds live
under one domain and can be shared as stable URLs.

Tested with PHP 8.3 CLI: valid XML, real data (40 news, 12 events, proxied
Facebook feed).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-25 22:05:26 +02:00

3.4 KiB

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/ — 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 — 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 et silly_rss.py.

Option recommandee : PHP (hebergement perso)

  1. Copier tout le dossier php/ sur l'hebergement (FTP/SFTP), par ex. dans silly-rss/ a la racine du site.
  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://votre-site/silly-rss/actualites.php
    • https://votre-site/silly-rss/agenda.php
    • https://votre-site/silly-rss/facebook.php (proxy/cache du flux FetchRSS 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).

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

    sudo mkdir -p /var/www/silly-rss
    sudo chown $(whoami):www-data /var/www/silly-rss
    
  2. Cron — voir deploy/silly-rss.cron pour la ligne a ajouter via crontab -e (execution toutes les heures).

  3. nginx — voir deploy/nginx-silly-rss.conf, a copier dans /etc/nginx/conf.d/akbar.nohost.me.d/silly-rss.conf puis :

    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) :

    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 (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.