const EventEmitter = require('events'); class LocalRadioPlayer extends EventEmitter { constructor() { super(); this._stations = { 'Rock': 'http://localhost:8000/rock', 'Pop': 'http://localhost:8000/pop', 'Jazz': 'http://localhost:8000/jazz', 'Classical': 'http://localhost:8000/classical', 'Electronic': 'http://localhost:8000/electronic', 'Hip-Hop': 'http://localhost:8000/hiphop' }; this._audio = null; } getStations(options) { return Promise.resolve(Object.keys(this._stations).map(genre => ({ name: genre, id: genre }))); } play(stationData) { if (this._audio) { this._audio.pause(); } const streamUrl = this._stations[stationData.id]; if (!streamUrl) { this.emit('error', new Error(`Station ${stationData.id} not found.`)); return; } this._audio = new Audio(streamUrl); this._audio.play() .then(() => { this.emit('song-data', { title: `Streaming ${stationData.id}`, artist: 'Local Radio', albumArt: '' }); }) .catch(err => { this.emit('error', err); }); } stop() { if (this._audio) { this._audio.pause(); this._audio = null; } } resizeArtwork(options) { // Not applicable for local streaming without metadata return Promise.resolve(''); } } module.exports = LocalRadioPlayer;