fix(now-playing): EMG-фолбэк slug europaplus-{x} (Fresh застрял)

Slug из хоста потока не всегда = meta-slug: hls-01-fresh → meta это europaplus-fresh.
Если по основному slug пусто — пробуем europaplus-{slug}. Fresh теперь обновляется.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
nk
2026-06-03 17:26:51 +03:00
parent 8f0ec8a5b8
commit 7ff48fff29

View File

@@ -48,14 +48,27 @@ export class EmgNowPlayingService {
const slug = this.extractSlug(station.streamUrl);
if (!slug) return;
// Slug из хоста потока не всегда = slug в meta (напр. hls-01-fresh →
// в meta это europaplus-fresh). Если по основному пусто — пробуем префикс.
const candidates = [slug];
if (!slug.startsWith('europaplus') && slug !== 'dfm') {
candidates.push(`europaplus-${slug}`);
}
let cur: EmgHistoryItem | null = null;
for (const c of candidates) {
const url =
`https://meta.hostingradio.ru/emg/${slug}/history` +
`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) return;
const items = (await res.json()) as EmgHistoryItem[];
const cur = Array.isArray(items) ? items[0] : null;
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({