mirror of
https://github.com/AmanTahiliani/box-box.git
synced 2026-08-07 11:54:59 -04:00
Subscribe to TeamRadio on the F1 live feed, parse defensive capture snapshots and patches, and relay capped captures through live snapshots with the SessionInfo static path. Add the frontend CDN URL helper and ticker using one shared audio element.
23 lines
896 B
TypeScript
23 lines
896 B
TypeScript
import type { LiveRadioCapture, LiveSessionMeta } from '../types'
|
|
|
|
export const LIVE_TIMING_STATIC_BASE = 'https://livetiming.formula1.com/static/'
|
|
|
|
export function radioClipUrl(
|
|
session: Pick<LiveSessionMeta, 'Path'> | null | undefined,
|
|
capture: Pick<LiveRadioCapture, 'Path'> | null | undefined,
|
|
): string {
|
|
const sessionPath = session?.Path?.trim()
|
|
const capturePath = capture?.Path?.trim()
|
|
if (!sessionPath || !capturePath) return ''
|
|
if (/^https?:\/\//i.test(capturePath)) return capturePath
|
|
|
|
const base = LIVE_TIMING_STATIC_BASE.replace(/\/+$/, '')
|
|
const normalizedSession = sessionPath.replace(/^\/+|\/+$/g, '')
|
|
const normalizedCapture = capturePath.replace(/^\/+/g, '')
|
|
return `${base}/${normalizedSession}/${normalizedCapture}`
|
|
}
|
|
|
|
export function radioCaptureKey(capture: LiveRadioCapture): string {
|
|
return `${capture.Utc}-${capture.RacingNumber}-${capture.Path}`
|
|
}
|