Auto-proxy emit sound URLs using radio proxy rules
This commit is contained in:
@@ -114,7 +114,7 @@ function isDropboxHost(hostname: string): boolean {
|
||||
return host.endsWith('dropbox.com') || host.endsWith('dropboxusercontent.com');
|
||||
}
|
||||
|
||||
function shouldProxyStreamUrl(streamUrl: string): boolean {
|
||||
export function shouldProxyStreamUrl(streamUrl: string): boolean {
|
||||
try {
|
||||
const parsed = new URL(streamUrl);
|
||||
if (
|
||||
@@ -131,7 +131,7 @@ function shouldProxyStreamUrl(streamUrl: string): boolean {
|
||||
return false;
|
||||
}
|
||||
|
||||
function getProxyUrlForStream(streamUrl: string): string {
|
||||
export function getProxyUrlForStream(streamUrl: string): string {
|
||||
const normalizedBase = APP_BASE_PATH.endsWith('/') ? APP_BASE_PATH : `${APP_BASE_PATH}/`;
|
||||
const proxy = new URL(`${normalizedBase}media_proxy.php`, window.location.origin);
|
||||
proxy.searchParams.set('url', streamUrl);
|
||||
|
||||
@@ -6,7 +6,14 @@ import {
|
||||
clampEffectLevel,
|
||||
type EffectId,
|
||||
} from './audio/effects';
|
||||
import { RadioStationRuntime, normalizeRadioChannel, normalizeRadioEffect, normalizeRadioEffectValue } from './audio/radioStationRuntime';
|
||||
import {
|
||||
RadioStationRuntime,
|
||||
getProxyUrlForStream,
|
||||
normalizeRadioChannel,
|
||||
normalizeRadioEffect,
|
||||
normalizeRadioEffectValue,
|
||||
shouldProxyStreamUrl,
|
||||
} from './audio/radioStationRuntime';
|
||||
import { ItemEmitRuntime } from './audio/itemEmitRuntime';
|
||||
import { normalizeDegrees } from './audio/spatial';
|
||||
import {
|
||||
@@ -466,7 +473,10 @@ function classifySystemMessageSound(message: string): keyof typeof SYSTEM_SOUND_
|
||||
function resolveIncomingSoundUrl(url: string): string {
|
||||
const raw = String(url || '').trim();
|
||||
if (!raw) return '';
|
||||
if (/^(https?:|data:|blob:)/i.test(raw)) return raw;
|
||||
if (/^https?:/i.test(raw)) {
|
||||
return shouldProxyStreamUrl(raw) ? getProxyUrlForStream(raw) : raw;
|
||||
}
|
||||
if (/^(data:|blob:)/i.test(raw)) return raw;
|
||||
if (raw.startsWith('/sounds/')) {
|
||||
return withBase(raw.slice(1));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user