diff --git a/assets/main.js b/assets/main.js index ca7d724..9ebfc04 100644 --- a/assets/main.js +++ b/assets/main.js @@ -90,39 +90,63 @@ function chargerAlbums() { } /* === FEED DEPECHES (depeches.html) === */ -function chargerDepeches() { - fetch('/api/depeches') - .then(r => r.json()) - .then(depeches => { - const feed = document.getElementById('feed'); - feed.innerHTML = ''; +async function chargerDepeches() { + const feed = document.getElementById('feed'); - if (depeches.length === 0) { - feed.innerHTML = '

aucune dépêche pour l\'instant.

'; - return; + async function parseTexte(texte) { + const urlRegex = /(https?:\/\/[^\s]+)/g; + const urls = texte.match(urlRegex) || []; + let html = texte.replace(urlRegex, '___URL___'); + + const embeds = await Promise.all(urls.map(async url => { + if (url.includes('soundcloud.com')) { + try { + const r = await fetch(`https://soundcloud.com/oembed?format=json&url=${encodeURIComponent(url)}&maxwidth=500`); + const data = await r.json(); + return data.html; + } catch { return `${url}`; } } + if (url.includes('youtube.com') || url.includes('youtu.be')) { + const id = url.match(/(?:v=|youtu\.be\/)([^&\s]+)/)?.[1]; + if (id) return ``; + } + return `${url}`; + })); - depeches.forEach(d => { - const el = document.createElement('div'); - el.className = 'depeche'; + embeds.forEach(e => { html = html.replace('___URL___', e); }); + return html; + } - const img = d.image - ? `` - : ''; + try { + const r = await fetch('/api/depeches'); + const depeches = await r.json(); + feed.innerHTML = ''; - el.innerHTML = ` -
ewen - ${d.date}
-
${d.texte}
- ${img} - `; + if (depeches.length === 0) { + feed.innerHTML = '

aucune dépêche pour l\'instant.

'; + return; + } - feed.appendChild(el); - }); - }) - .catch(() => { - document.getElementById('feed').innerHTML = - '

impossible de charger les dépêches.

'; - }); + for (const d of depeches) { + const el = document.createElement('div'); + el.className = 'depeche'; + + const texteHtml = await parseTexte(d.texte); + const img = d.image + ? `` + : ''; + + el.innerHTML = ` +
ewen - ${d.date}
+
${texteHtml}
+ ${img} + `; + + feed.appendChild(el); + } + } catch { + feed.innerHTML = '

impossible de charger les dépêches.

'; + } } /* === INIT === */