From 6262a02fec5140ff4fd42da3c61311e557fdd94e Mon Sep 17 00:00:00 2001 From: sucupira Date: Tue, 21 Jul 2026 19:35:15 -0400 Subject: [PATCH] =?UTF-8?q?docs:=20README=20=C3=A0=20jour=20(stack,=20fonc?= =?UTF-8?q?tionnalit=C3=A9s=20mobile/PWA,=20exemple=20RSS=20en=20+page.ser?= =?UTF-8?q?ver.ts)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 111 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 65 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index 1d3e4f6..076690e 100644 --- a/README.md +++ b/README.md @@ -4,42 +4,31 @@ Lecteur audio web pour la radio **Radyobòkaz**, hébergée sur l'instance Funkw [mizik.o-k-i.net](https://mizik.o-k-i.net/library/radios/7) (~2000 titres). Construit sur une version modifiée de [svelte-podcast](https://github.com/OllieJT/svelte-podcast) -(librairie headless de lecteur audio, voir `src/lib`). +(librairie headless de lecteur audio, voir `src/lib`). Dépôt de travail : +[labola.o-k-i.net/cyber-mawonaj/oki-podcast-reader](https://labola.o-k-i.net/cyber-mawonaj/oki-podcast-reader). -## Utilitaires RSS (SSR) +## Stack -La librairie inclut des utilitaires pour consommer des flux RSS de podcasts, -compatibles SSR (pas de `DOMParser`, parsing via `fast-xml-parser`) : - -```ts -// src/routes/podcast/+page.ts -import { fetch_podcast_feed } from '$lib/rss'; -import type { PageLoad } from './$types'; - -export const load: PageLoad = async ({ fetch }) => ({ - // passer le `fetch` de SvelteKit : SSR, cache et hydration - feed: await fetch_podcast_feed('https://feed.syntax.fm/rss', fetch), -}); -``` - -- `fetch_podcast_feed(url, fetcher?)` — télécharge et parse un flux (RSS 2.0 + tags iTunes) -- `parse_podcast_feed(xml)` — parse une chaîne XML déjà récupérée -- Types exportés : `PodcastFeed`, `PodcastEpisode` (titre, guid, date ISO, durée en - secondes, enclosure, pochette, numéros d'épisode/saison, explicit…) - -Les durées `itunes:duration` sont acceptées aux formats `3723`, `62:03` et `1:02:03`. -Les épisodes sans enclosure audio sont ignorés. Voir la route `/podcast` pour un -exemple complet (flux chargé côté serveur, épisodes joués dans le lecteur). +- **SvelteKit 2 + Svelte 5** (mode compatibilité : syntaxe `on:click`/`$:`/`export let` conservée) + TypeScript +- **Tailwind CSS 3** — aucune autre dépendance UI +- **adapter-static** — pré-rendu statique dans `build/` +- Audio : `