diff --git a/php/actualites.php b/php/actualites.php index cab6391..6cc8fd4 100644 --- a/php/actualites.php +++ b/php/actualites.php @@ -37,7 +37,7 @@ function build_news_feed(): string 'link' => SITE . '/actualites/' . slugify($title) . '?u=' . rawurlencode($uid), 'guid' => $uid, 'pubDate' => $item['effective'] ?? $item['created'] ?? null, - 'description' => full_body_html($item), + 'description' => full_body_html($item, $title), ]; } return build_rss( diff --git a/php/agenda.php b/php/agenda.php index adc792a..4b01d88 100644 --- a/php/agenda.php +++ b/php/agenda.php @@ -55,7 +55,7 @@ function build_events_feed(): string $uid = $item['UID'] ?? $id; $meta = format_event_meta($item); $description = ($meta !== '' ? '
' . htmlspecialchars($meta, ENT_QUOTES, 'UTF-8') . '
' : '') - . full_body_html($item); + . full_body_html($item, $title); // Un evenement recurrent partage le meme UID sur toutes ses // occurrences (memes UID, dates differentes) : on suffixe le guid // avec la date de debut pour rester unique par occurrence, comme diff --git a/php/common.php b/php/common.php index 6688553..f6b0793 100644 --- a/php/common.php +++ b/php/common.php @@ -135,17 +135,32 @@ function attachments_html(array $item): string } /** - * Corps HTML complet d'un item (texte riche + pieces jointes), avec - * repli sur le resume court si le texte complet est vide. + * Image principale de l'item (deja fournie par l'API, aucune requete + * supplementaire necessaire). "paysage_affiche" est une taille + * intermediaire raisonnable pour une image de flux RSS. */ -function full_body_html(array $item): string +function lead_image_html(array $item, string $title): string +{ + $url = $item['image_affiche_scale'] ?? $item['image_full_scale'] ?? null; + if (!$url) { + return ''; + } + return '' . htmlspecialchars($summary, ENT_QUOTES, 'UTF-8') . '
' : ''; } - return $body . attachments_html($item); + return lead_image_html($item, $title) . $body . attachments_html($item); } function rfc822(?string $isoDate): string diff --git a/silly_rss.py b/silly_rss.py index 0fbec1a..a4273d8 100644 --- a/silly_rss.py +++ b/silly_rss.py @@ -101,14 +101,24 @@ def attachments_html(item: dict) -> str: return "".join(parts) -def full_body_html(item: dict) -> str: - """Corps HTML complet (texte riche + pieces jointes), repli sur le resume court.""" +def lead_image_html(item: dict, title: str) -> str: + """Image principale de l'item, deja fournie par l'API (aucune requete + supplementaire necessaire). "paysage_affiche" est une taille + intermediaire raisonnable pour une image de flux RSS.""" + url = item.get("image_affiche_scale") or item.get("image_full_scale") + if not url: + return "" + return f'{html.escape(summary)}
" if summary else "" - return body + attachments_html(item) + return lead_image_html(item, title) + body + attachments_html(item) def parse_dt(value: str | None) -> datetime | None: @@ -133,7 +143,7 @@ def build_news_items() -> list[str]: title = item.get("title_fr") or item.get("title") or "(sans titre)" guid = item.get("UID") or item_id link = f"{SITE}/actualites/{slugify(title)}?u={guid}" - description = full_body_html(item) + description = full_body_html(item, title) pub_dt = parse_dt(item.get("effective") or item.get("created")) entries.append( "{html.escape(meta)}
" if meta else "") + full_body_html(item) + description = (f"{html.escape(meta)}
" if meta else "") + full_body_html(item, title) pub_dt = parse_dt(item.get("created") or item.get("start")) # Un evenement recurrent partage le meme UID sur toutes ses # occurrences : on suffixe le guid avec la date de debut pour