From 222561c0b7bd5a615872eb020e688d5ca5d7e136 Mon Sep 17 00:00:00 2001 From: kfj001 Date: Mon, 13 Jul 2026 22:27:08 -0700 Subject: [PATCH] Fixes media player's problem with apostrophes. --- src/app/media-player/media-player.component.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/app/media-player/media-player.component.ts b/src/app/media-player/media-player.component.ts index 69b3fc6..81614ca 100644 --- a/src/app/media-player/media-player.component.ts +++ b/src/app/media-player/media-player.component.ts @@ -3,6 +3,11 @@ import { CommonModule } from '@angular/common'; import { StationConfigService } from '../services/station-config.service'; +/** Decode malformed HTML entities from stream metadata (e.g. `&039;` → `'`). */ +function decodeMetadata(text: string): string { + return text.replace(/'/g, "'"); +} + /** Shape of the Airtime live-info JSON response (subset of fields we use). */ interface LiveInfoResponse { current: { @@ -103,14 +108,14 @@ export class MediaPlayerComponent implements OnDestroy { if (!resp.ok) throw new Error('Metadata fetch failed'); const data: LiveInfoResponse = await resp.json(); - const showName = data.currentShow?.[0]?.name ?? ''; + const showName = decodeMetadata(data.currentShow?.[0]?.name ?? ''); const current = data.current; - const trackTitle = current?.metadata?.track_title ?? ''; - const artistName = current?.metadata?.artist_name ?? ''; + const trackTitle = decodeMetadata(current?.metadata?.track_title ?? ''); + const artistName = decodeMetadata(current?.metadata?.artist_name ?? ''); let track = ''; if (artistName && trackTitle) track = `${artistName} - ${trackTitle}`; - else if (current?.name) track = current.name; + else if (current?.name) track = decodeMetadata(current.name); else if (trackTitle) track = trackTitle; this.showName.set(showName);