fix(now-playing): отсекать JSON-статус в ICY StreamTitle (101.ru)
Потоки 101.ru (Comedy Club, StandUp, Женский StandUp и др.) шлют в StreamTitle
JSON {"status":1,...} вместо трека — он попадал в now_playing как название.
ICY-парсер и ingest теперь отсекают значения, начинающиеся с { или [.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -141,9 +141,16 @@ export class IcyNowPlayingService {
|
|||||||
resolve(null);
|
resolve(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const parts = match[1].split(' - ', 2);
|
const raw = match[1].trim();
|
||||||
|
// Некоторые потоки (101.ru и др.) шлют в StreamTitle JSON-статус,
|
||||||
|
// а не название трека — это не трек, отсекаем.
|
||||||
|
if (raw.startsWith('{') || raw.startsWith('[')) {
|
||||||
|
resolve(null);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const parts = raw.split(' - ', 2);
|
||||||
if (parts.length < 2) {
|
if (parts.length < 2) {
|
||||||
resolve({ artist: match[1], song: match[1] });
|
resolve({ artist: raw, song: raw });
|
||||||
} else {
|
} else {
|
||||||
resolve({
|
resolve({
|
||||||
artist: parts[0].trim(),
|
artist: parts[0].trim(),
|
||||||
|
|||||||
@@ -134,6 +134,15 @@ export class NowPlayingService {
|
|||||||
coverUrl?: string | null;
|
coverUrl?: string | null;
|
||||||
}): Promise<void> {
|
}): Promise<void> {
|
||||||
const { stationDbId, stationNumericId, artist, song } = params;
|
const { stationDbId, stationNumericId, artist, song } = params;
|
||||||
|
|
||||||
|
// Отсекаем мусор: пустое или JSON-статус в полях (некоторые потоки шлют
|
||||||
|
// в метаданных {"status":...} вместо трека).
|
||||||
|
const a = (artist ?? '').trim();
|
||||||
|
const s = (song ?? '').trim();
|
||||||
|
if (!a || !s || a.startsWith('{') || a.startsWith('[') || s.startsWith('{')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const coverUrl = await this.resolveCover(artist, song, params.coverUrl);
|
const coverUrl = await this.resolveCover(artist, song, params.coverUrl);
|
||||||
|
|
||||||
const prev = await this.prisma.nowPlaying.findUnique({
|
const prev = await this.prisma.nowPlaying.findUnique({
|
||||||
|
|||||||
Reference in New Issue
Block a user