UNPKG

termice

Version:

Simple terminal icecast player

49 lines (48 loc) 1.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.search_shoutcast = void 0; const util_1 = require("./util"); function search_shoutcast(search) { return new Promise((resolve) => { const options = { method: 'POST', url: 'https://directory.shoutcast.com/Search/UpdateSearch', form: { query: search.split(' ').join('+') } }; require('request')(options, (err, _, body) => { if (err) { resolve([(0, util_1.error_entry)(err, 'Shoutcast')]); } else { try { const json = JSON.parse(body); resolve(parse_shoutcast(json)); } catch (err) { resolve([(0, util_1.error_entry)(err, 'Shoutcast')]); } } }); }); } exports.search_shoutcast = search_shoutcast; function parse_shoutcast(json) { return Object.keys(json).map(key => ({ name: json[key].Name || 'Null', homepage: '', listeners: json[key].Listeners !== undefined ? json[key].Listeners.toString() : 'Null', description: '', playing: json[key].CurrentTrack || '', url: `http://yp.shoutcast.com/sbin/tunein-station.m3u?id=${json[key].ID}`, src: 'Shoutcast', bitrate: json[key].Bitrate ? json[key].Bitrate.toString() : '', is_playlist: true, entry: json[key] })); }