From 7ff48fff29df2a7aa46f1e65c1ffb8dfdae64829 Mon Sep 17 00:00:00 2001 From: nk Date: Wed, 3 Jun 2026 17:26:51 +0300 Subject: [PATCH] =?UTF-8?q?fix(now-playing):=20EMG-=D1=84=D0=BE=D0=BB?= =?UTF-8?q?=D0=B1=D1=8D=D0=BA=20slug=20europaplus-{x}=20(Fresh=20=D0=B7?= =?UTF-8?q?=D0=B0=D1=81=D1=82=D1=80=D1=8F=D0=BB)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Slug из хоста потока не всегда = meta-slug: hls-01-fresh → meta это europaplus-fresh. Если по основному slug пусто — пробуем europaplus-{slug}. Fresh теперь обновляется. Co-Authored-By: Claude Opus 4.8 --- src/now-playing/emg-now-playing.service.ts | 27 ++++++++++++++++------ 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/now-playing/emg-now-playing.service.ts b/src/now-playing/emg-now-playing.service.ts index 740cf24..1a44fdc 100644 --- a/src/now-playing/emg-now-playing.service.ts +++ b/src/now-playing/emg-now-playing.service.ts @@ -48,14 +48,27 @@ export class EmgNowPlayingService { const slug = this.extractSlug(station.streamUrl); if (!slug) return; - const url = - `https://meta.hostingradio.ru/emg/${slug}/history` + - `?format=native&types=3&order=desc&date=${date}&from=${from}&to=${to}`; - const res = await fetch(url, { headers: this.headers }); - if (!res.ok) return; + // Slug из хоста потока не всегда = slug в meta (напр. hls-01-fresh → + // в meta это europaplus-fresh). Если по основному пусто — пробуем префикс. + const candidates = [slug]; + if (!slug.startsWith('europaplus') && slug !== 'dfm') { + candidates.push(`europaplus-${slug}`); + } - const items = (await res.json()) as EmgHistoryItem[]; - const cur = Array.isArray(items) ? items[0] : null; + let cur: EmgHistoryItem | null = null; + for (const c of candidates) { + const url = + `https://meta.hostingradio.ru/emg/${c}/history` + + `?format=native&types=3&order=desc&date=${date}&from=${from}&to=${to}`; + const res = await fetch(url, { headers: this.headers }); + if (!res.ok) continue; + const items = (await res.json()) as EmgHistoryItem[] | unknown; + const first = Array.isArray(items) ? (items[0] as EmgHistoryItem) : null; + if (first?.artist && first?.title) { + cur = first; + break; + } + } if (!cur?.artist || !cur?.title) return; await this.nowPlayingService.ingest({