@music-metadata/icy
Version:
Parses ICY metadata from a web stream
28 lines (27 loc) • 981 B
TypeScript
import type { ReadableStream as NodeWebReadableStream } from 'node:stream/web';
type IcyMetadata = {
StreamTitle?: string;
StreamUrl?: string;
icyName?: string;
icyGenre?: string;
icyUrl?: string;
bitrate?: string;
contentType?: string;
[key: string]: string | undefined;
};
export type StreamStats = {
totalBytesRead: number;
audioBytesRead: number;
icyBytesRead: number;
};
export type MetadataUpdate = {
metadata: IcyMetadata;
stats: StreamStats;
};
export type IcyMetadataHandler = (update: MetadataUpdate) => void;
/**
* Process an Icecast-compatible HTTP response, extracting and filtering ICY metadata.
*/
export declare function parseIcyResponse(response: Response, handler: IcyMetadataHandler): ReadableStream<Uint8Array>;
export declare function decodeIcyStreamChunks(icyStream: ReadableStream | NodeWebReadableStream, metadataInterval: number, onMetadata: IcyMetadataHandler): ReadableStream<Uint8Array>;
export {};